mmhglobal-dynamicform 2.12.2 → 2.12.4

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.
@@ -1624,7 +1624,7 @@ class ZformComponent {
1624
1624
  this.fieldService.incrementComponentCounter(field.FieldElementName);
1625
1625
  }
1626
1626
  if (isFormControl === true) {
1627
- const validators = ZComponentHelper.getValidators(field, isVisible, isRequired);
1627
+ const validators = ZComponentHelper.getValidators(field, isVisible, isRequired, this.group);
1628
1628
  formControls[field.Value] = new FormControl(this.group.zModel[field.Value], validators);
1629
1629
  if (ZComponentHelper.hasCCField(field.Type)) {
1630
1630
  const ccValidators = ZComponentHelper.getCCValidators(field, isVisible, isRequired);
@@ -1928,7 +1928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
1928
1928
  // import { ZComponentHelper, ZComponentOutputEvent, ModalPageParams, ZGrid } from '../dynamicform/zcomponent.model';
1929
1929
  // import { ZGroup, ZField } from '../model/zgroup.model';
1930
1930
  class MainService {
1931
- constructor(router, activatedRoute, modalCtrl, navController, alertService, cacheService, fieldService, resourceApiService, componentErrorHandlerService, webApiService, zcoreService, modalService, storageService, debugService, translationService, signalrService, dialogService, oauth2Service, sharepointService, toastService) {
1931
+ constructor(router, activatedRoute, modalCtrl, navController, alertService, cacheService, fieldService, resourceApiService, componentErrorHandlerService, webApiService, zcoreService, modalService, storageService, debugService, translationService, signalrService, dialogService, oauth2Service, toastService, authService) {
1932
1932
  this.router = router;
1933
1933
  this.activatedRoute = activatedRoute;
1934
1934
  this.modalCtrl = modalCtrl;
@@ -1947,8 +1947,8 @@ class MainService {
1947
1947
  this.signalrService = signalrService;
1948
1948
  this.dialogService = dialogService;
1949
1949
  this.oauth2Service = oauth2Service;
1950
- this.sharepointService = sharepointService;
1951
1950
  this.toastService = toastService;
1951
+ this.authService = authService;
1952
1952
  this.backNavigationPath = [];
1953
1953
  this.routeParam = [];
1954
1954
  this.currentUrl = '';
@@ -3009,64 +3009,70 @@ class MainService {
3009
3009
  }
3010
3010
  alertFormModified(formId, group, resp, eventName) {
3011
3011
  var _a;
3012
- // TODO: 20230830: need to further enhance handling data refresh if there linked child/Id at same page. currently unsure how to pull the linked child record.
3013
3012
  if (!resp) {
3014
3013
  return false;
3015
3014
  }
3016
3015
  const respResult = JSON.parse(resp);
3016
+ if (!respResult.UserName) {
3017
+ return false;
3018
+ }
3017
3019
  if (formId === ((_a = respResult.Id) === null || _a === void 0 ? void 0 : _a.toString()) && eventName === window.location.href) {
3018
- if (respResult.Action === ActionType.Delete) {
3019
- this.alertService.show("Record Deleted by Another User", "The current record has been deleted by another user.", [
3020
- { text: "OK", cssClass: "primary" }
3021
- ], ["col-6"], undefined, true).pipe(switchMap((reply) => {
3022
- if (reply === "OK") {
3023
- this.navigateBackToPreviousPage(group);
3024
- return of(true);
3025
- }
3026
- })).subscribe();
3027
- }
3028
- else if (respResult.Action === ActionType.Update) {
3029
- this.webApiService.httpGet$(`${this.group.resourceURL}/${formId}`, null).subscribe(resp => {
3030
- var _a;
3031
- if (resp && resp.RowVersion) {
3032
- // Find properties starting with 'zworkflowbuttons_'
3033
- const workflowButtons = [];
3034
- for (const key in this.group.zComponents) {
3035
- if (key.startsWith("zworkflowbuttons_")) {
3036
- workflowButtons.push(this.group.zComponents[key]);
3037
- }
3038
- }
3039
- if (resp.RowVersion !== ((_a = this.group.zModel) === null || _a === void 0 ? void 0 : _a.RowVersion)) {
3040
- this.alertService.show("The current page has been modified by other users.", "Would you like to refresh the page data?", [
3041
- { text: "No", cssClass: "secondary" },
3042
- { text: "Yes", cssClass: "primary" }
3043
- ], ["col-6"], undefined, true).pipe(switchMap((reply) => {
3044
- if (reply === "Yes") {
3045
- this.group.zModel = resp;
3046
- const fg = this.group.form;
3047
- fg.patchValue(this.group.zModel);
3048
- fg.markAsPristine();
3049
- //reload workflow buttons
3050
- workflowButtons.forEach(buttons => {
3051
- buttons.loadButton();
3052
- });
3053
- return of(true);
3054
- }
3055
- workflowButtons.forEach(buttons => {
3056
- buttons.removeGotoButton();
3057
- });
3058
- this.toastService.showPermanently('The data on the current page is not up to date, as it has been saved and overwritten by another user. Please refresh the page.', 'top', 'warning');
3059
- return of(false);
3060
- })).subscribe();
3020
+ if (respResult.UserName === this.authService.e1Token.myProfile.UserName) {
3021
+ if (respResult.Action === ActionType.Update) {
3022
+ this.reloadDataAndWorkflowButton(resp);
3023
+ }
3024
+ }
3025
+ else {
3026
+ if (respResult.Action === ActionType.Delete) {
3027
+ this.alertService.show("Record Deleted by Another User", "The current record has been deleted by another user.", [
3028
+ { text: "OK", cssClass: "primary" }
3029
+ ], ["col-6"], undefined, true).pipe(switchMap((reply) => {
3030
+ if (reply === "OK") {
3031
+ this.navigateBackToPreviousPage(group);
3032
+ return of(true);
3061
3033
  }
3062
- else {
3063
- console.log(`Alert received regarding form modification, RowVersion remains unaltered. No further action has been taken.`);
3034
+ })).subscribe();
3035
+ }
3036
+ else if (respResult.Action === ActionType.Update) {
3037
+ this.webApiService.httpGet$(`${this.group.resourceURL}/${formId}`, null).subscribe(resp => {
3038
+ var _a;
3039
+ if (resp && resp.RowVersion) {
3040
+ if (resp.RowVersion !== ((_a = this.group.zModel) === null || _a === void 0 ? void 0 : _a.RowVersion)) {
3041
+ this.alertService.show("The current page has been modified by other users.", "Would you like to refresh the page data?", [
3042
+ { text: "No", cssClass: "secondary" },
3043
+ { text: "Yes", cssClass: "primary" }
3044
+ ], ["col-6"], undefined, true).pipe(switchMap((reply) => {
3045
+ if (reply === "Yes") {
3046
+ this.reloadDataAndWorkflowButton(resp);
3047
+ return of(true);
3048
+ }
3049
+ this.toastService.showPermanently('The data on the current page is not up to date, as it has been saved and overwritten by another user. Please refresh the page.', 'top', 'warning');
3050
+ return of(false);
3051
+ })).subscribe();
3052
+ }
3053
+ else {
3054
+ console.log(`Alert received regarding form modification, RowVersion remains unaltered. No further action has been taken.`);
3055
+ }
3064
3056
  }
3065
- }
3066
- });
3057
+ });
3058
+ }
3067
3059
  }
3068
3060
  }
3069
3061
  }
3062
+ reloadDataAndWorkflowButton(zModel) {
3063
+ this.group.zModel = zModel;
3064
+ const fg = this.group.form;
3065
+ fg.patchValue(this.group.zModel);
3066
+ fg.markAsPristine();
3067
+ // Capture all workflow buttons
3068
+ const workflowButtons = Object.keys(this.group.zComponents)
3069
+ .filter(key => key.startsWith("zworkflowbuttons_"))
3070
+ .map(key => this.group.zComponents[key]);
3071
+ // Reload workflow buttons
3072
+ workflowButtons.forEach(button => {
3073
+ button.loadButton();
3074
+ });
3075
+ }
3070
3076
  //#endregion
3071
3077
  // #region DEC
3072
3078
  loadContainerView(elementContainer, containerPage, data, group) {
@@ -3120,14 +3126,14 @@ class MainService {
3120
3126
  }
3121
3127
  }
3122
3128
  }
3123
- MainService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MainService, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2$1.ModalController }, { token: i2$1.NavController }, { token: i2.AlertService }, { token: i2.CacheService }, { token: i2.FieldService }, { token: i2.ResourceApiService }, { token: i2.ComponentErrorHandlerService }, { token: i2.WebApiService }, { token: i2.ZCoreService }, { token: i3.ModalService }, { token: i2.StorageSessionService }, { token: ZComponentDebugService }, { token: i2.TranslationService }, { token: i2.SignalrService }, { token: i1$2.DialogService }, { token: i2.OAuth2Service }, { token: i2.SharePointService }, { token: i2.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
3129
+ MainService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MainService, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2$1.ModalController }, { token: i2$1.NavController }, { token: i2.AlertService }, { token: i2.CacheService }, { token: i2.FieldService }, { token: i2.ResourceApiService }, { token: i2.ComponentErrorHandlerService }, { token: i2.WebApiService }, { token: i2.ZCoreService }, { token: i3.ModalService }, { token: i2.StorageSessionService }, { token: ZComponentDebugService }, { token: i2.TranslationService }, { token: i2.SignalrService }, { token: i1$2.DialogService }, { token: i2.OAuth2Service }, { token: i2.ToastService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
3124
3130
  MainService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MainService, providedIn: 'root' });
3125
3131
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MainService, decorators: [{
3126
3132
  type: Injectable,
3127
3133
  args: [{
3128
3134
  providedIn: 'root',
3129
3135
  }]
3130
- }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2$1.ModalController }, { type: i2$1.NavController }, { type: i2.AlertService }, { type: i2.CacheService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.ComponentErrorHandlerService }, { type: i2.WebApiService }, { type: i2.ZCoreService }, { type: i3.ModalService }, { type: i2.StorageSessionService }, { type: ZComponentDebugService }, { type: i2.TranslationService }, { type: i2.SignalrService }, { type: i1$2.DialogService }, { type: i2.OAuth2Service }, { type: i2.SharePointService }, { type: i2.ToastService }]; } });
3136
+ }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2$1.ModalController }, { type: i2$1.NavController }, { type: i2.AlertService }, { type: i2.CacheService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.ComponentErrorHandlerService }, { type: i2.WebApiService }, { type: i2.ZCoreService }, { type: i3.ModalService }, { type: i2.StorageSessionService }, { type: ZComponentDebugService }, { type: i2.TranslationService }, { type: i2.SignalrService }, { type: i1$2.DialogService }, { type: i2.OAuth2Service }, { type: i2.ToastService }, { type: i2.AuthService }]; } });
3131
3137
  function refreshGrid(group) {
3132
3138
  const zgridControl = group["gridOptions"];
3133
3139
  if (zgridControl) {
@@ -3188,16 +3194,7 @@ class ZGridBindingDirective extends DataBindingDirective {
3188
3194
  }
3189
3195
  return;
3190
3196
  }
3191
- const array = this.resourceURL.split("/api/");
3192
- if (!!array[1]) {
3193
- array[1] = "Page" + array[1];
3194
- this.paginationApiPostUrl = array.join("/api/");
3195
- }
3196
- else {
3197
- const arr = this.resourceURL.split("/");
3198
- arr[arr.length - 2] = "Page" + arr[arr.length - 2];
3199
- this.paginationApiPostUrl = arr.join("/");
3200
- }
3197
+ this.setResourceUrl(this.resourceURL);
3201
3198
  this.setFilterParamsByParentRefId();
3202
3199
  }
3203
3200
  // this.gridSubject.next(this);
@@ -3218,6 +3215,18 @@ class ZGridBindingDirective extends DataBindingDirective {
3218
3215
  this.generateGridColumns();
3219
3216
  }
3220
3217
  }
3218
+ setResourceUrl(resourceUrl) {
3219
+ const array = resourceUrl.split("/api/");
3220
+ if (!!array[1]) {
3221
+ array[1] = "Page" + array[1];
3222
+ this.paginationApiPostUrl = array.join("/api/");
3223
+ }
3224
+ else {
3225
+ const arr = this.resourceURL.split("/");
3226
+ arr[arr.length - 2] = "Page" + arr[arr.length - 2];
3227
+ this.paginationApiPostUrl = arr.join("/");
3228
+ }
3229
+ }
3221
3230
  setFilterParamsByParentRefId() {
3222
3231
  // Use field own referenceId if available
3223
3232
  const refId = this.getFieldReferenceId() || this.grp.referenceId;
@@ -4460,7 +4469,7 @@ class UipageComponent {
4460
4469
  this.setupRouteParams(routeParam);
4461
4470
  }
4462
4471
  else {
4463
- console.warn("Error in uipage init.");
4472
+ console.warn("routeParam is undefined.");
4464
4473
  }
4465
4474
  }), switchMap(() => {
4466
4475
  const formType = isListForm ? FieldType.listField : FieldType.formField;
@@ -9161,7 +9170,7 @@ class ZgridComponent extends DataListingFieldBase {
9161
9170
  gridCols.forEach(c => {
9162
9171
  const isVisible = ZComponentHelper.isVisibleFormControl(this, c.field);
9163
9172
  const isRequired = ZComponentHelper.isRequiredFormControl(this, c.field);
9164
- const validators = ZComponentHelper.getValidators(c.field, isVisible, isRequired);
9173
+ const validators = ZComponentHelper.getValidators(c.field, isVisible, isRequired, this.group);
9165
9174
  items[c.field] = new FormControl(d[c.field], validators);
9166
9175
  });
9167
9176
  const formGroup = new FormGroup(items);
@@ -10498,7 +10507,7 @@ class ZtabComponent extends ContainerFieldBase {
10498
10507
  Label: field.Label,
10499
10508
  Icon: field.Icon ? field.Icon : null,
10500
10509
  Visible: ZComponentHelper.getGroupValue(field.Visible, this.group),
10501
- Counter: typeof (field["Counter"]) === "string" ? ZComponentHelper.getGroupValue(field["Counter"], this.group) : field["Counter"],
10510
+ Counter: typeof (field.Counter) === "string" ? ZComponentHelper.getGroupValue(field.Counter, this.group) : field.Counter,
10502
10511
  Index: ind++
10503
10512
  });
10504
10513
  }
@@ -10558,7 +10567,7 @@ class ZtabComponent extends ContainerFieldBase {
10558
10567
  }
10559
10568
  }
10560
10569
  }
10561
- let tabSelections = "tabSelections" in this.group ? this.group['tabSelections'] : null;
10570
+ let tabSelections = ("tabSelections" in this.group ? this.group['tabSelections'] : null);
10562
10571
  if (tabSelections !== null && tabSelections.has(this.data.Name)) { // subsequent loads
10563
10572
  this.state.lastSelectedTabIndex = tabSelections.get(this.data.Name);
10564
10573
  }
@@ -11690,7 +11699,7 @@ class ZudfComponent extends ContainerFieldBase {
11690
11699
  this.toastService = toastService;
11691
11700
  this.componentErrorHandlerService = componentErrorHandlerService;
11692
11701
  this.cdr = cdr;
11693
- // formFields: any[]; // populate using field element.
11702
+ // formFields: any[]; // populate using field element.
11694
11703
  this.componentProperties = new ZComponentProperties();
11695
11704
  this.prefixValueOption = '_zudfmvgOptions';
11696
11705
  this.prefixDataSourceName = '_zudfmvgDataSource';
@@ -12050,7 +12059,7 @@ class ZudfComponent extends ContainerFieldBase {
12050
12059
  });
12051
12060
  }
12052
12061
  // validator for the component
12053
- const validators = ZComponentHelper.getValidators(field, isVisible, isRequired);
12062
+ const validators = ZComponentHelper.getValidators(field, isVisible, isRequired, this.group);
12054
12063
  formControls[field.Value] = new FormControl(zudfGroup.zModel[field.Value], validators);
12055
12064
  if (ZComponentHelper.hasCCField(field.Type)) {
12056
12065
  const ccValidators = ZComponentHelper.getCCValidators(field, isVisible, isRequired);
@@ -12099,7 +12108,7 @@ class ZudfComponent extends ContainerFieldBase {
12099
12108
  const patchedModelData = this.addZModelPropertyPrefix(modelData);
12100
12109
  // Update the zModel values of the form group
12101
12110
  Object.assign(group[this.componentScopeName].zModel, patchedModelData);
12102
- // Update grid values for any arrays in the model data base on kcard component.
12111
+ // Update grid values for any arrays in the model data base on kcard component.
12103
12112
  for (const model in patchedModelData) {
12104
12113
  if (Array.isArray(patchedModelData[model])) {
12105
12114
  const gridValue = `${model}${this.prefixValueOption}`;
@@ -12362,7 +12371,7 @@ class ZudfComponent extends ContainerFieldBase {
12362
12371
  });
12363
12372
  this.group[gridDataSourceName] = [];
12364
12373
  this.group[gridColumnFieldsName] = groupFieldElements;
12365
- // Create grid column based on field elements and insert them into the grid.
12374
+ // Create grid column based on field elements and insert them into the grid.
12366
12375
  this.group[`${name}${this.prefixCustomAddButtonOnClick}`] = this.captureContainerFieldValueToModel.bind(this, this.group, gridValueName, gridDataSourceName, containerName);
12367
12376
  this.group[`${name}${this.prefixCustomResetButtonOnClick}`] = this.clearContainerRelatedFieldValue.bind(this, this.group, containerName);
12368
12377
  this.group[`${name}${this.prefixCustomRemoveButtonOnClick}`] = this.removeGridRow.bind(this, gridValueName, gridDataSourceName);
@@ -13326,7 +13335,7 @@ class ZloopComponent extends ContainerFieldBase {
13326
13335
  const isVisible = ZComponentHelper.isVisibleFormControl(this, field);
13327
13336
  const isRequired = ZComponentHelper.isRequiredFormControl(this, field);
13328
13337
  if (isFormControl === true) {
13329
- const validators = ZComponentHelper.getValidators(field, isVisible, isRequired);
13338
+ const validators = ZComponentHelper.getValidators(field, isVisible, isRequired, this.group);
13330
13339
  this.group.form.addControl(field.Value, new FormControl(this.group.zModel[field.Value], validators));
13331
13340
  this.clonedFormControlList.push(field.Value);
13332
13341
  if (ZComponentHelper.hasCCField(field.Type)) {
@@ -13355,10 +13364,10 @@ class KsplitterComponent extends ContainerFieldBase {
13355
13364
  }
13356
13365
  }
13357
13366
  KsplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: KsplitterComponent, deps: [{ token: ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
13358
- KsplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: KsplitterComponent, selector: "app-ksplitter", usesInheritance: true, ngImport: i0, template: "<div class=\"ksplitter-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n <kendo-splitter [orientation]=\"data.Orientation || 'horizontal'\" class=\"e1tag-container-style1\"\r\n [style]=\"componentProperties.containerStyle.style1\">\r\n <kendo-splitter-pane *ngFor=\"let item of data.TabItems; let i = index\"\r\n [resizable]=\"item.Resizable != undefined ? item.Resizable : true\"\r\n [collapsible]=\"item.AllowCollapse != undefined ? item.AllowCollapse : true\" [size]=\"item.Size\"\r\n class=\"e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + item.Style\"\r\n [min]=\"item.MinWidth\" [max]=\"item.MaxWidth\">\r\n <app-zdiv [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\"\r\n [data]=\"data | tabfilter: i + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </kendo-splitter-pane>\r\n </kendo-splitter>\r\n</div>\r\n", styles: [""], components: [{ type: i2$4.SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "resizeStep"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { type: i2$4.SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "separatorLabel", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { type: ZdivComponent, selector: "app-zdiv" }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.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: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "tabfilter": TabFilter } });
13367
+ KsplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: KsplitterComponent, selector: "app-ksplitter", usesInheritance: true, ngImport: i0, template: "<div class=\"ksplitter-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n <kendo-splitter [orientation]=\"data.Orientation || 'horizontal'\" class=\"e1tag-container-style1\"\r\n [style]=\"componentProperties.containerStyle.style1\">\r\n <kendo-splitter-pane *ngFor=\"let item of data.PanelItems; let i = index\"\r\n [resizable]=\"item.Resizable != undefined ? item.Resizable : true\"\r\n [collapsible]=\"item.AllowCollapse != undefined ? item.AllowCollapse : true\" [size]=\"item.Size\"\r\n class=\"e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + item.Style\"\r\n [min]=\"item.MinWidth\" [max]=\"item.MaxWidth\">\r\n <app-zdiv [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\"\r\n [data]=\"data | tabfilter: i + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </kendo-splitter-pane>\r\n </kendo-splitter>\r\n</div>\r\n", styles: [""], components: [{ type: i2$4.SplitterComponent, selector: "kendo-splitter", inputs: ["orientation", "resizeStep"], outputs: ["layoutChange"], exportAs: ["kendoSplitter"] }, { type: i2$4.SplitterPaneComponent, selector: "kendo-splitter-pane", inputs: ["order", "size", "separatorLabel", "min", "max", "resizable", "collapsible", "scrollable", "collapsed", "orientation", "containsSplitter", "overlayContent"], outputs: ["sizeChange", "collapsedChange"], exportAs: ["kendoSplitterPane"] }, { type: ZdivComponent, selector: "app-zdiv" }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.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: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "tabfilter": TabFilter } });
13359
13368
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: KsplitterComponent, decorators: [{
13360
13369
  type: Component,
13361
- args: [{ selector: "app-ksplitter", template: "<div class=\"ksplitter-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n <kendo-splitter [orientation]=\"data.Orientation || 'horizontal'\" class=\"e1tag-container-style1\"\r\n [style]=\"componentProperties.containerStyle.style1\">\r\n <kendo-splitter-pane *ngFor=\"let item of data.TabItems; let i = index\"\r\n [resizable]=\"item.Resizable != undefined ? item.Resizable : true\"\r\n [collapsible]=\"item.AllowCollapse != undefined ? item.AllowCollapse : true\" [size]=\"item.Size\"\r\n class=\"e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + item.Style\"\r\n [min]=\"item.MinWidth\" [max]=\"item.MaxWidth\">\r\n <app-zdiv [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\"\r\n [data]=\"data | tabfilter: i + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </kendo-splitter-pane>\r\n </kendo-splitter>\r\n</div>\r\n", styles: [""] }]
13370
+ args: [{ selector: "app-ksplitter", template: "<div class=\"ksplitter-container e1tag-container-style\"\r\n *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"data.Class\" [style]=\"componentProperties.containerStyle.style\" [class]=\"data.ComponentStyleType\">\r\n <kendo-splitter [orientation]=\"data.Orientation || 'horizontal'\" class=\"e1tag-container-style1\"\r\n [style]=\"componentProperties.containerStyle.style1\">\r\n <kendo-splitter-pane *ngFor=\"let item of data.PanelItems; let i = index\"\r\n [resizable]=\"item.Resizable != undefined ? item.Resizable : true\"\r\n [collapsible]=\"item.AllowCollapse != undefined ? item.AllowCollapse : true\" [size]=\"item.Size\"\r\n class=\"e1tag-container-style2\" [style]=\"componentProperties.containerStyle.style2 + item.Style\"\r\n [min]=\"item.MinWidth\" [max]=\"item.MaxWidth\">\r\n <app-zdiv [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3\"\r\n [data]=\"data | tabfilter: i + ''\" [form]=\"form\" [group]=\"group\" [containerField]=\"containerField\">\r\n </app-zdiv>\r\n </kendo-splitter-pane>\r\n </kendo-splitter>\r\n</div>\r\n", styles: [""] }]
13362
13371
  }], ctorParameters: function () { return [{ type: ZComponentService }]; } });
13363
13372
 
13364
13373
  /********** Angular **********/
@@ -13369,7 +13378,7 @@ class VirtualScrollComponent extends ContainerFieldBase {
13369
13378
  super(componentService);
13370
13379
  this.pageSize = 50;
13371
13380
  this.pageFetched = [];
13372
- this.footerValue = [];
13381
+ this.footerFields = [];
13373
13382
  }
13374
13383
  ngOnInit() {
13375
13384
  this.setData();
@@ -13474,15 +13483,15 @@ class VirtualScrollComponent extends ContainerFieldBase {
13474
13483
  }
13475
13484
  setupFooter() {
13476
13485
  if (this.data.Value && Array.isArray(this.data.Value)) {
13477
- this.footerValue = this.data.Value.filter(x => x.TabArea === 'footer');
13486
+ this.footerFields = this.data.Value.filter(x => x.Section === 'footer');
13478
13487
  }
13479
13488
  }
13480
13489
  }
13481
13490
  VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
13482
- VirtualScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", 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 [itemSize]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\" [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <!-- <ng-container *cdkVirtualFor=\"let field of clonedFields\"> -->\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div [style.height.px]=\"options.itemSize\" [style.min-height.px]=\"options.itemSize\"\r\n [style.max-height.px]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style2\"\r\n class=\"e1tag-container-style2\" (click)=\"onClick($event, dataItem)\"\r\n [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 </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerValue\" [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}\n"], components: [{ type: i2$b.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.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: i2$b.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2$b.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": HtmlSanitizePipe } });
13491
+ VirtualScrollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", 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 [itemSize]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\" [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <!-- <ng-container *cdkVirtualFor=\"let field of clonedFields\"> -->\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div [style.height.px]=\"options.itemSize\" [style.min-height.px]=\"options.itemSize\"\r\n [style.max-height.px]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style2\"\r\n class=\"e1tag-container-style2\" (click)=\"onClick($event, dataItem)\"\r\n [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 </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}\n"], components: [{ type: i2$b.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.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: i2$b.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i2$b.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": HtmlSanitizePipe } });
13483
13492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, decorators: [{
13484
13493
  type: Component,
13485
- args: [{ selector: "app-virtual-scroll", 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 [itemSize]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\" [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <!-- <ng-container *cdkVirtualFor=\"let field of clonedFields\"> -->\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div [style.height.px]=\"options.itemSize\" [style.min-height.px]=\"options.itemSize\"\r\n [style.max-height.px]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style2\"\r\n class=\"e1tag-container-style2\" (click)=\"onClick($event, dataItem)\"\r\n [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 </ng-container>\r\n <app-zformcontrol *ngFor=\"let field of footerValue\" [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}\n"] }]
13494
+ args: [{ selector: "app-virtual-scroll", 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 [itemSize]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style1\"\r\n class=\"virtual-scroll-viewport e1tag-container-style1\" [minBufferPx]=\"options.minBufferPx\"\r\n [maxBufferPx]=\"options.maxBufferPx\">\r\n <!-- <ng-container *cdkVirtualFor=\"let field of clonedFields\"> -->\r\n <ng-container *cdkVirtualFor=\"let dataItem of dataItems; let i = index\">\r\n <div [style.height.px]=\"options.itemSize\" [style.min-height.px]=\"options.itemSize\"\r\n [style.max-height.px]=\"options.itemSize\" [style]=\"componentProperties.containerStyle.style2\"\r\n class=\"e1tag-container-style2\" (click)=\"onClick($event, dataItem)\"\r\n [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 </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}\n"] }]
13486
13495
  }], ctorParameters: function () { return [{ type: ZComponentService }]; }, propDecorators: { viewPort: [{
13487
13496
  type: ViewChild,
13488
13497
  args: [CdkVirtualScrollViewport]