mmhglobal-dynamicform 2.34.0 → 2.36.0
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 +29 -0
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +2 -2
- package/esm2020/lib/components/fieldbase.component.mjs +4 -1
- package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +1 -1
- package/esm2020/lib/kcard/kcard.component.mjs +1 -1
- package/esm2020/lib/services/main.service.mjs +2 -2
- package/esm2020/lib/services/zcomponent.debug.service.mjs +61 -53
- package/esm2020/lib/sfdatetimepicker/sfdatetimepicker.component.mjs +5 -3
- package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +1 -1
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +1 -1
- package/esm2020/lib/uicontent/uicontent.component.mjs +5 -3
- package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +20 -3
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +1 -1
- package/esm2020/lib/zcard/zcard.component.mjs +2 -2
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +1 -1
- package/esm2020/lib/zform/zform.component.mjs +4 -3
- package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +1 -1
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +139 -139
- package/esm2020/lib/zgrid/zgrid.component.mjs +57 -33
- package/esm2020/lib/zgrid/zgrid.service.mjs +62 -58
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +2 -2
- package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +1 -1
- package/esm2020/lib/zmodal/zmodal.component.mjs +1 -1
- package/esm2020/lib/zreport/zreport.component.mjs +11 -14
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +30 -23
- package/esm2020/lib/ztab/ztab.component.mjs +2 -2
- package/esm2020/lib/ztree/ztree.component.mjs +1 -1
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +1 -1
- package/esm2020/lib/zudf/zudf.component.mjs +45 -10
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +1 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +466 -377
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +445 -347
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/components/fieldbase.component.d.ts +1 -0
- package/lib/services/zcomponent.debug.service.d.ts +1 -0
- package/lib/sfdatetimepicker/sfdatetimepicker.component.d.ts +1 -0
- package/lib/uicontent/uicontent.component.d.ts +2 -0
- package/lib/virtual-scroll/virtual-scroll.component.d.ts +1 -0
- package/lib/zgrid/zgrid.binding.directive.d.ts +5 -6
- package/lib/zgrid/zgrid.component.d.ts +5 -3
- package/lib/zgrid/zgrid.service.d.ts +10 -16
- package/lib/zreport/zreport.component.d.ts +0 -1
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +4 -1
- package/lib/zudf/zudf.component.d.ts +5 -2
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@ export class SfdatetimepickerComponent extends InputFieldBase {
|
|
|
14
14
|
super(componentService);
|
|
15
15
|
this.minDate = null;
|
|
16
16
|
this.maxDate = null;
|
|
17
|
+
this.disableStrictMode = false;
|
|
17
18
|
this.setDateRange = (MinDate, MaxDate) => {
|
|
18
19
|
if (!isNaN(Date.parse(MinDate))) {
|
|
19
20
|
this.minDate = new Date(MinDate);
|
|
@@ -26,6 +27,7 @@ export class SfdatetimepickerComponent extends InputFieldBase {
|
|
|
26
27
|
ngOnInit() {
|
|
27
28
|
super.setupInnerField();
|
|
28
29
|
this.interval = this.data.StepValue ? Number(this.data.StepValue) : 30;
|
|
30
|
+
this.disableStrictMode = !this.data.DisableStrictMode;
|
|
29
31
|
this.setMinAndMaxDateRange();
|
|
30
32
|
}
|
|
31
33
|
ngAfterViewInit() {
|
|
@@ -40,12 +42,12 @@ export class SfdatetimepickerComponent extends InputFieldBase {
|
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
SfdatetimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SfdatetimepickerComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
SfdatetimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SfdatetimepickerComponent, selector: "app-sfdatetimepicker", viewQueries: [{ propertyName: "sfdatetimepicker", first: true, predicate: ["sfdatetimepicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\">\r\n <ejs-datetimepicker #sfdatetimepicker\r\n [value]=\"form.get(data.Value).value | dateParser : data\" \r\n (change)=\"onChange($event)\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [step]=\"interval\"\r\n [format]=\"data | dateFormatKendo\"\r\n [required]=\"data.IsRequired\"\r\n [placeholder]=\"data.PlaceHolder\" \r\n [showClearButton]=\"data.ClearButton\" \r\n cssClass=\"e-custom\" \r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n </ejs-datetimepicker>\r\n </div>\r\n</div> ", styles: [".e-custom.e-input-group.e-control-wrapper input.e-input,.e-custom.e-input-focus input.e-input{font-size:var(--content-font-size);padding-left:8px}.e-custom.e-input-group.e-control-wrapper{border-radius:5px!important;border:.1px solid rgba(0,0,0,.3)!important}.e-custom.e-input-group.e-control-wrapper:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)!important}.e-custom.e-input-group.e-control-wrapper input.e-input:focus{padding-left:8px}.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):before,.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):after{background:transparent!important}.e-custom.e-input-group.e-error,.e-custom.e-input-group.e-control-wrapper.e-error,.e-custom.e-input-group.e-error:not(.e-float-icon-left),.e-custom.e-input-group.e-control-wrapper.e-error:not(.e-float-icon-left){border-color:#f31700!important}.e-custom.e-input-group.e-error.e-control-wrapper:focus-within{box-shadow:0 0 3px #f31700!important}\n"], components: [{ type: i2.DateTimePickerComponent, selector: "ejs-datetimepicker", inputs: ["allowEdit", "calendarMode", "cssClass", "dayHeaderFormat", "depth", "enableMask", "enablePersistence", "enableRtl", "enabled", "firstDayOfWeek", "floatLabelType", "format", "htmlAttributes", "isMultiSelection", "keyConfigs", "locale", "maskPlaceholder", "max", "min", "openOnFocus", "placeholder", "readonly", "scrollTo", "serverTimezoneOffset", "showClearButton", "showTodayButton", "start", "step", "strictMode", "timeFormat", "value", "values", "weekNumber", "weekRule", "width", "zIndex"], outputs: ["blur", "change", "cleared", "close", "created", "destroyed", "focus", "navigated", "open", "renderDayCell", "valueChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "dateParser": i4.DateParserFilter, "dateFormatKendo": i5.DateKendoFormatParser }, encapsulation: i0.ViewEncapsulation.None });
|
|
45
|
+
SfdatetimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SfdatetimepickerComponent, selector: "app-sfdatetimepicker", viewQueries: [{ propertyName: "sfdatetimepicker", first: true, predicate: ["sfdatetimepicker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\">\r\n <ejs-datetimepicker #sfdatetimepicker\r\n [value]=\"form.get(data.Value).value | dateParser : data\" \r\n (change)=\"onChange($event)\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [step]=\"interval\"\r\n [format]=\"data | dateFormatKendo\"\r\n [required]=\"data.IsRequired\"\r\n [placeholder]=\"data.PlaceHolder\" \r\n [showClearButton]=\"data.ClearButton\" \r\n [strictMode]=\"disableStrictMode\"\r\n cssClass=\"e-custom\" \r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n </ejs-datetimepicker>\r\n </div>\r\n</div> ", styles: [".e-custom.e-input-group.e-control-wrapper input.e-input,.e-custom.e-input-focus input.e-input{font-size:var(--content-font-size);padding-left:8px}.e-custom.e-input-group.e-control-wrapper{border-radius:5px!important;border:.1px solid rgba(0,0,0,.3)!important}.e-custom.e-input-group.e-control-wrapper:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)!important}.e-custom.e-input-group.e-control-wrapper input.e-input:focus{padding-left:8px}.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):before,.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):after{background:transparent!important}.e-custom.e-input-group.e-error,.e-custom.e-input-group.e-control-wrapper.e-error,.e-custom.e-input-group.e-error:not(.e-float-icon-left),.e-custom.e-input-group.e-control-wrapper.e-error:not(.e-float-icon-left){border-color:#f31700!important}.e-custom.e-input-group.e-error.e-control-wrapper:focus-within{box-shadow:0 0 3px #f31700!important}\n"], components: [{ type: i2.DateTimePickerComponent, selector: "ejs-datetimepicker", inputs: ["allowEdit", "calendarMode", "cssClass", "dayHeaderFormat", "depth", "enableMask", "enablePersistence", "enableRtl", "enabled", "firstDayOfWeek", "floatLabelType", "format", "htmlAttributes", "isMultiSelection", "keyConfigs", "locale", "maskPlaceholder", "max", "min", "openOnFocus", "placeholder", "readonly", "scrollTo", "serverTimezoneOffset", "showClearButton", "showTodayButton", "start", "step", "strictMode", "timeFormat", "value", "values", "weekNumber", "weekRule", "width", "zIndex"], outputs: ["blur", "change", "cleared", "close", "created", "destroyed", "focus", "navigated", "open", "renderDayCell", "valueChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "dateParser": i4.DateParserFilter, "dateFormatKendo": i5.DateKendoFormatParser }, encapsulation: i0.ViewEncapsulation.None });
|
|
44
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SfdatetimepickerComponent, decorators: [{
|
|
45
47
|
type: Component,
|
|
46
|
-
args: [{ selector: 'app-sfdatetimepicker', encapsulation: ViewEncapsulation.None, template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\">\r\n <ejs-datetimepicker #sfdatetimepicker\r\n [value]=\"form.get(data.Value).value | dateParser : data\" \r\n (change)=\"onChange($event)\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [step]=\"interval\"\r\n [format]=\"data | dateFormatKendo\"\r\n [required]=\"data.IsRequired\"\r\n [placeholder]=\"data.PlaceHolder\" \r\n [showClearButton]=\"data.ClearButton\" \r\n cssClass=\"e-custom\" \r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n </ejs-datetimepicker>\r\n </div>\r\n</div> ", styles: [".e-custom.e-input-group.e-control-wrapper input.e-input,.e-custom.e-input-focus input.e-input{font-size:var(--content-font-size);padding-left:8px}.e-custom.e-input-group.e-control-wrapper{border-radius:5px!important;border:.1px solid rgba(0,0,0,.3)!important}.e-custom.e-input-group.e-control-wrapper:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)!important}.e-custom.e-input-group.e-control-wrapper input.e-input:focus{padding-left:8px}.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):before,.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):after{background:transparent!important}.e-custom.e-input-group.e-error,.e-custom.e-input-group.e-control-wrapper.e-error,.e-custom.e-input-group.e-error:not(.e-float-icon-left),.e-custom.e-input-group.e-control-wrapper.e-error:not(.e-float-icon-left){border-color:#f31700!important}.e-custom.e-input-group.e-error.e-control-wrapper:focus-within{box-shadow:0 0 3px #f31700!important}\n"] }]
|
|
48
|
+
args: [{ selector: 'app-sfdatetimepicker', encapsulation: ViewEncapsulation.None, template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\">\r\n <ejs-datetimepicker #sfdatetimepicker\r\n [value]=\"form.get(data.Value).value | dateParser : data\" \r\n (change)=\"onChange($event)\"\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [step]=\"interval\"\r\n [format]=\"data | dateFormatKendo\"\r\n [required]=\"data.IsRequired\"\r\n [placeholder]=\"data.PlaceHolder\" \r\n [showClearButton]=\"data.ClearButton\" \r\n [strictMode]=\"disableStrictMode\"\r\n cssClass=\"e-custom\" \r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\">\r\n </ejs-datetimepicker>\r\n </div>\r\n</div> ", styles: [".e-custom.e-input-group.e-control-wrapper input.e-input,.e-custom.e-input-focus input.e-input{font-size:var(--content-font-size);padding-left:8px}.e-custom.e-input-group.e-control-wrapper{border-radius:5px!important;border:.1px solid rgba(0,0,0,.3)!important}.e-custom.e-input-group.e-control-wrapper:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)!important}.e-custom.e-input-group.e-control-wrapper input.e-input:focus{padding-left:8px}.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):before,.e-custom.e-input-group:not(.e-float-icon-left):not(.e-float-input):after{background:transparent!important}.e-custom.e-input-group.e-error,.e-custom.e-input-group.e-control-wrapper.e-error,.e-custom.e-input-group.e-error:not(.e-float-icon-left),.e-custom.e-input-group.e-control-wrapper.e-error:not(.e-float-icon-left){border-color:#f31700!important}.e-custom.e-input-group.e-error.e-control-wrapper:focus-within{box-shadow:0 0 3px #f31700!important}\n"] }]
|
|
47
49
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }]; }, propDecorators: { sfdatetimepicker: [{
|
|
48
50
|
type: ViewChild,
|
|
49
51
|
args: ["sfdatetimepicker"]
|
|
50
52
|
}] } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ZkYXRldGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi9zZmRhdGV0aW1lcGlja2VyL3NmZGF0ZXRpbWVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2ZkYXRldGltZXBpY2tlci9zZmRhdGV0aW1lcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU9oRiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXhFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7O0FBVS9ELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxjQUFjO0lBUTNELFlBQ0UsZ0JBQW1DO1FBRW5DLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBUm5CLFlBQU8sR0FBUyxJQUFJLENBQUM7UUFDckIsWUFBTyxHQUFTLElBQUksQ0FBQztRQUVyQixzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFtQm5DLGlCQUFZLEdBQUcsQ0FBQyxPQUFZLEVBQUUsT0FBWSxFQUFPLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNsQztRQUNILENBQUMsQ0FBQTtJQXBCRCxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDdEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFXTyxxQkFBcUI7UUFDM0IsTUFBTSxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9GLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTVELE1BQU0saUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRixNQUFNLFlBQVksR0FBRyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1RCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDOztzSEF6Q1UseUJBQXlCOzBHQUF6Qix5QkFBeUIseU1DckJ0QywraUNBaUJPOzJGRElNLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSxzQkFBc0IsaUJBR2pCLGlCQUFpQixDQUFDLElBQUk7d0dBSU4sZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cblxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovIFxuaW1wb3J0IHsgRGF0ZVRpbWVQaWNrZXIgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItY2FsZW5kYXJzXCI7IFxuXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zZmRhdGV0aW1lcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NmZGF0ZXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZmRhdGV0aW1lcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuXG5leHBvcnQgY2xhc3MgU2ZkYXRldGltZXBpY2tlckNvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHsgXG4gIEBWaWV3Q2hpbGQoXCJzZmRhdGV0aW1lcGlja2VyXCIpIHNmZGF0ZXRpbWVwaWNrZXI6IERhdGVUaW1lUGlja2VyOyBcbiAgXG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlID0gbnVsbDtcbiAgcHVibGljIG1heERhdGU6IERhdGUgPSBudWxsO1xuICBwdWJsaWMgaW50ZXJ2YWw6IG51bWJlcjsgXG4gIHB1YmxpYyBkaXNhYmxlU3RyaWN0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbXBvbmVudFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGNvbXBvbmVudFNlcnZpY2UpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7IFxuICAgIHRoaXMuaW50ZXJ2YWwgPSB0aGlzLmRhdGEuU3RlcFZhbHVlID8gTnVtYmVyKHRoaXMuZGF0YS5TdGVwVmFsdWUpIDogMzA7XG4gICAgdGhpcy5kaXNhYmxlU3RyaWN0TW9kZSA9ICF0aGlzLmRhdGEuRGlzYWJsZVN0cmljdE1vZGU7XG4gICAgdGhpcy5zZXRNaW5BbmRNYXhEYXRlUmFuZ2UoKTsgXG4gIH1cbiBcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXREYXRlUmFuZ2UgPSAoTWluRGF0ZTogYW55LCBNYXhEYXRlOiBhbnkpOiBhbnkgPT4ge1xuICAgIGlmICghaXNOYU4oRGF0ZS5wYXJzZShNaW5EYXRlKSkpIHtcbiAgICAgIHRoaXMubWluRGF0ZSA9IG5ldyBEYXRlKE1pbkRhdGUpO1xuICAgIH1cbiAgICBpZiAoIWlzTmFOKERhdGUucGFyc2UoTWF4RGF0ZSkpKSB7XG4gICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZShNYXhEYXRlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1pbkFuZE1heERhdGVSYW5nZSgpIHtcbiAgICBjb25zdCBtaW5EYXRlR3JvdXBWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGEuTWluRGF0ZSBhcyBhbnksIHRoaXMuZ3JvdXApO1xuICAgIGNvbnN0IG1pbkRhdGVWYWx1ZSA9IG1pbkRhdGVHcm91cFZhbHVlIHx8IHRoaXMuZGF0YS5NaW5EYXRlO1xuXG4gICAgY29uc3QgbWF4RGF0ZUdyb3VwVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLk1heERhdGUgYXMgYW55LCB0aGlzLmdyb3VwKTtcbiAgICBjb25zdCBtYXhEYXRlVmFsdWUgPSBtYXhEYXRlR3JvdXBWYWx1ZSB8fCB0aGlzLmRhdGEuTWF4RGF0ZTtcbiAgICB0aGlzLnNldERhdGVSYW5nZShtaW5EYXRlVmFsdWUsIG1heERhdGVWYWx1ZSk7XG4gIH0gXG59XG4iLCI8ZGl2IGNsYXNzPVwiemRhdGUtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGF0ZVRpbWVEZXNrdG9wQ29udGFpbmVyXCIgKm5nSWY9XCIhaXNNb2JpbGVTY3JlZW4oKVwiPlxyXG4gICAgPGVqcy1kYXRldGltZXBpY2tlciAjc2ZkYXRldGltZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyIDogZGF0YVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJpbnRlcnZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiZGF0YSB8IGRhdGVGb3JtYXRLZW5kb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJkYXRhLklzUmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImRhdGEuQ2xlYXJCdXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmljdE1vZGVdPVwiZGlzYWJsZVN0cmljdE1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cImUtY3VzdG9tXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIj5cclxuICAgIDwvZWpzLWRhdGV0aW1lcGlja2VyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj4gIl19
|
|
@@ -221,7 +221,7 @@ export class UiactionbuttonComponent extends ButtonFieldBase {
|
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
UiactionbuttonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UiactionbuttonComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FieldService }, { token: i2.WebApiService }, { token: i2.ResourceApiService }, { token: i2.WorkflowService }, { token: i3.ActionSheetController }], target: i0.ɵɵFactoryTarget.Component });
|
|
224
|
-
UiactionbuttonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UiactionbuttonComponent, selector: "app-uiactionbutton", usesInheritance: true, ngImport: i0, template: "<ion-button (click)=\"onAction()\" [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n *ngIf=\"isMobileScreen() && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"ion-activatable ripple-parent\">\r\n <!-- <ion-icon name=\"more\" slot=\"icon-only\"></ion-icon> -->\r\n <fa-icon [icon]=\"'ellipsis-v'\"></fa-icon>\r\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-button>\r\n", styles: [":host ion-button{width:48px;height:48px;justify-content:center;margin-right:4px;cursor:pointer}:host ion-button fa-icon{text-align:center;justify-content:center;text-overflow:ellipsis;text-transform:none;white-space:nowrap;font-kerning:none;text-decoration:none;font-size:21px}:host ion-button:hover{color:#fff;background-color:#0006;border-radius:20px}\n"], components: [{ type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "
|
|
224
|
+
UiactionbuttonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UiactionbuttonComponent, selector: "app-uiactionbutton", usesInheritance: true, ngImport: i0, template: "<ion-button (click)=\"onAction()\" [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n *ngIf=\"isMobileScreen() && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"ion-activatable ripple-parent\">\r\n <!-- <ion-icon name=\"more\" slot=\"icon-only\"></ion-icon> -->\r\n <fa-icon [icon]=\"'ellipsis-v'\"></fa-icon>\r\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-button>\r\n", styles: [":host ion-button{width:48px;height:48px;justify-content:center;margin-right:4px;cursor:pointer}:host ion-button fa-icon{text-align:center;justify-content:center;text-overflow:ellipsis;text-transform:none;white-space:nowrap;font-kerning:none;text-decoration:none;font-size:21px}:host ion-button:hover{color:#fff;background-color:#0006;border-radius:20px}\n"], components: [{ type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i3.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
225
225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UiactionbuttonComponent, decorators: [{
|
|
226
226
|
type: Component,
|
|
227
227
|
args: [{ selector: 'app-uiactionbutton', template: "<ion-button (click)=\"onAction()\" [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n *ngIf=\"isMobileScreen() && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"ion-activatable ripple-parent\">\r\n <!-- <ion-icon name=\"more\" slot=\"icon-only\"></ion-icon> -->\r\n <fa-icon [icon]=\"'ellipsis-v'\"></fa-icon>\r\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\r\n</ion-button>\r\n", styles: [":host ion-button{width:48px;height:48px;justify-content:center;margin-right:4px;cursor:pointer}:host ion-button fa-icon{text-align:center;justify-content:center;text-overflow:ellipsis;text-transform:none;white-space:nowrap;font-kerning:none;text-decoration:none;font-size:21px}:host ion-button:hover{color:#fff;background-color:#0006;border-radius:20px}\n"] }]
|
|
@@ -80,7 +80,7 @@ export class UibulletinComponent {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
UibulletinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UibulletinComponent, deps: [{ token: i1.ZCoreService }, { token: i1.WebApiService }, { token: i1.ResourceApiService }, { token: i2.MainService }, { token: i1.SignalrService }, { token: i3.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
-
UibulletinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UibulletinComponent, selector: "app-uibulletin", inputs: { group: "group" }, viewQueries: [{ propertyName: "appendTo", first: true, predicate: ["appendTo"], descendants: true, read: ViewContainerRef }, { propertyName: "bulletinTemplate", first: true, predicate: ["bulletinTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"], components: [{ type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "
|
|
83
|
+
UibulletinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UibulletinComponent, selector: "app-uibulletin", inputs: { group: "group" }, viewQueries: [{ propertyName: "appendTo", first: true, predicate: ["appendTo"], descendants: true, read: ViewContainerRef }, { propertyName: "bulletinTemplate", first: true, predicate: ["bulletinTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"], components: [{ type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i4.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
84
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UibulletinComponent, decorators: [{
|
|
85
85
|
type: Component,
|
|
86
86
|
args: [{ selector: 'app-uibulletin', template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"] }]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/********** Angular **********/
|
|
2
2
|
import { Component, Input } from '@angular/core';
|
|
3
|
+
import { DebuggerFieldElementName } from 'mmhglobal-zcore';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "mmhglobal-zcore";
|
|
5
6
|
import * as i2 from "@angular/router";
|
|
@@ -19,6 +20,7 @@ export class UicontentComponent {
|
|
|
19
20
|
this.mainService = mainService;
|
|
20
21
|
this.cacheService = cacheService;
|
|
21
22
|
this.componentService = componentService;
|
|
23
|
+
this.debuggerSectionFieldElementName = DebuggerFieldElementName.DebuggerSection;
|
|
22
24
|
}
|
|
23
25
|
ngOnInit() {
|
|
24
26
|
console.log(this.group);
|
|
@@ -49,13 +51,13 @@ export class UicontentComponent {
|
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
UicontentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UicontentComponent, deps: [{ token: i1.ZCoreService }, { token: i2.Router }, { token: i3.MainService }, { token: i1.CacheService }, { token: i4.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
UicontentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UicontentComponent, selector: "app-uicontent", inputs: { group: "group", cssClass: "cssClass" }, ngImport: i0, template: "<div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n</div>\r\n<ion-grid [class]=\"cssClass\">\r\n <ion-row *ngIf=\"!group.isLoading && !isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\"\r\n [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\" class=\"main-content-row\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n <!-- <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre> -->\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\" style=\"padding-top: 50px;\" class=\"main-content-row style1\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\" fieldName=\"
|
|
54
|
+
UicontentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: UicontentComponent, selector: "app-uicontent", inputs: { group: "group", cssClass: "cssClass" }, ngImport: i0, template: "<div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n</div>\r\n<ion-grid [class]=\"cssClass\">\r\n <ion-row *ngIf=\"!group.isLoading && !isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\"\r\n [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\" class=\"main-content-row\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n <!-- <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre> -->\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\" style=\"padding-top: 50px;\" class=\"main-content-row style1\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\" [fieldName]=\"debuggerSectionFieldElementName\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <!-- require for mobile screen -->\r\n <div *ngIf=\"!isSITEnvironment() && !group.isLoading && isMobileScreen()\" style=\"height: 150px;\"></div>\r\n</ion-grid>\r\n", styles: [":host ::ng-deep kendo-breadcrumb.nav-bar{margin-left:15px;background:transparent;border-radius:5px}:host ::ng-deep kendo-breadcrumb.nav-bar .k-breadcrumb-delimiter,:host ::ng-deep kendo-breadcrumb.nav-bar .k-breadcrumb-delimiter-icon{color:var(--ion-color-primary-shade);font-size:calc(var(--nav-bar-font-size) * 1.2);opacity:1;font-weight:900}:host ::ng-deep kendo-breadcrumb.nav-bar .nav-bar-item{font-size:var(--nav-bar-font-size);color:var(--ion-color-primary-shade);cursor:pointer;justify-content:center;text-align:center;font-weight:600;border-radius:15px;padding:5px 8px}:host ::ng-deep kendo-breadcrumb.nav-bar .nav-bar-item:hover{background:rgba(var(--ion-color-primary-rgb),.15)}:host ::ng-deep kendo-breadcrumb.nav-bar .icon-with-text{padding:0 10px 0 0}:host ::ng-deep kendo-breadcrumb.nav-bar .nav-bar-item.current{cursor:default;background:transparent;color:#787878;padding-right:10px}\n"], components: [{ type: i5.PageLoaderComponent, selector: "app-page-loader" }, { type: i6.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i6.IonRow, selector: "ion-row" }, { type: i7.BreadCrumbComponent, selector: "kendo-breadcrumb", inputs: ["items", "separatorIcon", "collapseMode"], outputs: ["itemClick"], exportAs: ["kendoBreadCrumb"] }, { type: i8.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i6.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i9.ZformComponent, selector: "app-zform", inputs: ["group", "fieldName"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.BreadCrumbItemTemplateDirective, selector: "[kendoBreadCrumbItemTemplate]" }, { type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }] });
|
|
53
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: UicontentComponent, decorators: [{
|
|
54
56
|
type: Component,
|
|
55
|
-
args: [{ selector: 'app-uicontent', template: "<div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n</div>\r\n<ion-grid [class]=\"cssClass\">\r\n <ion-row *ngIf=\"!group.isLoading && !isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\"\r\n [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\" class=\"main-content-row\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n <!-- <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre> -->\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\" style=\"padding-top: 50px;\" class=\"main-content-row style1\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\" fieldName=\"
|
|
57
|
+
args: [{ selector: 'app-uicontent', template: "<div *ngIf=\"group.isLoading\" class=\"spinner-container\">\r\n <app-page-loader></app-page-loader>\r\n</div>\r\n<ion-grid [class]=\"cssClass\">\r\n <ion-row *ngIf=\"!group.isLoading && !isMobileScreen() && group && group.navItems\">\r\n <kendo-breadcrumb [items]=\"group.navItems\" class=\"nav-bar\" (itemClick)=\"onNavItemClick($event)\">\r\n <ng-template kendoBreadCrumbItemTemplate let-item let-index=\"index\">\r\n <div class=\"nav-bar-item\" [class.current]=\"!item.route\">\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\" class=\"zcard-header-icon\"\r\n [ngClass]=\"{'icon-with-text': item.text}\"></fa-icon>\r\n <span>{{ item.text }}</span>\r\n </div>\r\n </ng-template>\r\n </kendo-breadcrumb>\r\n </ion-row>\r\n <ion-row *ngIf=\"!group.isLoading\" class=\"main-content-row\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\"></app-zform>\r\n </ion-col>\r\n <!-- <pre style=\"font-size: x-small;\">{{group.zModel | json}}</pre> -->\r\n </ion-row>\r\n <ion-row *ngIf=\"isSITEnvironment() && !group.isLoading\" style=\"padding-top: 50px;\" class=\"main-content-row style1\">\r\n <ion-col class=\"main-content-col\">\r\n <app-zform [group]=\"group\" [fieldName]=\"debuggerSectionFieldElementName\"></app-zform>\r\n </ion-col>\r\n </ion-row>\r\n <!-- require for mobile screen -->\r\n <div *ngIf=\"!isSITEnvironment() && !group.isLoading && isMobileScreen()\" style=\"height: 150px;\"></div>\r\n</ion-grid>\r\n", styles: [":host ::ng-deep kendo-breadcrumb.nav-bar{margin-left:15px;background:transparent;border-radius:5px}:host ::ng-deep kendo-breadcrumb.nav-bar .k-breadcrumb-delimiter,:host ::ng-deep kendo-breadcrumb.nav-bar .k-breadcrumb-delimiter-icon{color:var(--ion-color-primary-shade);font-size:calc(var(--nav-bar-font-size) * 1.2);opacity:1;font-weight:900}:host ::ng-deep kendo-breadcrumb.nav-bar .nav-bar-item{font-size:var(--nav-bar-font-size);color:var(--ion-color-primary-shade);cursor:pointer;justify-content:center;text-align:center;font-weight:600;border-radius:15px;padding:5px 8px}:host ::ng-deep kendo-breadcrumb.nav-bar .nav-bar-item:hover{background:rgba(var(--ion-color-primary-rgb),.15)}:host ::ng-deep kendo-breadcrumb.nav-bar .icon-with-text{padding:0 10px 0 0}:host ::ng-deep kendo-breadcrumb.nav-bar .nav-bar-item.current{cursor:default;background:transparent;color:#787878;padding-right:10px}\n"] }]
|
|
56
58
|
}], ctorParameters: function () { return [{ type: i1.ZCoreService }, { type: i2.Router }, { type: i3.MainService }, { type: i1.CacheService }, { type: i4.ZComponentService }]; }, propDecorators: { group: [{
|
|
57
59
|
type: Input
|
|
58
60
|
}], cssClass: [{
|
|
59
61
|
type: Input
|
|
60
62
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWljb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3VpY29udGVudC91aWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWljb250ZW50L3VpY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFZekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTM0QsTUFBTSxPQUFPLGtCQUFrQjtJQUs3QixZQUNVLFlBQTBCLEVBQzFCLE1BQWMsRUFDZCxXQUF3QixFQUN4QixZQUEwQixFQUMxQixnQkFBbUM7UUFKbkMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFQdEMsb0NBQStCLEdBQUcsd0JBQXdCLENBQUMsZUFBZSxDQUFDO0lBUTlFLENBQUM7SUFFTCxRQUFRO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLGlFQUFpRTtRQUNqRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztRQUN4QyxnQkFBZ0I7SUFDbEIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQVk7UUFDaEMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2pCLHFDQUFxQztZQUNyQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUMvQztZQUVELElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUV4QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNwRDtZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNoRTtJQUNILENBQUM7OytHQTlDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1R0N0Qi9CLHFnREE2QkE7MkZEUGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGVBQWU7Nk1BTWhCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuLy8gaW1wb3J0IHsgWkNvbXBvbmVudERlYnVnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuZGVidWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWkdyb3VwLCBaQ29yZVNlcnZpY2UsIENhY2hlU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGVidWdnZXJGaWVsZEVsZW1lbnROYW1lIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11aWNvbnRlbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91aWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VpY29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFVpY29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBjc3NDbGFzczogc3RyaW5nO1xyXG4gIHB1YmxpYyBkZWJ1Z2dlclNlY3Rpb25GaWVsZEVsZW1lbnROYW1lID0gRGVidWdnZXJGaWVsZEVsZW1lbnROYW1lLkRlYnVnZ2VyU2VjdGlvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWFpblNlcnZpY2U6IE1haW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgaXNTSVRFbnZpcm9ubWVudCgpIHtcclxuICAgIC8vIHJldHVybiBlbnZpcm9ubWVudC5lMU9hdXRoVXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vb2F1dGhkZXYuJyk7XHJcbiAgICByZXR1cm4gdGhpcy56Y29yZVNlcnZpY2UuaXNEZWJ1Z1Nlc3Npb24oKSAmJiAhdGhpcy5pc0ZpZWxkRWxlbWVudCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGaWVsZEVsZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ncm91cC5maWVsZE5hbWUgPT09ICdmaWVsZCc7XHJcbiAgICAvLyByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudFNlcnZpY2UuaXNNb2JpbGVTY3JlZW4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk5hdkl0ZW1DbGljayhuYXZJdGVtOiBhbnkpIHtcclxuICAgIGlmIChuYXZJdGVtLnJvdXRlKSB7XHJcbiAgICAgIC8vIGNsZWFyIGNsb25lTmV3TW9kZWwgY2FjaGUoaWYgaGF2ZSlcclxuICAgICAgaWYgKHRoaXMuY2FjaGVTZXJ2aWNlLmdldENhY2hlKFwiY2xvbmVOZXdNb2RlbFwiKSkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyQ2FjaGUoXCJjbG9uZU5ld01vZGVsXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1haW5TZXJ2aWNlLnJlbW92ZUxhc3RSb3V0ZVBhcmFtKCk7XHJcblxyXG4gICAgICBpZiAobmF2SXRlbS5yb3V0ZVBhcmFtKSB7XHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zZXRSb3V0ZVBhcmFtKG5hdkl0ZW0ucm91dGVQYXJhbSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobmF2SXRlbS5yb3V0ZSwgeyByZXBsYWNlVXJsOiB0cnVlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZ3JvdXAuaXNMb2FkaW5nXCIgY2xhc3M9XCJzcGlubmVyLWNvbnRhaW5lclwiPlxyXG4gIDxhcHAtcGFnZS1sb2FkZXI+PC9hcHAtcGFnZS1sb2FkZXI+XHJcbjwvZGl2PlxyXG48aW9uLWdyaWQgW2NsYXNzXT1cImNzc0NsYXNzXCI+XHJcbiAgPGlvbi1yb3cgKm5nSWY9XCIhZ3JvdXAuaXNMb2FkaW5nICYmICFpc01vYmlsZVNjcmVlbigpICYmIGdyb3VwICYmIGdyb3VwLm5hdkl0ZW1zXCI+XHJcbiAgICA8a2VuZG8tYnJlYWRjcnVtYiBbaXRlbXNdPVwiZ3JvdXAubmF2SXRlbXNcIiBjbGFzcz1cIm5hdi1iYXJcIiAoaXRlbUNsaWNrKT1cIm9uTmF2SXRlbUNsaWNrKCRldmVudClcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIGtlbmRvQnJlYWRDcnVtYkl0ZW1UZW1wbGF0ZSBsZXQtaXRlbSBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtYmFyLWl0ZW1cIiBbY2xhc3MuY3VycmVudF09XCIhaXRlbS5yb3V0ZVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gKm5nSWY9XCJpdGVtLmljb25cIiBbaWNvbl09XCJpdGVtLmljb25cIiBjbGFzcz1cInpjYXJkLWhlYWRlci1pY29uXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydpY29uLXdpdGgtdGV4dCc6IGl0ZW0udGV4dH1cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3Bhbj57eyBpdGVtLnRleHQgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWJyZWFkY3J1bWI+XHJcbiAgPC9pb24tcm93PlxyXG4gIDxpb24tcm93ICpuZ0lmPVwiIWdyb3VwLmlzTG9hZGluZ1wiIGNsYXNzPVwibWFpbi1jb250ZW50LXJvd1wiPlxyXG4gICAgPGlvbi1jb2wgY2xhc3M9XCJtYWluLWNvbnRlbnQtY29sXCI+XHJcbiAgICAgIDxhcHAtemZvcm0gW2dyb3VwXT1cImdyb3VwXCI+PC9hcHAtemZvcm0+XHJcbiAgICA8L2lvbi1jb2w+XHJcbiAgICA8IS0tIDxwcmUgc3R5bGU9XCJmb250LXNpemU6IHgtc21hbGw7XCI+e3tncm91cC56TW9kZWwgfCBqc29ufX08L3ByZT4gLS0+XHJcbiAgPC9pb24tcm93PlxyXG4gIDxpb24tcm93ICpuZ0lmPVwiaXNTSVRFbnZpcm9ubWVudCgpICYmICFncm91cC5pc0xvYWRpbmdcIiBzdHlsZT1cInBhZGRpbmctdG9wOiA1MHB4O1wiIGNsYXNzPVwibWFpbi1jb250ZW50LXJvdyBzdHlsZTFcIj5cclxuICAgIDxpb24tY29sIGNsYXNzPVwibWFpbi1jb250ZW50LWNvbFwiPlxyXG4gICAgICA8YXBwLXpmb3JtIFtncm91cF09XCJncm91cFwiIFtmaWVsZE5hbWVdPVwiZGVidWdnZXJTZWN0aW9uRmllbGRFbGVtZW50TmFtZVwiPjwvYXBwLXpmb3JtPlxyXG4gICAgPC9pb24tY29sPlxyXG4gIDwvaW9uLXJvdz5cclxuICA8IS0tIHJlcXVpcmUgZm9yIG1vYmlsZSBzY3JlZW4gLS0+XHJcbiAgPGRpdiAqbmdJZj1cIiFpc1NJVEVudmlyb25tZW50KCkgJiYgIWdyb3VwLmlzTG9hZGluZyAmJiBpc01vYmlsZVNjcmVlbigpXCIgc3R5bGU9XCJoZWlnaHQ6IDE1MHB4O1wiPjwvZGl2PlxyXG48L2lvbi1ncmlkPlxyXG4iXX0=
|
|
@@ -86,6 +86,9 @@ export class VirtualScrollComponent extends ContainerFieldBase {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
setData(dataSetResult) {
|
|
89
|
+
if (!dataSetResult) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
89
92
|
this.pageFetched = [];
|
|
90
93
|
if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {
|
|
91
94
|
const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;
|
|
@@ -213,9 +216,23 @@ export class VirtualScrollComponent extends ContainerFieldBase {
|
|
|
213
216
|
this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));
|
|
214
217
|
this.computeDataItems();
|
|
215
218
|
}
|
|
219
|
+
//#endregion
|
|
220
|
+
//#region Selection
|
|
221
|
+
onClick(event, dataItem) {
|
|
222
|
+
if (!!this.data.SelectOptions || true) {
|
|
223
|
+
const targetValue = !dataItem.IsSelected;
|
|
224
|
+
if (this.data.SelectOptions == 'single' || true) {
|
|
225
|
+
for (const dt of this.dataItems) {
|
|
226
|
+
dt.IsSelected = false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
dataItem.IsSelected = targetValue;
|
|
230
|
+
}
|
|
231
|
+
super.onClick(event, dataItem);
|
|
232
|
+
}
|
|
216
233
|
}
|
|
217
234
|
VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
-
VirtualScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: VirtualScrollComponent, selector: "app-virtual-scroll", viewQueries: [{ propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}\n"], components: [{ type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.ContextMenuComponent, selector: "app-context-menu", inputs: ["target", "selectedData"] }, { type: i6.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": i9.HtmlSanitizePipe }, animations: [
|
|
235
|
+
VirtualScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: VirtualScrollComponent, selector: "app-virtual-scroll", viewQueries: [{ propertyName: "viewPort", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}.virtual-scroll-dataitem.virtual-scroll-item-selected{background:var(--ion-color-primary-background)}\n"], components: [{ type: i3.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.ContextMenuComponent, selector: "app-context-menu", inputs: ["target", "selectedData"] }, { type: i6.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i3.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i3.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": i9.HtmlSanitizePipe }, animations: [
|
|
219
236
|
collapseAnimation,
|
|
220
237
|
rotateAnimation
|
|
221
238
|
] });
|
|
@@ -224,9 +241,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
224
241
|
args: [{ selector: "app-virtual-scroll", animations: [
|
|
225
242
|
collapseAnimation,
|
|
226
243
|
rotateAnimation
|
|
227
|
-
], template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}\n"] }]
|
|
244
|
+
], template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n class=\"container e1tag-container-style\" [style]=\"componentProperties.containerStyle.style\"\r\n [ngClass]=\"(data.ComponentStyleType || '') + ' ' + (data.Class || '')\">\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\"\r\n [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div #virtualscrollcontent>\r\n <div class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"options.isGroupByEnabled && options.groupBy && (!dataItems[i-1] || dataItem[options.groupBy] !== dataItems[i-1][options.groupBy])\"\r\n (click)=\"groupByOnClick(dataItem[options.groupBy])\" [class.groupby-collapsible]=\"options.isGroupByCollapsible\">\r\n <fa-icon class=\"virtual-scroll-groupby-arrow-icon e1tag-container-style5\"\r\n [style]=\"componentProperties.containerStyle.style5\" *ngIf=\"!!options.isGroupByCollapsible\"\r\n [icon]=\"getFontAwesome('caret-down', fontAweSomeService)\"\r\n [@rotateAnimation]=\"{value: collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'rotate' : 'default', params: {degree: -90}}\">\r\n </fa-icon>\r\n <span class=\"virtual-scroll-groupby-label e1tag-container-style6\"\r\n [style]=\"componentProperties.containerStyle.style6\">\r\n {{options.groupByLabelTemplate ? getGroupByLabelTemplate(dataItem, options) : dataItem[options.groupBy]}}\r\n </span>\r\n </div>\r\n <div *ngIf=\"!options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n <div *ngIf=\"options.isGroupByEnabled\" [style.height.px]=\"options.itemSize\"\r\n [style.min-height.px]=\"options.itemSize\" [style.max-height.px]=\"options.itemSize\"\r\n [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2 virtual-scroll-dataitem\"\r\n (click)=\"onClick($event, dataItem)\" [id]=\"data.Name + '_' + dataItem?.Value?.Id || ''\"\r\n [@collapseAnimation]=\"{value: !!options.groupBy && collapsedGroupBy.includes(dataItem[options.groupBy]) ? 'collapse' : 'default'}\"\r\n [class.groupby-value-expand]=\"groupByValueToExpand == (dataItem[options.groupBy])\"\r\n [class.virtual-scroll-item-selected]=\"!!dataItem.IsSelected\">\r\n <div *ngIf=\"!dataItem\" [innerHTML]=\"options.loadingLabel | htmlSanitize\"></div>\r\n <div *ngIf=\"dataItem.Label\" [innerHTML]=\"dataItem.Label | htmlSanitize\"></div>\r\n </div>\r\n </div>\r\n <app-context-menu *ngIf=\"data.ContextMenuSettings\" [data]=\"data\" [group]=\"group\" [form]=\"form\" [target]=\"virtualscrollcontent\" [selectedData]=\"dataItem\"></app-context-menu>\r\n </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerFields\" [field]=\"field\" [containerField]=\"data\" [group]=\"group\"\r\n [form]=\"form\" [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\">\r\n </app-zformcontrol>\r\n </cdk-virtual-scroll-viewport>\r\n</div>\r\n", styles: [".virtual-scroll-viewport{height:500px}.virtual-scroll-viewport .virtual-scroll-groupby{background:rgba(var(--ion-color-secondary-rgb),.1);font-weight:500;padding:12px 0 4px 12px;margin:1px}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible{cursor:pointer;display:grid;grid-template-columns:20px auto}.virtual-scroll-viewport .virtual-scroll-groupby.groupby-collapsible:hover{background:rgba(var(--ion-color-secondary-rgb),.05)}.virtual-scroll-viewport .virtual-scroll-groupby>.virtual-scroll-groupby-arrow-icon{width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}.virtual-scroll-dataitem.virtual-scroll-item-selected{background:var(--ion-color-primary-background)}\n"] }]
|
|
228
245
|
}], ctorParameters: function () { return [{ type: i1.ZComponentService }, { type: i2.FontAweSomeService }]; }, propDecorators: { viewPort: [{
|
|
229
246
|
type: ViewChild,
|
|
230
247
|
args: [CdkVirtualScrollViewport]
|
|
231
248
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFFOUIsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGLE9BQU8sRUFBc0UsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7O0FBWXhGLDBHQUEwRztBQUMxRyw0R0FBNEc7QUFFNUcsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQVk1RCxZQUNFLGdCQUFtQyxFQUM1QixrQkFBc0M7UUFFN0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVp4QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7UUFDekQseUJBQW9CLEdBQUcs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LCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb250YWluZXJGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9jb250YWluZXJmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRhU2V0UmVzdWx0LCBGb250QXdlU29tZVNlcnZpY2UsIFZpcnR1YWxTY3JvbGxPcHRpb24sIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGF1ZGl0VGltZSwgZGVsYXksIGZvcmtKb2luLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY29sbGFwc2VBbmltYXRpb24sIHJvdGF0ZUFuaW1hdGlvbiB9IGZyb20gXCIuLi9hbmltYXRpb25zL2NvbXBvbmVudC1hbmltYXRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdmlydHVhbC1zY3JvbGxcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIGNvbGxhcHNlQW5pbWF0aW9uLFxyXG4gICAgcm90YXRlQW5pbWF0aW9uXHJcbiAgXVxyXG59KVxyXG5cclxuLy8gQXBwcm9hY2ggMTogVG90YWwgQ291bnQgaXMga25vd24sIGdldCBuZXh0IHBhZ2UgdXBvbiBzY3JvbGwuIChXaWxsIG9ubHkgaGF2ZSBtdWx0aXBsZSBwYWdlcyAvIHBhZ2VhYmxlKVxyXG4vLyBBcHByb2FjaCAyOiBUb3RhbCBDb3VudCBpcyBub3Qga25vd24sIGFwcGVuZCBtb3JlIGRhdGEgYXQgcnVudGltZS4gKFdpbGwgb25seSBoYXZlIDEgcGFnZSAvIG5vdCBwYWdlYWJsZSlcclxuXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsQ29tcG9uZW50IGV4dGVuZHMgQ29udGFpbmVyRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuICBwdWJsaWMgY29sbGFwc2VkR3JvdXBCeSA9IFtdOyAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gJyc7ICAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gbmV3IEFycmF5PG51bWJlcj4oKTsgLy8gV2hlbiBjb2xsYXBzZSwgbmVlZCB0byByZXRhaW4gdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGxpc3Qgc28gdGhhdCB0aGUgZ3JvdXAgYnkgdGl0bGUgd2lsbCBub3QgYmUgaGlkZGVuXHJcbiAgcHJpdmF0ZSBmdWxsRGF0YUl0ZW1zID0gW107XHJcbiAgcHVibGljIGRhdGFJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBwYWdlU2l6ZSA9IDUwO1xyXG4gIHB1YmxpYyBwYWdlRmV0Y2hlZCA9IFtdO1xyXG4gIHB1YmxpYyBvcHRpb25zOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uO1xyXG4gIHB1YmxpYyBmb290ZXJGaWVsZHMgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBmb250QXdlU29tZVNlcnZpY2U6IEZvbnRBd2VTb21lU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIHRoaXMuc2V0dXBEYXRhSXRlbXMoKTtcclxuICAgIHRoaXMuc2V0dXBGb290ZXIoKTtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMudmlld1BvcnQuc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKFxyXG4gICAgICBhdWRpdFRpbWUodGhpcy5kYXRhLlNjcm9sbEluZGV4Q2hhbmdlVGltZURlbGF5IHx8IDMwMCksXHJcbiAgICAgIHRhcCgoY3VyckluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4KTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9Ub3AoKSB7XHJcbiAgICBpZiAodGhpcy52aWV3UG9ydCkge1xyXG4gICAgICB0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuT3B0aW9ucyA9PT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9wdGlvbnMuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLk9wdGlvbnMsIHRoaXMuZ3JvdXApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5PcHRpb25zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5vcHRpb25zLnBhZ2VTaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubG9hZGluZ0xhYmVsID0gdGhpcy5vcHRpb25zLmxvYWRpbmdMYWJlbCA/PyAnPGRpdj5Mb2FkaW5nPC9kaXY+JztcclxuICAgICAgdGhpcy5vcHRpb25zLml0ZW1TaXplID0gdGhpcy5vcHRpb25zLml0ZW1TaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPSB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPz8gKHRoaXMub3B0aW9ucy5wYWdlU2l6ZSAqIHRoaXMub3B0aW9ucy5pdGVtU2l6ZSk7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA9IHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA/PyAodGhpcy5vcHRpb25zLnBhZ2VTaXplICogdGhpcy5vcHRpb25zLml0ZW1TaXplKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmlzR3JvdXBCeUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZCA/PyAhIXRoaXMub3B0aW9ucy5ncm91cEJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGVuZERhdGEoZGF0YUl0ZW1zOiBBcnJheTxhbnk+KSB7XHJcbiAgICB0aGlzLmZ1bGxEYXRhSXRlbXMgPSB0aGlzLmZ1bGxEYXRhSXRlbXMuY29uY2F0KGRhdGFJdGVtcyk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuY29tcHV0ZURhdGFJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFJdGVtcygpIHtcclxuICAgIHRoaXMucGFnZUZldGNoZWQgPSBbXTtcclxuICAgIGlmICh0aGlzLmRhdGEuRGF0YVNldFJlc3VsdCkge1xyXG4gICAgICBsZXQgZGF0YVNldFJlc3VsdCA9IHRoaXMuZGF0YS5EYXRhU2V0UmVzdWx0O1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGFTZXRSZXN1bHQgPT0gJ3N0cmluZycgJiYgZGF0YVNldFJlc3VsdC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIGRhdGFTZXRSZXN1bHQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoZGF0YVNldFJlc3VsdCwgdGhpcy5ncm91cCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXREYXRhKGRhdGFTZXRSZXN1bHQgYXMgRGF0YVNldFJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhKGRhdGFTZXRSZXN1bHQ6IERhdGFTZXRSZXN1bHQpIHtcclxuICAgIHRoaXMucGFnZUZldGNoZWQgPSBbXTtcclxuICAgIGlmIChkYXRhU2V0UmVzdWx0LmRhdGFTZXQgJiYgQXJyYXkuaXNBcnJheShkYXRhU2V0UmVzdWx0LmRhdGFTZXQpICYmIGRhdGFTZXRSZXN1bHQuZGF0YVNldC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGNudCA9IGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCAtIGRhdGFTZXRSZXN1bHQuZGF0YVNldC5sZW5ndGg7XHJcbiAgICAgIGlmIChjbnQgPCAwKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignRGF0YUl0ZW1zIGNhbm5vdCBiZSBtb3JlIHRoYW4gdG90YWwgY291bnQuJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmRhdGFJdGVtcyA9IGRhdGFTZXRSZXN1bHQuZGF0YVNldC5jb25jYXQoQXJyYXkoY250KS5maWxsKGZhbHNlKSk7XHJcbiAgICAgIGNvbnN0IHBhZ2VOb1RvTWFya0FzRmV0Y2ggPSBNYXRoLmNlaWwoZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aCAvIHRoaXMucGFnZVNpemUpIC0gMTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcGFnZU5vVG9NYXJrQXNGZXRjaDsgaSsrKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlRmV0Y2hlZC5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRhU2V0UmVzdWx0LnRvdGFsQ291bnQpIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBBcnJheShkYXRhU2V0UmVzdWx0LnRvdGFsQ291bnQpLmZpbGwoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmZ1bGxEYXRhSXRlbXMgPSB0aGlzLmRhdGFJdGVtcztcclxuICAgIHRoaXMuY29tcHV0ZURhdGFJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3B1bGF0ZUxpc3REYXRhKGN1cnJJbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZW5kZXJSYW5nZSA9IHRoaXMudmlld1BvcnQuZ2V0UmVuZGVyZWRSYW5nZSgpO1xyXG4gICAgaWYgKHJlbmRlclJhbmdlLnN0YXJ0ID09IHJlbmRlclJhbmdlLmVuZCAmJiByZW5kZXJSYW5nZS5lbmQgPT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RhcnRQYWdlTm8gPSBNYXRoLmZsb29yKHJlbmRlclJhbmdlLnN0YXJ0IC8gdGhpcy5wYWdlU2l6ZSk7XHJcbiAgICBjb25zdCBlbmRQYWdlTm8gPSBNYXRoLmZsb29yKChyZW5kZXJSYW5nZS5lbmQgLSAxKSAvIHRoaXMucGFnZVNpemUpO1xyXG5cclxuICAgIGNvbnN0IG9icyA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBmb3IgKGxldCBpID0gc3RhcnRQYWdlTm87IGkgPD0gZW5kUGFnZU5vOyBpKyspIHtcclxuICAgICAgaWYgKCF0aGlzLnBhZ2VGZXRjaGVkLmluY2x1ZGVzKGkpKSB7XHJcbiAgICAgICAgdGhpcy5wYWdlRmV0Y2hlZC5wdXNoKGkpO1xyXG4gICAgICAgIG9icy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5mZXRjaERhdGEoaSkucGlwZSh0YXAoKFtkYXRhLCBwYWdlTm9dKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YUJ5SW5kZXgocGFnZU5vICogdGhpcy5wYWdlU2l6ZSwgZGF0YSk7XHJcbiAgICAgICAgICB9KSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9icy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcmtKb2luKG9icykucGlwZSh0YXAocmVzID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdQb3J0RGF0YSgpO1xyXG4gICAgICB9KSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoRGF0YShwYWdlTm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5PblNjcm9sbCAmJiB0eXBlb2YgdGhpcy5kYXRhLk9uU2Nyb2xsID09ICdzdHJpbmcnICYmIHRoaXMuZGF0YS5PblNjcm9sbC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICBjb25zdCBvblNjcm9sbEV2ZW50ID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PblNjcm9sbCk7XHJcbiAgICAgIGlmICh0eXBlb2Ygb25TY3JvbGxFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IGNhbGxGdW5jID0gb25TY3JvbGxFdmVudC5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oW2NhbGxGdW5jKHRoaXMuZ3JvdXAsIHsgcGFnZU5vOiBwYWdlTm8sIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH0pLCBvZihwYWdlTm8pXSBhcyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvZihmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZURhdGFCeUluZGV4KHN0YXJ0aW5nSW5kZXg6IG51bWJlciwgZGF0YTogQXJyYXk8YW55Pikge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zW3N0YXJ0aW5nSW5kZXggKyBpXSA9IGRhdGFbaV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZpZXdQb3J0RGF0YSgpIHtcclxuICAgIHRoaXMuZGF0YUl0ZW1zID0gWy4uLnRoaXMuZGF0YUl0ZW1zXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXR1cEZvb3RlcigpIHtcclxuICAgIGlmICh0aGlzLmRhdGEuVmFsdWUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmRhdGEuVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuZm9vdGVyRmllbGRzID0gdGhpcy5kYXRhLlZhbHVlLmZpbHRlcih4ID0+IHguU2VjdGlvbiA9PT0gJ2Zvb3RlcicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvbXBvbmVudE9wdGlvbnMoKTogVmlydHVhbFNjcm9sbE9wdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIEdyb3VwIEJ5XHJcbiAgcHVibGljIGdldEdyb3VwQnlMYWJlbFRlbXBsYXRlKGRhdGFJdGVtLCBvcHRpb25zKTogc3RyaW5nIHtcclxuICAgIGlmIChvcHRpb25zLmdyb3VwQnlMYWJlbFRlbXBsYXRlICYmIHR5cGVvZiBvcHRpb25zLmdyb3VwQnlMYWJlbFRlbXBsYXRlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLmdyb3VwQnlMYWJlbFRlbXBsYXRlLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgICAgY29uc3QgZ2V0VGVtcGxhdGVGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUpO1xyXG5cclxuICAgICAgICBpZiAoZ2V0VGVtcGxhdGVGdW5jKSB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0VGVtcGxhdGVGdW5jKHtcclxuICAgICAgICAgICAgZGF0YUl0ZW0sXHJcbiAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGVdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ3JvdXBCeU9uQ2xpY2soZ3JvdXBCeVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLmlzR3JvdXBCeUNvbGxhcHNpYmxlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1c2UgY29sbGFwc2UgLyBleHBhbmQgdG8gY29udHJvbCBhbmltYXRpb24gc2VxdWVuY2VcclxuICAgIGNvbnN0IGlzVG9Db2xsYXBzZSA9ICF0aGlzLmNvbGxhcHNlZEdyb3VwQnkuaW5jbHVkZXMoZ3JvdXBCeVZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBmaXJzdE5vZGVJbmRleCA9IHRoaXMuZnVsbERhdGFJdGVtcy5tYXAoeCA9PiB4W3RoaXMub3B0aW9ucy5ncm91cEJ5XSkuaW5kZXhPZihncm91cEJ5VmFsdWUpO1xyXG4gICAgaWYgKGlzVG9Db2xsYXBzZSkge1xyXG4gICAgICAvLyB0byBjb2xsYXBzZSAoRm9yIGFuaW1hdGlvbjogQ2hhbmdlIHN0YXR1cywgdGhlbiBhcHBlbmQgZGF0YSlcclxuICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5LnB1c2goZ3JvdXBCeVZhbHVlKTtcclxuICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdC5wdXNoKGZpcnN0Tm9kZUluZGV4KTtcclxuICAgICAgb2Yoe30pLnBpcGUoZGVsYXkoNDAwKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb21wdXRlRGF0YUl0ZW1zKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAvLyB0byBleHBhbmQgKEZvciBhbmltYXRpb246IEFwcGVuZCBkYXRhLCB0aGVuIGNoYW5nZSBzdGF0dXMpXHJcbiAgICAgIHRoaXMuY29sbGFwc2VkR3JvdXBCeV9GaXJzdE5vZGVJbmRleExpc3QgPSB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LmZpbHRlcih4ID0+IHggIT0gZmlyc3ROb2RlSW5kZXgpO1xyXG4gICAgICBjb25zdCB0ZW1wQ29sbGFwc2VkR3JvdXBCeSA9IHRoaXMuY29sbGFwc2VkR3JvdXBCeS5maWx0ZXIoeCA9PiB4ICE9PSBncm91cEJ5VmFsdWUpO1xyXG4gICAgICB0aGlzLmRhdGFJdGVtcyA9IHRoaXMuZnVsbERhdGFJdGVtcy5maWx0ZXIoKHgsIGluZGV4KSA9PiAhdGVtcENvbGxhcHNlZEdyb3VwQnkuaW5jbHVkZXMoeFt0aGlzLm9wdGlvbnMuZ3JvdXBCeV0pIHx8IHRoaXMuY29sbGFwc2VkR3JvdXBCeV9GaXJzdE5vZGVJbmRleExpc3QuaW5jbHVkZXMoaW5kZXgpKTtcclxuICAgICAgdGhpcy5ncm91cEJ5VmFsdWVUb0V4cGFuZCA9IGdyb3VwQnlWYWx1ZTtcclxuICAgICAgb2Yoe30pLnBpcGUoZGVsYXkoMCksXHJcbiAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY29sbGFwc2VkR3JvdXBCeSA9IHRlbXBDb2xsYXBzZWRHcm91cEJ5O1xyXG4gICAgICAgICAgdGhpcy5ncm91cEJ5VmFsdWVUb0V4cGFuZCA9IGdyb3VwQnlWYWx1ZTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb21wdXRlRGF0YUl0ZW1zKCkge1xyXG4gICAgdGhpcy5kYXRhSXRlbXMgPSB0aGlzLmZ1bGxEYXRhSXRlbXMuZmlsdGVyKCh4LCBpbmRleCkgPT4gIXRoaXMuY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyh4W3RoaXMub3B0aW9ucy5ncm91cEJ5XSkgfHwgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdC5pbmNsdWRlcyhpbmRleCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZEFsbCgpIHtcclxuICAgIHRoaXMuZ3JvdXBCeVZhbHVlVG9FeHBhbmQgPSAnJztcclxuICAgIHRoaXMuY29sbGFwc2VkR3JvdXBCeSA9IFtdO1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdCA9IFtdO1xyXG4gICAgdGhpcy5jb21wdXRlRGF0YUl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kQnlHcm91cEJ5VmFsdWVzKGdyb3VwQnlWYWx1ZTogQXJyYXk8c3RyaW5nPikge1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmZpbHRlcih4ID0+ICFncm91cEJ5VmFsdWUuaW5jbHVkZXMoeCkpO1xyXG4gICAgdGhpcy5jb21wdXRlRGF0YUl0ZW1zKCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG59XHJcbiIsIjxkaXZcclxuICAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiXHJcbiAgY2xhc3M9XCJjb250YWluZXIgZTF0YWctY29udGFpbmVyLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGVcIlxyXG4gIFtuZ0NsYXNzXT1cIihkYXRhLkNvbXBvbmVudFN0eWxlVHlwZSB8fCAnJykgKyAnICcgKyAoZGF0YS5DbGFzcyB8fCAnJylcIj5cclxuICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgW2l0ZW1TaXplXT1cIm9wdGlvbnMuaXRlbVNpemVcIlxyXG4gICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlMVwiXHJcbiAgICAgICAgY2xhc3M9XCJ2aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBlMXRhZy1jb250YWluZXItc3R5bGUxXCJcclxuICAgICAgICBbbWluQnVmZmVyUHhdPVwib3B0aW9ucy5taW5CdWZmZXJQeFwiXHJcbiAgICAgICAgW21heEJ1ZmZlclB4XT1cIm9wdGlvbnMubWF4QnVmZmVyUHhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgZGF0YUl0ZW0gb2YgZGF0YUl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgIDxkaXYgI3ZpcnR1YWxzY3JvbGxjb250ZW50PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2aXJ0dWFsLXNjcm9sbC1ncm91cGJ5IGUxdGFnLWNvbnRhaW5lci1zdHlsZTRcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTRcIlxyXG4gICAgICAgICAgKm5nSWY9XCJvcHRpb25zLmlzR3JvdXBCeUVuYWJsZWQgJiYgb3B0aW9ucy5ncm91cEJ5ICYmICghZGF0YUl0ZW1zW2ktMV0gfHwgZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5XSAhPT0gZGF0YUl0ZW1zW2ktMV1bb3B0aW9ucy5ncm91cEJ5XSlcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImdyb3VwQnlPbkNsaWNrKGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV0pXCIgW2NsYXNzLmdyb3VwYnktY29sbGFwc2libGVdPVwib3B0aW9ucy5pc0dyb3VwQnlDb2xsYXBzaWJsZVwiPlxyXG4gICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJ2aXJ0dWFsLXNjcm9sbC1ncm91cGJ5LWFycm93LWljb24gZTF0YWctY29udGFpbmVyLXN0eWxlNVwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNVwiICpuZ0lmPVwiISFvcHRpb25zLmlzR3JvdXBCeUNvbGxhcHNpYmxlXCJcclxuICAgICAgICAgICAgW2ljb25dPVwiZ2V0Rm9udEF3ZXNvbWUoJ2NhcmV0LWRvd24nLCBmb250QXdlU29tZVNlcnZpY2UpXCJcclxuICAgICAgICAgICAgW0Byb3RhdGVBbmltYXRpb25dPVwie3ZhbHVlOiBjb2xsYXBzZWRHcm91cEJ5LmluY2x1ZGVzKGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV0pID8gJ3JvdGF0ZScgOiAnZGVmYXVsdCcsIHBhcmFtczoge2RlZ3JlZTogLTkwfX1cIj5cclxuICAgICAgICAgIDwvZmEtaWNvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieS1sYWJlbCBlMXRhZy1jb250YWluZXItc3R5bGU2XCJcclxuICAgICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU2XCI+XHJcbiAgICAgICAgICAgIHt7b3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZSA/IGdldEdyb3VwQnlMYWJlbFRlbXBsYXRlKGRhdGFJdGVtLCBvcHRpb25zKSA6IGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV19fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhb3B0aW9ucy5pc0dyb3VwQnlFbmFibGVkXCIgW3N0eWxlLmhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cIm9wdGlvbnMuaXRlbVNpemVcIiBbc3R5bGUubWF4LWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCJcclxuICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlMlwiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlMiB2aXJ0dWFsLXNjcm9sbC1kYXRhaXRlbVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQsIGRhdGFJdGVtKVwiIFtpZF09XCJkYXRhLk5hbWUgKyAnXycgKyBkYXRhSXRlbT8uVmFsdWU/LklkIHx8ICcnXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGFJdGVtXCIgW2lubmVySFRNTF09XCJvcHRpb25zLmxvYWRpbmdMYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFJdGVtLkxhYmVsXCIgW2lubmVySFRNTF09XCJkYXRhSXRlbS5MYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb25zLmlzR3JvdXBCeUVuYWJsZWRcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIm9wdGlvbnMuaXRlbVNpemVcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cIm9wdGlvbnMuaXRlbVNpemVcIlxyXG4gICAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUyXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUyIHZpcnR1YWwtc2Nyb2xsLWRhdGFpdGVtXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgZGF0YUl0ZW0pXCIgW2lkXT1cImRhdGEuTmFtZSArICdfJyArIGRhdGFJdGVtPy5WYWx1ZT8uSWQgfHwgJydcIlxyXG4gICAgICAgICAgW0Bjb2xsYXBzZUFuaW1hdGlvbl09XCJ7dmFsdWU6ICEhb3B0aW9ucy5ncm91cEJ5ICYmIGNvbGxhcHNlZEdyb3VwQnkuaW5jbHVkZXMoZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5XSkgPyAnY29sbGFwc2UnIDogJ2RlZmF1bHQnfVwiXHJcbiAgICAgICAgICBbY2xhc3MuZ3JvdXBieS12YWx1ZS1leHBhbmRdPVwiZ3JvdXBCeVZhbHVlVG9FeHBhbmQgPT0gKGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV0pXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGFJdGVtXCIgW2lubmVySFRNTF09XCJvcHRpb25zLmxvYWRpbmdMYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFJdGVtLkxhYmVsXCIgW2lubmVySFRNTF09XCJkYXRhSXRlbS5MYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1jb250ZXh0LW1lbnUgW2RhdGFdPVwiZGF0YVwiIFtncm91cF09XCJncm91cFwiIFtmb3JtXT1cImZvcm1cIiBbdGFyZ2V0XT1cInZpcnR1YWxzY3JvbGxjb250ZW50XCIgW3NlbGVjdGVkRGF0YV09XCJkYXRhSXRlbVwiPjwvYXBwLWNvbnRleHQtbWVudT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPGFwcC16Zm9ybWNvbnRyb2wgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZvb3RlckZpZWxkc1wiIFtmaWVsZF09XCJmaWVsZFwiIFtjb250YWluZXJGaWVsZF09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCJcclxuICAgICAgW2Zvcm1dPVwiZm9ybVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlM1wiIGNsYXNzPVwiZTF0YWctY29udGFpbmVyLXN0eWxlM1wiPlxyXG4gICAgPC9hcHAtemZvcm1jb250cm9sPlxyXG4gIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG48L2Rpdj5cclxuIl19
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdmlydHVhbC1zY3JvbGwvdmlydHVhbC1zY3JvbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFFOUIsMkNBQTJDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRWhGLE9BQU8sRUFBc0UsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7O0FBWXhGLDBHQUEwRztBQUMxRyw0R0FBNEc7QUFFNUcsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGtCQUFrQjtJQVk1RCxZQUNFLGdCQUFtQyxFQUM1QixrQkFBc0M7UUFFN0MsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGakIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQVp4QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxrQ0FBa0M7UUFDekQseUJBQW9CLEdBQUcs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SSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUMvQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQy9CLEVBQUUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUN2QjthQUNGO1lBQ0QsUUFBUSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7U0FDbkM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqQyxDQUFDOzttSEE1UFUsc0JBQXNCO3VHQUF0QixzQkFBc0Isb0dBQ3RCLHdCQUF3Qix1RUM3QnJDLDZnSUFtREEsMC9FRGhDYztRQUNWLGlCQUFpQjtRQUNqQixlQUFlO0tBQ2hCOzJGQU1VLHNCQUFzQjtrQkFibEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEI7d0JBQ1YsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNoQjt5SUFPb0MsUUFBUTtzQkFBNUMsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb250YWluZXJGaWVsZEJhc2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9jb250YWluZXJmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRhU2V0UmVzdWx0LCBGb250QXdlU29tZVNlcnZpY2UsIFZpcnR1YWxTY3JvbGxPcHRpb24sIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gXCJAYW5ndWxhci9jZGsvc2Nyb2xsaW5nXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGF1ZGl0VGltZSwgZGVsYXksIGZvcmtKb2luLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgY29sbGFwc2VBbmltYXRpb24sIHJvdGF0ZUFuaW1hdGlvbiB9IGZyb20gXCIuLi9hbmltYXRpb25zL2NvbXBvbmVudC1hbmltYXRpb25zXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtdmlydHVhbC1zY3JvbGxcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3ZpcnR1YWwtc2Nyb2xsLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIGNvbGxhcHNlQW5pbWF0aW9uLFxyXG4gICAgcm90YXRlQW5pbWF0aW9uXHJcbiAgXVxyXG59KVxyXG5cclxuLy8gQXBwcm9hY2ggMTogVG90YWwgQ291bnQgaXMga25vd24sIGdldCBuZXh0IHBhZ2UgdXBvbiBzY3JvbGwuIChXaWxsIG9ubHkgaGF2ZSBtdWx0aXBsZSBwYWdlcyAvIHBhZ2VhYmxlKVxyXG4vLyBBcHByb2FjaCAyOiBUb3RhbCBDb3VudCBpcyBub3Qga25vd24sIGFwcGVuZCBtb3JlIGRhdGEgYXQgcnVudGltZS4gKFdpbGwgb25seSBoYXZlIDEgcGFnZSAvIG5vdCBwYWdlYWJsZSlcclxuXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsQ29tcG9uZW50IGV4dGVuZHMgQ29udGFpbmVyRmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgdmlld1BvcnQ6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuICBwdWJsaWMgY29sbGFwc2VkR3JvdXBCeSA9IFtdOyAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gJyc7ICAvLyBVc2VkIHRvIGRlZmluZSBhbmltYXRpb24gc3RhdHVzXHJcbiAgcHVibGljIGNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gbmV3IEFycmF5PG51bWJlcj4oKTsgLy8gV2hlbiBjb2xsYXBzZSwgbmVlZCB0byByZXRhaW4gdGhlIGZpcnN0IG5vZGUgaW4gdGhlIGxpc3Qgc28gdGhhdCB0aGUgZ3JvdXAgYnkgdGl0bGUgd2lsbCBub3QgYmUgaGlkZGVuXHJcbiAgcHJpdmF0ZSBmdWxsRGF0YUl0ZW1zID0gW107XHJcbiAgcHVibGljIGRhdGFJdGVtczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHB1YmxpYyBwYWdlU2l6ZSA9IDUwO1xyXG4gIHB1YmxpYyBwYWdlRmV0Y2hlZCA9IFtdO1xyXG4gIHB1YmxpYyBvcHRpb25zOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uO1xyXG4gIHB1YmxpYyBmb290ZXJGaWVsZHMgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjb21wb25lbnRTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSxcclxuICAgIHB1YmxpYyBmb250QXdlU29tZVNlcnZpY2U6IEZvbnRBd2VTb21lU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoY29tcG9uZW50U2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0dXBDb21wb25lbnQoKTtcclxuICAgIHRoaXMuc2V0dXBEYXRhSXRlbXMoKTtcclxuICAgIHRoaXMuc2V0dXBGb290ZXIoKTtcclxuICAgIHN1cGVyLmluaXRDb21wb25lbnQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY29tcG9uZW50U2VydmljZS5kZWNyZW1lbnRDb21wb25lbnRDb3VudGVyRm9yRmllbGQodGhpcy5kYXRhKTtcclxuICAgIHRoaXMudmlld1BvcnQuc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKFxyXG4gICAgICBhdWRpdFRpbWUodGhpcy5kYXRhLlNjcm9sbEluZGV4Q2hhbmdlVGltZURlbGF5IHx8IDMwMCksXHJcbiAgICAgIHRhcCgoY3VyckluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4KTtcclxuICAgICAgfSlcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2Nyb2xsVG9Ub3AoKSB7XHJcbiAgICBpZiAodGhpcy52aWV3UG9ydCkge1xyXG4gICAgICB0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ29tcG9uZW50KCkge1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhLk9wdGlvbnMpIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmRhdGEuT3B0aW9ucyA9PT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9wdGlvbnMuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLk9wdGlvbnMsIHRoaXMuZ3JvdXApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuZGF0YS5PcHRpb25zO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5vcHRpb25zLnBhZ2VTaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubG9hZGluZ0xhYmVsID0gdGhpcy5vcHRpb25zLmxvYWRpbmdMYWJlbCA/PyAnPGRpdj5Mb2FkaW5nPC9kaXY+JztcclxuICAgICAgdGhpcy5vcHRpb25zLml0ZW1TaXplID0gdGhpcy5vcHRpb25zLml0ZW1TaXplID8/IDUwO1xyXG4gICAgICB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPSB0aGlzLm9wdGlvbnMubWluQnVmZmVyUHggPz8gKHRoaXMub3B0aW9ucy5wYWdlU2l6ZSAqIHRoaXMub3B0aW9ucy5pdGVtU2l6ZSk7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA9IHRoaXMub3B0aW9ucy5tYXhCdWZmZXJQeCA/PyAodGhpcy5vcHRpb25zLnBhZ2VTaXplICogdGhpcy5vcHRpb25zLml0ZW1TaXplKTtcclxuICAgICAgdGhpcy5vcHRpb25zLmlzR3JvdXBCeUVuYWJsZWQgPSB0aGlzLm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZCA/PyAhIXRoaXMub3B0aW9ucy5ncm91cEJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGVuZERhdGEoZGF0YUl0ZW1zOiBBcnJheTxhbnk+KSB7XHJcbiAgICB0aGlzLmZ1bGxEYXRhSXRlbXMgPSB0aGlzLmZ1bGxEYXRhSXRlbXMuY29uY2F0KGRhdGFJdGVtcyk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmxlbmd0aDtcclxuICAgIHRoaXMuY29tcHV0ZURhdGFJdGVtcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cERhdGFJdGVtcygpIHtcclxuICAgIHRoaXMucGFnZUZldGNoZWQgPSBbXTtcclxuICAgIGlmICh0aGlzLmRhdGEuRGF0YVNldFJlc3VsdCkge1xyXG4gICAgICBsZXQgZGF0YVNldFJlc3VsdCA9IHRoaXMuZGF0YS5EYXRhU2V0UmVzdWx0O1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGFTZXRSZXN1bHQgPT0gJ3N0cmluZycgJiYgZGF0YVNldFJlc3VsdC5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICAgIGRhdGFTZXRSZXN1bHQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUoZGF0YVNldFJlc3VsdCwgdGhpcy5ncm91cCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXREYXRhKGRhdGFTZXRSZXN1bHQgYXMgRGF0YVNldFJlc3VsdCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhKGRhdGFTZXRSZXN1bHQ6IERhdGFTZXRSZXN1bHQpIHtcclxuICAgIGlmICghZGF0YVNldFJlc3VsdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wYWdlRmV0Y2hlZCA9IFtdO1xyXG4gICAgaWYgKGRhdGFTZXRSZXN1bHQuZGF0YVNldCAmJiBBcnJheS5pc0FycmF5KGRhdGFTZXRSZXN1bHQuZGF0YVNldCkgJiYgZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgY250ID0gZGF0YVNldFJlc3VsdC50b3RhbENvdW50IC0gZGF0YVNldFJlc3VsdC5kYXRhU2V0Lmxlbmd0aDtcclxuICAgICAgaWYgKGNudCA8IDApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdEYXRhSXRlbXMgY2Fubm90IGJlIG1vcmUgdGhhbiB0b3RhbCBjb3VudC4nKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gZGF0YVNldFJlc3VsdC5kYXRhU2V0LmNvbmNhdChBcnJheShjbnQpLmZpbGwoZmFsc2UpKTtcclxuICAgICAgY29uc3QgcGFnZU5vVG9NYXJrQXNGZXRjaCA9IE1hdGguY2VpbChkYXRhU2V0UmVzdWx0LmRhdGFTZXQubGVuZ3RoIC8gdGhpcy5wYWdlU2l6ZSkgLSAxO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBwYWdlTm9Ub01hcmtBc0ZldGNoOyBpKyspIHtcclxuICAgICAgICB0aGlzLnBhZ2VGZXRjaGVkLnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCkge1xyXG4gICAgICB0aGlzLmRhdGFJdGVtcyA9IEFycmF5KGRhdGFTZXRSZXN1bHQudG90YWxDb3VudCkuZmlsbChmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZnVsbERhdGFJdGVtcyA9IHRoaXMuZGF0YUl0ZW1zO1xyXG4gICAgdGhpcy5jb21wdXRlRGF0YUl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvcHVsYXRlTGlzdERhdGEoY3VyckluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHJlbmRlclJhbmdlID0gdGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCk7XHJcbiAgICBpZiAocmVuZGVyUmFuZ2Uuc3RhcnQgPT0gcmVuZGVyUmFuZ2UuZW5kICYmIHJlbmRlclJhbmdlLmVuZCA9PSAwKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGFydFBhZ2VObyA9IE1hdGguZmxvb3IocmVuZGVyUmFuZ2Uuc3RhcnQgLyB0aGlzLnBhZ2VTaXplKTtcclxuICAgIGNvbnN0IGVuZFBhZ2VObyA9IE1hdGguZmxvb3IoKHJlbmRlclJhbmdlLmVuZCAtIDEpIC8gdGhpcy5wYWdlU2l6ZSk7XHJcblxyXG4gICAgY29uc3Qgb2JzID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2VObzsgaSA8PSBlbmRQYWdlTm87IGkrKykge1xyXG4gICAgICBpZiAoIXRoaXMucGFnZUZldGNoZWQuaW5jbHVkZXMoaSkpIHtcclxuICAgICAgICB0aGlzLnBhZ2VGZXRjaGVkLnB1c2goaSk7XHJcbiAgICAgICAgb2JzLnB1c2goXHJcbiAgICAgICAgICB0aGlzLmZldGNoRGF0YShpKS5waXBlKHRhcCgoW2RhdGEsIHBhZ2VOb10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhQnlJbmRleChwYWdlTm8gKiB0aGlzLnBhZ2VTaXplLCBkYXRhKTtcclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9ya0pvaW4ob2JzKS5waXBlKHRhcChyZXMgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlld1BvcnREYXRhKCk7XHJcbiAgICAgIH0pKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmV0Y2hEYXRhKHBhZ2VObyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy5kYXRhLk9uU2Nyb2xsICYmIHR5cGVvZiB0aGlzLmRhdGEuT25TY3JvbGwgPT0gJ3N0cmluZycgJiYgdGhpcy5kYXRhLk9uU2Nyb2xsLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIGNvbnN0IG9uU2Nyb2xsRXZlbnQgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLk9uU2Nyb2xsKTtcclxuICAgICAgaWYgKHR5cGVvZiBvblNjcm9sbEV2ZW50ID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbEZ1bmMgPSBvblNjcm9sbEV2ZW50LmJpbmQodGhpcy5ncm91cC5jdHJsU2NvcGUpO1xyXG4gICAgICAgIHJldHVybiBmb3JrSm9pbihbY2FsbEZ1bmModGhpcy5ncm91cCwgeyBwYWdlTm86IHBhZ2VObywgcGFnZVNpemU6IHRoaXMucGFnZVNpemUgfSksIG9mKHBhZ2VObyldIGFzIEFycmF5PE9ic2VydmFibGU8YW55Pj4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9mKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRGF0YUJ5SW5kZXgoc3RhcnRpbmdJbmRleDogbnVtYmVyLCBkYXRhOiBBcnJheTxhbnk+KSB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5kYXRhSXRlbXNbc3RhcnRpbmdJbmRleCArIGldID0gZGF0YVtpXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmlld1BvcnREYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhSXRlbXMgPSBbLi4udGhpcy5kYXRhSXRlbXNdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldHVwRm9vdGVyKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5WYWx1ZSkpIHtcclxuICAgICAgdGhpcy5mb290ZXJGaWVsZHMgPSB0aGlzLmRhdGEuVmFsdWUuZmlsdGVyKHggPT4geC5TZWN0aW9uID09PSAnZm9vdGVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29tcG9uZW50T3B0aW9ucygpOiBWaXJ0dWFsU2Nyb2xsT3B0aW9uIHtcclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gR3JvdXAgQnlcclxuICBwdWJsaWMgZ2V0R3JvdXBCeUxhYmVsVGVtcGxhdGUoZGF0YUl0ZW0sIG9wdGlvbnMpOiBzdHJpbmcge1xyXG4gICAgaWYgKG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgJiYgdHlwZW9mIG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgaWYgKG9wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUuc3RhcnRzV2l0aCgnZ3JvdXAuJykpIHtcclxuICAgICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgb3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZSk7XHJcblxyXG4gICAgICAgIGlmIChnZXRUZW1wbGF0ZUZ1bmMpIHtcclxuICAgICAgICAgIHJldHVybiBnZXRUZW1wbGF0ZUZ1bmMoe1xyXG4gICAgICAgICAgICBkYXRhSXRlbSxcclxuICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5TGFiZWxUZW1wbGF0ZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBncm91cEJ5T25DbGljayhncm91cEJ5VmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaXNHcm91cEJ5Q29sbGFwc2libGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVzZSBjb2xsYXBzZSAvIGV4cGFuZCB0byBjb250cm9sIGFuaW1hdGlvbiBzZXF1ZW5jZVxyXG4gICAgY29uc3QgaXNUb0NvbGxhcHNlID0gIXRoaXMuY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhncm91cEJ5VmFsdWUpO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0Tm9kZUluZGV4ID0gdGhpcy5mdWxsRGF0YUl0ZW1zLm1hcCh4ID0+IHhbdGhpcy5vcHRpb25zLmdyb3VwQnldKS5pbmRleE9mKGdyb3VwQnlWYWx1ZSk7XHJcbiAgICBpZiAoaXNUb0NvbGxhcHNlKSB7XHJcbiAgICAgIC8vIHRvIGNvbGxhcHNlIChGb3IgYW5pbWF0aW9uOiBDaGFuZ2Ugc3RhdHVzLCB0aGVuIGFwcGVuZCBkYXRhKVxyXG4gICAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnkucHVzaChncm91cEJ5VmFsdWUpO1xyXG4gICAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LnB1c2goZmlyc3ROb2RlSW5kZXgpO1xyXG4gICAgICBvZih7fSkucGlwZShkZWxheSg0MDApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIHRvIGV4cGFuZCAoRm9yIGFuaW1hdGlvbjogQXBwZW5kIGRhdGEsIHRoZW4gY2hhbmdlIHN0YXR1cylcclxuICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdCA9IHRoaXMuY29sbGFwc2VkR3JvdXBCeV9GaXJzdE5vZGVJbmRleExpc3QuZmlsdGVyKHggPT4geCAhPSBmaXJzdE5vZGVJbmRleCk7XHJcbiAgICAgIGNvbnN0IHRlbXBDb2xsYXBzZWRHcm91cEJ5ID0gdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmZpbHRlcih4ID0+IHggIT09IGdyb3VwQnlWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZGF0YUl0ZW1zID0gdGhpcy5mdWxsRGF0YUl0ZW1zLmZpbHRlcigoeCwgaW5kZXgpID0+ICF0ZW1wQ29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyh4W3RoaXMub3B0aW9ucy5ncm91cEJ5XSkgfHwgdGhpcy5jb2xsYXBzZWRHcm91cEJ5X0ZpcnN0Tm9kZUluZGV4TGlzdC5pbmNsdWRlcyhpbmRleCkpO1xyXG4gICAgICB0aGlzLmdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gZ3JvdXBCeVZhbHVlO1xyXG4gICAgICBvZih7fSkucGlwZShkZWxheSgwKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gdGVtcENvbGxhcHNlZEdyb3VwQnk7XHJcbiAgICAgICAgICB0aGlzLmdyb3VwQnlWYWx1ZVRvRXhwYW5kID0gZ3JvdXBCeVZhbHVlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXB1dGVEYXRhSXRlbXMoKSB7XHJcbiAgICB0aGlzLmRhdGFJdGVtcyA9IHRoaXMuZnVsbERhdGFJdGVtcy5maWx0ZXIoKHgsIGluZGV4KSA9PiAhdGhpcy5jb2xsYXBzZWRHcm91cEJ5LmluY2x1ZGVzKHhbdGhpcy5vcHRpb25zLmdyb3VwQnldKSB8fCB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0LmluY2x1ZGVzKGluZGV4KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kQWxsKCkge1xyXG4gICAgdGhpcy5ncm91cEJ5VmFsdWVUb0V4cGFuZCA9ICcnO1xyXG4gICAgdGhpcy5jb2xsYXBzZWRHcm91cEJ5ID0gW107XHJcbiAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnlfRmlyc3ROb2RlSW5kZXhMaXN0ID0gW107XHJcbiAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRCeUdyb3VwQnlWYWx1ZXMoZ3JvdXBCeVZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZEdyb3VwQnkgPSB0aGlzLmNvbGxhcHNlZEdyb3VwQnkuZmlsdGVyKHggPT4gIWdyb3VwQnlWYWx1ZS5pbmNsdWRlcyh4KSk7XHJcbiAgICB0aGlzLmNvbXB1dGVEYXRhSXRlbXMoKTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBTZWxlY3Rpb25cclxuICBwdWJsaWMgb3ZlcnJpZGUgb25DbGljayhldmVudDogYW55LCBkYXRhSXRlbTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyB8fCB0cnVlKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldFZhbHVlID0gIWRhdGFJdGVtLklzU2VsZWN0ZWQ7XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuU2VsZWN0T3B0aW9ucyA9PSAnc2luZ2xlJyB8fCB0cnVlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBkdCBvZiB0aGlzLmRhdGFJdGVtcykge1xyXG4gICAgICAgICAgZHQuSXNTZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBkYXRhSXRlbS5Jc1NlbGVjdGVkID0gdGFyZ2V0VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3VwZXIub25DbGljayhldmVudCwgZGF0YUl0ZW0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxufVxyXG4iLCI8ZGl2XHJcbiAgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIlxyXG4gIGNsYXNzPVwiY29udGFpbmVyIGUxdGFnLWNvbnRhaW5lci1zdHlsZVwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlXCJcclxuICBbbmdDbGFzc109XCIoZGF0YS5Db21wb25lbnRTdHlsZVR5cGUgfHwgJycpICsgJyAnICsgKGRhdGEuQ2xhc3MgfHwgJycpXCI+XHJcbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgICAgIFtpdGVtU2l6ZV09XCJvcHRpb25zLml0ZW1TaXplXCJcclxuICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTFcIlxyXG4gICAgICAgIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtdmlld3BvcnQgZTF0YWctY29udGFpbmVyLXN0eWxlMVwiXHJcbiAgICAgICAgW21pbkJ1ZmZlclB4XT1cIm9wdGlvbnMubWluQnVmZmVyUHhcIlxyXG4gICAgICAgIFttYXhCdWZmZXJQeF09XCJvcHRpb25zLm1heEJ1ZmZlclB4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpjZGtWaXJ0dWFsRm9yPVwibGV0IGRhdGFJdGVtIG9mIGRhdGFJdGVtczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICA8ZGl2ICN2aXJ0dWFsc2Nyb2xsY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieSBlMXRhZy1jb250YWluZXItc3R5bGU0XCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGU0XCJcclxuICAgICAgICAgICpuZ0lmPVwib3B0aW9ucy5pc0dyb3VwQnlFbmFibGVkICYmIG9wdGlvbnMuZ3JvdXBCeSAmJiAoIWRhdGFJdGVtc1tpLTFdIHx8IGRhdGFJdGVtW29wdGlvbnMuZ3JvdXBCeV0gIT09IGRhdGFJdGVtc1tpLTFdW29wdGlvbnMuZ3JvdXBCeV0pXCJcclxuICAgICAgICAgIChjbGljayk9XCJncm91cEJ5T25DbGljayhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKVwiIFtjbGFzcy5ncm91cGJ5LWNvbGxhcHNpYmxlXT1cIm9wdGlvbnMuaXNHcm91cEJ5Q29sbGFwc2libGVcIj5cclxuICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwidmlydHVhbC1zY3JvbGwtZ3JvdXBieS1hcnJvdy1pY29uIGUxdGFnLWNvbnRhaW5lci1zdHlsZTVcIlxyXG4gICAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTVcIiAqbmdJZj1cIiEhb3B0aW9ucy5pc0dyb3VwQnlDb2xsYXBzaWJsZVwiXHJcbiAgICAgICAgICAgIFtpY29uXT1cImdldEZvbnRBd2Vzb21lKCdjYXJldC1kb3duJywgZm9udEF3ZVNvbWVTZXJ2aWNlKVwiXHJcbiAgICAgICAgICAgIFtAcm90YXRlQW5pbWF0aW9uXT1cInt2YWx1ZTogY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKSA/ICdyb3RhdGUnIDogJ2RlZmF1bHQnLCBwYXJhbXM6IHtkZWdyZWU6IC05MH19XCI+XHJcbiAgICAgICAgICA8L2ZhLWljb24+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpcnR1YWwtc2Nyb2xsLWdyb3VwYnktbGFiZWwgZTF0YWctY29udGFpbmVyLXN0eWxlNlwiXHJcbiAgICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlLnN0eWxlNlwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbnMuZ3JvdXBCeUxhYmVsVGVtcGxhdGUgPyBnZXRHcm91cEJ5TGFiZWxUZW1wbGF0ZShkYXRhSXRlbSwgb3B0aW9ucykgOiBkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTIgdmlydHVhbC1zY3JvbGwtZGF0YWl0ZW1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIiBbaWRdPVwiZGF0YS5OYW1lICsgJ18nICsgZGF0YUl0ZW0/LlZhbHVlPy5JZCB8fCAnJ1wiXHJcbiAgICAgICAgICBbY2xhc3MudmlydHVhbC1zY3JvbGwtaXRlbS1zZWxlY3RlZF09XCIhIWRhdGFJdGVtLklzU2VsZWN0ZWRcIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YUl0ZW1cIiBbaW5uZXJIVE1MXT1cIm9wdGlvbnMubG9hZGluZ0xhYmVsIHwgaHRtbFNhbml0aXplXCI+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YUl0ZW0uTGFiZWxcIiBbaW5uZXJIVE1MXT1cImRhdGFJdGVtLkxhYmVsIHwgaHRtbFNhbml0aXplXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuaXNHcm91cEJ5RW5hYmxlZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJvcHRpb25zLml0ZW1TaXplXCIgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwib3B0aW9ucy5pdGVtU2l6ZVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZS5zdHlsZTJcIiBjbGFzcz1cImUxdGFnLWNvbnRhaW5lci1zdHlsZTIgdmlydHVhbC1zY3JvbGwtZGF0YWl0ZW1cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50LCBkYXRhSXRlbSlcIiBbaWRdPVwiZGF0YS5OYW1lICsgJ18nICsgZGF0YUl0ZW0/LlZhbHVlPy5JZCB8fCAnJ1wiXHJcbiAgICAgICAgICBbQGNvbGxhcHNlQW5pbWF0aW9uXT1cInt2YWx1ZTogISFvcHRpb25zLmdyb3VwQnkgJiYgY29sbGFwc2VkR3JvdXBCeS5pbmNsdWRlcyhkYXRhSXRlbVtvcHRpb25zLmdyb3VwQnldKSA/ICdjb2xsYXBzZScgOiAnZGVmYXVsdCd9XCJcclxuICAgICAgICAgIFtjbGFzcy5ncm91cGJ5LXZhbHVlLWV4cGFuZF09XCJncm91cEJ5VmFsdWVUb0V4cGFuZCA9PSAoZGF0YUl0ZW1bb3B0aW9ucy5ncm91cEJ5XSlcIlxyXG4gICAgICAgICAgW2NsYXNzLnZpcnR1YWwtc2Nyb2xsLWl0ZW0tc2VsZWN0ZWRdPVwiISFkYXRhSXRlbS5Jc1NlbGVjdGVkXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGFJdGVtXCIgW2lubmVySFRNTF09XCJvcHRpb25zLmxvYWRpbmdMYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFJdGVtLkxhYmVsXCIgW2lubmVySFRNTF09XCJkYXRhSXRlbS5MYWJlbCB8IGh0bWxTYW5pdGl6ZVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGFwcC1jb250ZXh0LW1lbnUgKm5nSWY9XCJkYXRhLkNvbnRleHRNZW51U2V0dGluZ3NcIiBbZGF0YV09XCJkYXRhXCIgW2dyb3VwXT1cImdyb3VwXCIgW2Zvcm1dPVwiZm9ybVwiIFt0YXJnZXRdPVwidmlydHVhbHNjcm9sbGNvbnRlbnRcIiBbc2VsZWN0ZWREYXRhXT1cImRhdGFJdGVtXCI+PC9hcHAtY29udGV4dC1tZW51PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8YXBwLXpmb3JtY29udHJvbCAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZm9vdGVyRmllbGRzXCIgW2ZpZWxkXT1cImZpZWxkXCIgW2NvbnRhaW5lckZpZWxkXT1cImRhdGFcIiBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICBbZm9ybV09XCJmb3JtXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUuc3R5bGUzXCIgY2xhc3M9XCJlMXRhZy1jb250YWluZXItc3R5bGUzXCI+XHJcbiAgICA8L2FwcC16Zm9ybWNvbnRyb2w+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -154,7 +154,7 @@ export class ZbuttonsComponent extends ButtonFieldBase {
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
ZbuttonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZbuttonsComponent, deps: [{ token: i1.ZComponentService }, { token: i2.FieldService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
-
ZbuttonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZbuttonsComponent, selector: "app-zbuttons", usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n\r\n <div class=\"ion-margin-vertical e1tag-style1\" *ngIf=\"isMobileScreen() && items.length > 1 && FirstZbtn === false\"\r\n [style]=\"componentProperties.style.style1\">\r\n <kendo-dropdownbutton [data]=\"items\" size=\"large\" [look]=\"'outline'\"\r\n class=\"ion-activatable ripple-parent e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n Actions\r\n <ng-template kendoDropDownButtonItemTemplate let-dataItem>\r\n <!-- <span class=\"k-icon k-i-{{ dataItem.icon }}\"></span> -->\r\n <span (click)=\"buttonClick(dataItem)\">{{ dataItem.text }}</span>\r\n </ng-template>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </kendo-dropdownbutton>\r\n </div>\r\n\r\n <div *ngIf=\"!isMobileScreen() || items.length === 1 \" [ngClass]=\"data.DivClass\" class=\"btn-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n <div class=\"btn-left e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <ng-container *ngFor=\"let item of leftBtns; let i = index\">\r\n <ion-button [fill]=\"item.fill\" *ngIf=\"item.Type === 'a'\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style5 + ' ' + item.style\"\r\n class=\"e1tag-style5\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n </div>\r\n </ion-button>\r\n <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ? item.DivClass : 'flex-hide')\"\r\n [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n </ng-container>\r\n </div>\r\n <div class=\"btn-right e1tag-style6\" [style]=\"componentProperties.style.style6\">\r\n <ng-container *ngFor=\"let item of rightBtns; let i = index\">\r\n <ion-button *ngIf=\"item.Type === 'a'\" [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style7 + ' ' + item.style\"\r\n class=\"e1tag-style7\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n </div>\r\n </ion-button>\r\n <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ? item.DivClass : 'flex-hide')\"\r\n [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.btn-container{padding:5px 0;display:flex;flex-direction:row;justify-content:space-between}ion-button{font-size:var(--button-font-size);margin-left:10px;--border-radius: var(--button-border-radius);--box-shadow: 1px 2px 4px 0px rgba(0, 0, 0, .25)}ion-button.useCustomClass{--background-hover-opacity: 1;--border-width: 2px;--border-style: solid;--background: #fff;--background-hover: rgba(var(--ion-color-primary-rgb), .05);--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary-light{--background: rgba(var(--ion-color-primary-rgb), .05);--background-hover: #fff;--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary{--background: var(--ion-color-primary);--background-hover: var(--ion-color-primary-tint);--color: var(--ion-color-primary-contrast);--border-color: var(--ion-color-primary-shade)}ion-button.success{--background: var(--ion-color-success);--background-hover: var(--ion-color-success-tint);--color: var(--ion-color-success-contrast);--border-color: var(--ion-color-success-shade)}ion-button.danger{--background: var(--ion-color-danger);--background-hover: var(--ion-color-danger-tint2);--color: var(--ion-color-danger-contrast);--border-color: var(--ion-color-danger-shade)}ion-button.warning{--background: var(--ion-color-warning);--background-hover: var(--ion-color-warning-tint);--color: #000;--border-color: var(--ion-color-warning-shade)}ion-button.no-shadow{--box-shadow: none}.btn-label{padding-left:8px}\n"], components: [{ type: i3.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["icon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "
|
|
157
|
+
ZbuttonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: ZbuttonsComponent, selector: "app-zbuttons", usesInheritance: true, ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n\r\n <div class=\"ion-margin-vertical e1tag-style1\" *ngIf=\"isMobileScreen() && items.length > 1 && FirstZbtn === false\"\r\n [style]=\"componentProperties.style.style1\">\r\n <kendo-dropdownbutton [data]=\"items\" size=\"large\" [look]=\"'outline'\"\r\n class=\"ion-activatable ripple-parent e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n Actions\r\n <ng-template kendoDropDownButtonItemTemplate let-dataItem>\r\n <!-- <span class=\"k-icon k-i-{{ dataItem.icon }}\"></span> -->\r\n <span (click)=\"buttonClick(dataItem)\">{{ dataItem.text }}</span>\r\n </ng-template>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </kendo-dropdownbutton>\r\n </div>\r\n\r\n <div *ngIf=\"!isMobileScreen() || items.length === 1 \" [ngClass]=\"data.DivClass\" class=\"btn-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n <div class=\"btn-left e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <ng-container *ngFor=\"let item of leftBtns; let i = index\">\r\n <ion-button [fill]=\"item.fill\" *ngIf=\"item.Type === 'a'\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style5 + ' ' + item.style\"\r\n class=\"e1tag-style5\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n </div>\r\n </ion-button>\r\n <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ? item.DivClass : 'flex-hide')\"\r\n [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n </ng-container>\r\n </div>\r\n <div class=\"btn-right e1tag-style6\" [style]=\"componentProperties.style.style6\">\r\n <ng-container *ngFor=\"let item of rightBtns; let i = index\">\r\n <ion-button *ngIf=\"item.Type === 'a'\" [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style7 + ' ' + item.style\"\r\n class=\"e1tag-style7\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n </div>\r\n </ion-button>\r\n <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ? item.DivClass : 'flex-hide')\"\r\n [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.btn-container{padding:5px 0;display:flex;flex-direction:row;justify-content:space-between}ion-button{font-size:var(--button-font-size);margin-left:10px;--border-radius: var(--button-border-radius);--box-shadow: 1px 2px 4px 0px rgba(0, 0, 0, .25)}ion-button.useCustomClass{--background-hover-opacity: 1;--border-width: 2px;--border-style: solid;--background: #fff;--background-hover: rgba(var(--ion-color-primary-rgb), .05);--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary-light{--background: rgba(var(--ion-color-primary-rgb), .05);--background-hover: #fff;--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary{--background: var(--ion-color-primary);--background-hover: var(--ion-color-primary-tint);--color: var(--ion-color-primary-contrast);--border-color: var(--ion-color-primary-shade)}ion-button.success{--background: var(--ion-color-success);--background-hover: var(--ion-color-success-tint);--color: var(--ion-color-success-contrast);--border-color: var(--ion-color-success-shade)}ion-button.danger{--background: var(--ion-color-danger);--background-hover: var(--ion-color-danger-tint2);--color: var(--ion-color-danger-contrast);--border-color: var(--ion-color-danger-shade)}ion-button.warning{--background: var(--ion-color-warning);--background-hover: var(--ion-color-warning-tint);--color: #000;--border-color: var(--ion-color-warning-shade)}ion-button.no-shadow{--box-shadow: none}.btn-label{padding-left:8px}\n"], components: [{ type: i3.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["icon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { type: i4.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i6.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ButtonItemTemplateDirective, selector: "[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]" }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
158
158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ZbuttonsComponent, decorators: [{
|
|
159
159
|
type: Component,
|
|
160
160
|
args: [{ selector: "app-zbuttons", template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && items.length > 0\"\r\n [style]=\"componentProperties.style.style\" class=\"e1tag-style\">\r\n\r\n <div class=\"ion-margin-vertical e1tag-style1\" *ngIf=\"isMobileScreen() && items.length > 1 && FirstZbtn === false\"\r\n [style]=\"componentProperties.style.style1\">\r\n <kendo-dropdownbutton [data]=\"items\" size=\"large\" [look]=\"'outline'\"\r\n class=\"ion-activatable ripple-parent e1tag-style2\" [style]=\"componentProperties.style.style2\">\r\n Actions\r\n <ng-template kendoDropDownButtonItemTemplate let-dataItem>\r\n <!-- <span class=\"k-icon k-i-{{ dataItem.icon }}\"></span> -->\r\n <span (click)=\"buttonClick(dataItem)\">{{ dataItem.text }}</span>\r\n </ng-template>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </kendo-dropdownbutton>\r\n </div>\r\n\r\n <div *ngIf=\"!isMobileScreen() || items.length === 1 \" [ngClass]=\"data.DivClass\" class=\"btn-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n <div class=\"btn-left e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <ng-container *ngFor=\"let item of leftBtns; let i = index\">\r\n <ion-button [fill]=\"item.fill\" *ngIf=\"item.Type === 'a'\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style5 + ' ' + item.style\"\r\n class=\"e1tag-style5\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n </div>\r\n </ion-button>\r\n <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ? item.DivClass : 'flex-hide')\"\r\n [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n </ng-container>\r\n </div>\r\n <div class=\"btn-right e1tag-style6\" [style]=\"componentProperties.style.style6\">\r\n <ng-container *ngFor=\"let item of rightBtns; let i = index\">\r\n <ion-button *ngIf=\"item.Type === 'a'\" [fill]=\"item.fill\" [size]=\"item.size\" [color]=\"item.color\" strong=\"true\"\r\n [ngClass]=\"item.class\" (click)=\"buttonClick(item)\" [hidden]=\"!isBtnVisible(item.visible)\"\r\n [disabled]=\"group.isTriggered || item.disabled\" [style]=\"componentProperties.style.style7 + ' ' + item.style\"\r\n class=\"e1tag-style7\">\r\n <div class=\"button-content-container e1tag-style8\" [style]=\"componentProperties.style.style8\">\r\n <fa-icon class=\"btn-icon e1tag-style9\" [style]=\"componentProperties.style.style9\" *ngIf=\"item.icon\"\r\n [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\"></fa-icon>\r\n <span class=\"ion-text-capitalize e1tag-style10\" [style]=\"componentProperties.style.style10\"\r\n *ngIf=\"item.text && item.showLabel\" [class.btn-label]=\"item.icon\">{{item.text}}</span>\r\n </div>\r\n </ion-button>\r\n <app-zformcontrol *ngIf=\"item.Type !== 'a'\"\r\n [ngClass]=\"group[item['isVisibleField']] ? item.DivClass :((item.Visible === true) ? item.DivClass : 'flex-hide')\"\r\n [field]=\"item\" [group]=\"group\" [form]=\"form\" id=\"{{item.Type}}-{{item.Name}}\"></app-zformcontrol>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.btn-container{padding:5px 0;display:flex;flex-direction:row;justify-content:space-between}ion-button{font-size:var(--button-font-size);margin-left:10px;--border-radius: var(--button-border-radius);--box-shadow: 1px 2px 4px 0px rgba(0, 0, 0, .25)}ion-button.useCustomClass{--background-hover-opacity: 1;--border-width: 2px;--border-style: solid;--background: #fff;--background-hover: rgba(var(--ion-color-primary-rgb), .05);--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary-light{--background: rgba(var(--ion-color-primary-rgb), .05);--background-hover: #fff;--color: var(--ion-color-primary);--border-color: var(--ion-color-primary)}ion-button.primary{--background: var(--ion-color-primary);--background-hover: var(--ion-color-primary-tint);--color: var(--ion-color-primary-contrast);--border-color: var(--ion-color-primary-shade)}ion-button.success{--background: var(--ion-color-success);--background-hover: var(--ion-color-success-tint);--color: var(--ion-color-success-contrast);--border-color: var(--ion-color-success-shade)}ion-button.danger{--background: var(--ion-color-danger);--background-hover: var(--ion-color-danger-tint2);--color: var(--ion-color-danger-contrast);--border-color: var(--ion-color-danger-shade)}ion-button.warning{--background: var(--ion-color-warning);--background-hover: var(--ion-color-warning-tint);--color: #000;--border-color: var(--ion-color-warning-shade)}ion-button.no-shadow{--box-shadow: none}.btn-label{padding-left:8px}\n"] }]
|