mmhglobal-dynamicform 2.15.3 → 2.16.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.
@@ -6,7 +6,7 @@ import { NavigationStart, NavigationEnd, NavigationError, RouterModule } from '@
6
6
  import { BehaviorSubject, forkJoin, of, tap as tap$1, map as map$1, isObservable, switchMap as switchMap$1, interval, takeWhile, from, Subject, delay as delay$1, filter, first, auditTime } from 'rxjs';
7
7
  import { tap, switchMap, map, take, delay, concatMap, ignoreElements } from 'rxjs/operators';
8
8
  import * as i2 from 'mmhglobal-zcore';
9
- import { ZGroup, FormType, ZComponentHelper, MESSAGETYPE, DefaultMessage, DefaultDialogTitle, ActionType, Delimiter, ZSelectPostApiParams, ZComponentProperties, ComponentType as ComponentType$1, InternalComponentType_DropDown, UploadMetaData, AttachmentConfig, DefaultPageSettingParams, ZCoreModule } from 'mmhglobal-zcore';
9
+ import { ZGroup, FormType, ZComponentHelper, MESSAGETYPE, ActionType, DefaultMessage, DefaultDialogTitle, Delimiter, ZSelectPostApiParams, ZComponentProperties, ComponentType as ComponentType$1, InternalComponentType_DropDown, UploadMetaData, AttachmentConfig, DefaultPageSettingParams, ZCoreModule } from 'mmhglobal-zcore';
10
10
  import * as i2$1 from '@ionic/angular';
11
11
  import { IonicModule } from '@ionic/angular';
12
12
  import * as i3 from 'mmhglobal-zmodal';
@@ -17,7 +17,7 @@ import * as i8 from '@progress/kendo-angular-grid';
17
17
  import { DataBindingDirective, GridComponent, BaseFilterCellComponent, ExcelModule, GridModule } from '@progress/kendo-angular-grid';
18
18
  import * as i5 from '@angular/common';
19
19
  import { formatDate, CommonModule } from '@angular/common';
20
- import * as i2$b from '@angular/cdk/scrolling';
20
+ import * as i3$b from '@angular/cdk/scrolling';
21
21
  import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
22
22
  import * as i4 from '@angular/forms';
23
23
  import { Validators, FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
@@ -84,7 +84,7 @@ import 'brace/mode/json';
84
84
  import 'brace/mode/javascript';
85
85
  import 'brace/mode/html';
86
86
  import { process } from '@progress/kendo-data-query';
87
- import { trigger, transition, style, animate } from '@angular/animations';
87
+ import { trigger, transition, style, animate, state } from '@angular/animations';
88
88
  import * as i3$7 from '@progress/kendo-angular-toolbar';
89
89
  import { MultiSelect, DropDownList } from '@syncfusion/ej2-dropdowns';
90
90
  import { createElement, getComponent } from '@syncfusion/ej2-base';
@@ -916,55 +916,7 @@ class MainService {
916
916
  }
917
917
  return of(false);
918
918
  }));
919
- // const replySub = new Subject<boolean>();
920
- // this.alertCtrl
921
- // .create({
922
- // header: "Data not save yet",
923
- // // subHeader: 'SubHeader statement here',
924
- // message: "Are you sure want to discard the changes?",
925
- // buttons: [
926
- // {
927
- // text: "Cancel",
928
- // role: "cancel",
929
- // cssClass: "secondary",
930
- // handler: () => {
931
- // replySub.next(false);
932
- // }
933
- // },
934
- // {
935
- // text: "Discard Changes",
936
- // cssClass: "warning",
937
- // handler: () => {
938
- // replySub.next(true);
939
- // }
940
- // }
941
- // ]
942
- // })
943
- // .then(alertElement => {
944
- // alertElement.present();
945
- // });
946
- // return replySub.asObservable().pipe(take(1));
947
- }
948
- // async openModalForm(modalParams: ModalPageParams) {
949
- // // console.log("openModalForm");
950
- // console.error(
951
- // "Please use ModalService.show instead of MainService.openModalForm!"
952
- // );
953
- // // const modal = this.modalService.show(modalParams.colFields$ || modalParams.controllerName, modalParams.parentGroup,
954
- // // modalParams.formHeader, modalParams.zModel, modalParams.referId);
955
- // const modal = await this.modalCtrl.create({
956
- // component: ZmodalPage,
957
- // backdropDismiss: true,
958
- // componentProps: {
959
- // modalParams,
960
- // },
961
- // });
962
- // modal.present();
963
- // return modal;
964
- // // .onWillDismiss((zmodel: any) => {
965
- // // this.
966
- // // });
967
- // }
919
+ }
968
920
  closeModalForm(group) {
969
921
  if (group && group.subject) {
970
922
  group.subject.next({
@@ -1101,8 +1053,9 @@ class MainService {
1101
1053
  if (this.previousRouteParam) {
1102
1054
  const paramSegment = this.previousRouteParam.split("/");
1103
1055
  const actionSegment = paramSegment[paramSegment.length - 1];
1104
- // If the last segment is 'new' or 'update', store the previous route param in session storage
1105
- if (actionSegment === 'new' || actionSegment === 'edit' || actionSegment === 'update') {
1056
+ // If the last segment is 'new' or 'update', store the previous route param in session storage
1057
+ const validActionTypes = [ActionType.New.toString(), ActionType.Edit.toString(), ActionType.Update.toString()];
1058
+ if (validActionTypes.includes(actionSegment)) {
1106
1059
  this.storageService.set(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY, JSON.stringify(this.previousRouteParam));
1107
1060
  }
1108
1061
  }
@@ -1328,11 +1281,11 @@ class MainService {
1328
1281
  //const lastSegment = pathSegment[pathSegment.length - 1];
1329
1282
  const currentNavigationParam = this.getNavigationCurrentParam();
1330
1283
  const navigationSegments = currentNavigationParam ? currentNavigationParam.split('/') : null;
1331
- const defaultAction = group.isCloneNew ? 'new' : 'edit';
1332
- const actionSegment = group.isCloneNew ? (navigationSegments ? navigationSegments[navigationSegments.length - 1] : 'new') : defaultAction;
1284
+ const defaultAction = group.isCloneNew ? ActionType.New : ActionType.Edit;
1285
+ const actionSegment = group.isCloneNew ? (navigationSegments ? navigationSegments[navigationSegments.length - 1] : ActionType.New) : defaultAction;
1333
1286
  if (group.isListForm) {
1334
1287
  this.tryUpdateGroupTrigger(false);
1335
- this.setNavigationParams([referenceId, 'new']);
1288
+ this.setNavigationParams([referenceId, ActionType.New.toString()]);
1336
1289
  this.router.navigate([group.editModelURL], {
1337
1290
  relativeTo: group.ctrlScope.activatedRoute,
1338
1291
  });
@@ -1346,7 +1299,7 @@ class MainService {
1346
1299
  // Scenario 6: From List open record(action: edit), isCloneNew, Save, Click New ==> Clear form (When UpdateModel, need change isCloneNew = false)
1347
1300
  // Scenario 7: From List open record(action: edit), Click New ==> Clear form
1348
1301
  // Scenario 8: From List open record(action: edit), Click New, Save, isCloneNew ==> DONT Clear form
1349
- if (actionSegment === "edit" || actionSegment === "new") {
1302
+ if (actionSegment === ActionType.Edit || actionSegment === ActionType.New) {
1350
1303
  if (!group.isCloneNew) {
1351
1304
  group.zModel = {};
1352
1305
  group.form.reset();
@@ -1355,14 +1308,14 @@ class MainService {
1355
1308
  this.reloadWorkflowButton(group, event.data.zButtonName);
1356
1309
  }
1357
1310
  }
1358
- if (actionSegment === "edit") {
1311
+ if (actionSegment === ActionType.Edit) {
1359
1312
  // clear cloneNewModel cache(if have)
1360
1313
  if (this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY)) {
1361
1314
  this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);
1362
1315
  }
1363
1316
  //this.setNavigationParams([referenceId, 'new']);
1364
1317
  this.removeLastRouteParam();
1365
- this.setRouteParam([referenceId, 'new']);
1318
+ this.setRouteParam([referenceId, ActionType.New.toString()]);
1366
1319
  group.zModel[group.parentReferenceField] = referenceId;
1367
1320
  }
1368
1321
  group.isEdit = false;
@@ -1371,7 +1324,7 @@ class MainService {
1371
1324
  }
1372
1325
  else {
1373
1326
  this.tryUpdateGroupTrigger(false);
1374
- this.setNavigationParams([referenceId, 'new']);
1327
+ this.setNavigationParams([referenceId, ActionType.New.toString()]);
1375
1328
  this.router.navigate([group.editModelURL], {
1376
1329
  relativeTo: group.ctrlScope.activatedRoute,
1377
1330
  });
@@ -1387,10 +1340,10 @@ class MainService {
1387
1340
  }
1388
1341
  createModel(event, group) {
1389
1342
  const fg = group.form;
1390
- const resMessage = group.SuccessCreatedMessage || "Record is created successfully.";
1343
+ const resMessage = group.SuccessCreatedMessage || DefaultMessage.recordCreated;
1391
1344
  let createModelres = null;
1392
1345
  if (!fg.dirty) {
1393
- console.warn("Form is not dirty hence record is not save.");
1346
+ console.warn(DefaultMessage.notDirtyMessage);
1394
1347
  return;
1395
1348
  }
1396
1349
  if (!fg.valid) {
@@ -1445,7 +1398,7 @@ class MainService {
1445
1398
  }
1446
1399
  updateModelObservable(event, group, form = null, updateAPIObservable = null, isSkipDirty = false) {
1447
1400
  const fg = form || group.form;
1448
- const resMessage = group.SuccessUpdatedMessage || "Record is updated successfully.";
1401
+ const resMessage = group.SuccessUpdatedMessage || DefaultMessage.recordUpdated;
1449
1402
  let updateModelres = null;
1450
1403
  if (!this.isFormDirtyAndValid(fg, group, isSkipDirty, event)) {
1451
1404
  if (isSkipDirty) {
@@ -1453,7 +1406,7 @@ class MainService {
1453
1406
  }
1454
1407
  return of(false);
1455
1408
  }
1456
- updateAPIObservable = updateAPIObservable || this.webApiService.httpPut$(group.resourceURL + "/" + group.zModel.Id, group.zModel, false).pipe(tap((res) => {
1409
+ updateAPIObservable = updateAPIObservable || this.webApiService.httpPut$(`${group.resourceURL}/${group.zModel.Id}`, group.zModel, false).pipe(tap((res) => {
1457
1410
  this.handleSuccess(res, resMessage);
1458
1411
  }
1459
1412
  //this.handleSuccess(res, "Record is updated successfully.")
@@ -1526,14 +1479,14 @@ class MainService {
1526
1479
  }
1527
1480
  deleteModel(event, group) {
1528
1481
  const fg = group.form;
1529
- const resMessage = group.SuccessDeletedMessage || "Record is deleted successfully.";
1482
+ const resMessage = group.SuccessDeletedMessage || DefaultMessage.recordDeleted;
1530
1483
  of(group.zModel)
1531
1484
  .pipe(switchMap((zmodel) => {
1532
1485
  console.log("Before delete, zModel:", zmodel);
1533
1486
  return this.beforeDeleteModel(group);
1534
1487
  }), switchMap(() => {
1535
1488
  group.isTriggered = false;
1536
- return this.alertService.show("Delete Record", "Are you sure?", [
1489
+ return this.alertService.show("Delete Record", DefaultMessage.confirmation, [
1537
1490
  { text: "No", cssClass: "secondary" },
1538
1491
  { text: "Yes", cssClass: "primary" }
1539
1492
  ]);
@@ -1597,7 +1550,7 @@ class MainService {
1597
1550
  }
1598
1551
  isFormDirtyAndValid(fg, group, isSkipDirty = false, event) {
1599
1552
  if (!isSkipDirty && !fg.dirty) {
1600
- console.warn("Form is not dirty hence record is not save.");
1553
+ console.warn(DefaultMessage.notDirtyMessage);
1601
1554
  const message = event && event.data && event.data[`FormNotDirtyMessage`] ? event.data[`FormNotDirtyMessage`] : DefaultMessage.notDirtyMessage;
1602
1555
  this.alertService.showOkay(DefaultDialogTitle.nothingToUpdate, message, ["col-5"]);
1603
1556
  return false;
@@ -1802,7 +1755,7 @@ class MainService {
1802
1755
  }
1803
1756
  }
1804
1757
  handleSignalRModificationAlert(formId) {
1805
- if (this.signalrService.signalREnabled()) {
1758
+ if (this.signalrService.signalREnabled() && this.environment.enableFormPageModificationAlert) {
1806
1759
  const eventName = `${window.location.href}`.replace(/([^:]\/)\/+/g, "$1");
1807
1760
  if (!this.group.signalRCallbackHandler) {
1808
1761
  this.group.signalRCallbackHandler = {};
@@ -1812,7 +1765,7 @@ class MainService {
1812
1765
  this.signalrService.subscribeToEvent(this.group, `${eventName}`, `group.signalRCallbackHandler.alertFormModified`);
1813
1766
  }
1814
1767
  else {
1815
- console.warn('signalR not enabled.');
1768
+ console.warn('enableFormPageModificationAlert not enabled.');
1816
1769
  }
1817
1770
  }
1818
1771
  alertFormModified(formId, group, resp, eventName) {
@@ -6646,6 +6599,33 @@ const hideAndShowVerticalAnimation = trigger('hideAndShowAnimation', [
6646
6599
  style({ transform: 'translateY(0)', opacity: 1, height: 100 }),
6647
6600
  animate('300ms ease-in', style({ transform: 'translateY(-20%)', opacity: 0, height: 0 }))
6648
6601
  ])
6602
+ ]);
6603
+ const rotateAnimation = trigger('rotateAnimation', [
6604
+ state('default', style({
6605
+ transform: 'rotate(0deg)'
6606
+ })),
6607
+ state('rotate', style({
6608
+ transform: 'rotate(' + '{{degree}}' + 'deg)'
6609
+ }), { params: { degree: 90 } }),
6610
+ transition('* => *', [
6611
+ animate('{{duration}}')
6612
+ ], { params: { duration: '0.2s' } }),
6613
+ ]);
6614
+ const collapseAnimation = trigger('collapseAnimation', [
6615
+ state('default', style({
6616
+ transform: 'translateY(0)', opacity: 1, display: 'block'
6617
+ })),
6618
+ state('collapse', style({
6619
+ transform: 'translateY(' + '{{height}}' + ')',
6620
+ opacity: 0,
6621
+ display: 'none'
6622
+ }), { params: { height: '-10%' } }),
6623
+ transition('* => collapse', [
6624
+ animate('{{duration}}')
6625
+ ], { params: { duration: '0.2s' } }),
6626
+ transition('* => default', [
6627
+ animate('{{duration}}')
6628
+ ], { params: { duration: '0.2s' } })
6649
6629
  ]);
6650
6630
 
6651
6631
  /********** Angular **********/
@@ -7116,9 +7096,7 @@ class ZselectmultipleComponent extends InputFieldBase {
7116
7096
  getzDataForzModel$.subscribe((zdata) => {
7117
7097
  console.log(data.Name, ' - initial zData load: ', zdata);
7118
7098
  if (this.group) {
7119
- if (this.group.afterLoadzDataOptions) {
7120
- this.group.afterLoadzDataOptions(this.group);
7121
- }
7099
+ this.afterLoadzDataOptions();
7122
7100
  }
7123
7101
  this.isLoading = false;
7124
7102
  });
@@ -7140,9 +7118,7 @@ class ZselectmultipleComponent extends InputFieldBase {
7140
7118
  this.autoSelectFirstOption(isRequired, optionData[0], fieldValue, zModel.Id);
7141
7119
  }
7142
7120
  if (this.group) {
7143
- if (this.group.afterLoadzDataOptions) {
7144
- this.group.afterLoadzDataOptions(this.group);
7145
- }
7121
+ this.afterLoadzDataOptions();
7146
7122
  }
7147
7123
  this.isLoading = false;
7148
7124
  });
@@ -7159,9 +7135,7 @@ class ZselectmultipleComponent extends InputFieldBase {
7159
7135
  setTimeout(function () {
7160
7136
  thisComponent.autoSelectFirstOption(isRequired, optionData[0], fieldValue, thisComponent.group.zModel.Id);
7161
7137
  if (this.group) {
7162
- if (this.group.afterLoadzDataOptions) {
7163
- this.group.afterLoadzDataOptions(this.group);
7164
- }
7138
+ this.afterLoadzDataOptions();
7165
7139
  }
7166
7140
  }, 100);
7167
7141
  }
@@ -7292,7 +7266,7 @@ class ZselectmultipleComponent extends InputFieldBase {
7292
7266
  this.onSearch({ component: null, text: value });
7293
7267
  if (this.group) {
7294
7268
  if (this.group.afterLoadzDataOptions) {
7295
- this.group.afterLoadzDataOptions(this.group);
7269
+ this.group.afterLoadzDataOptions(this.group, this.data);
7296
7270
  }
7297
7271
  }
7298
7272
  });
@@ -7309,9 +7283,7 @@ class ZselectmultipleComponent extends InputFieldBase {
7309
7283
  .subscribe(() => {
7310
7284
  this.onSearch({ component: null, text: value });
7311
7285
  if (this.group) {
7312
- if (this.group.afterLoadzDataOptions) {
7313
- this.group.afterLoadzDataOptions(this.group);
7314
- }
7286
+ this.afterLoadzDataOptions();
7315
7287
  }
7316
7288
  this.isLoading = false;
7317
7289
  });
@@ -7535,6 +7507,12 @@ class ZselectmultipleComponent extends InputFieldBase {
7535
7507
  }
7536
7508
  }
7537
7509
  }
7510
+ afterLoadzDataOptions() {
7511
+ if (this.group.afterLoadzDataOptions) {
7512
+ console.log("group.afterLoadzDataOptions triggered." + this.data);
7513
+ this.group.afterLoadzDataOptions(this.group, this.data);
7514
+ }
7515
+ }
7538
7516
  }
7539
7517
  ZselectmultipleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZselectmultipleComponent, deps: [{ token: ZComponentService }, { token: i2.ResourceApiService }, { token: i2.WebApiService }, { token: i2.CacheService }, { token: i2.FieldService }], target: i0.ɵɵFactoryTarget.Component });
7540
7518
  ZselectmultipleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZselectmultipleComponent, selector: "app-zselectmultiple", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ["comboboxComponent"], descendants: true }, { propertyName: "dropdownlistComponent", first: true, predicate: ["dropdownlistComponent"], descendants: true }, { propertyName: "multiselect", first: true, predicate: ["multiselect"], descendants: true }, { propertyName: "multiselecttree", first: true, predicate: ["multiselecttree"], descendants: true }, { propertyName: "selectComponent", first: true, predicate: ["selectComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zselectmultiple-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ionic-selectable *ngIf=\"isMobileScreen()\" #selectComponent item-content searchFailText=\"Nothing found :(\"\r\n headerColor=\"primary\" clearButtonText=\"Clear\" [(ngModel)]=\"group.zModel[data.Value]\" [id]=\"data.Value\"\r\n [items]=\"getItemsData()\" [itemValueField]=\"itemValueField\" [itemTextField]=\"itemTextField\"\r\n [canAddItem]=\"!!data.OnAddItem\" [canClear]=\"true\" [placeholder]=\"data.PlaceHolder\"\r\n [canSearch]=\"!data['disable-search']\" [shouldFocusSearchbar]=\"!data['disable-search']\"\r\n [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\" [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [shouldStoreItemValue]=\"true\" (onSearch)=\"onSearch($event)\" (onInfiniteScroll)=\"getInfiniteData($event)\"\r\n (onAddItem)=\"onAddItem($event)\" (onChange)=\"onChange_mobile($event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate let-item=\"item\" let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\" class=\"isItemSelected e1tag-style2\" size=\"sm\" [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\" [style]=\"componentProperties.style.style2\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableCloseButtonTemplate>\r\n <!-- <ion-icon name=\"close-circle\"></ion-icon> -->\r\n <fa-icon [icon]=\"'times-circle'\" size=\"md\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n <span class=e1tag-style4 [style]=\"componentProperties.style.style4\">{{data.Label}}</span>\r\n <ion-text *ngIf=\"getIsRequiredValue()\" color=\"danger\">*</ion-text>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableItemTemplate let-item=\"item\">\r\n <span class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">{{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}</span>\r\n </ng-template>\r\n </ionic-selectable>\r\n <kendo-combobox *ngIf=\"!isMobileScreen() && componentType == 'combobox'\"\r\n class=\"input-field e1tag-style1\"\r\n #comboboxComponent\r\n [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\"\r\n [formControlName]=\"data.Value\"\r\n [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [allowCustom]=\"allowCustomValue\"\r\n [kendoDropDownFilter]=\"filterSettings\"\r\n [suggest]=\"true\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n [openOnFocus]=\"disableOpenOnFocus(comboboxComponent)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n [loading]=\"isLoading\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n [style]=\"componentProperties.style.style1\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoComboBoxItemTemplate let-dataItem>\r\n <span class=\"e1tag-style5\" [class.zselect-virtualization]=\"data.IsEnableVirtualization\" [style]=\"componentProperties.style.style5\">{{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}</span>\r\n <!-- <span class=\"template\">{{ dataItem.value }}</span> {{ dataItem.text }} -->\r\n </ng-template>\r\n </kendo-combobox>\r\n <kendo-multiselect *ngIf=\"!isMobileScreen() && componentType == 'multiselect'\"\r\n class=\"input-field e1tag-style1\"\r\n #multiselect\r\n [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\"\r\n [formControlName]=\"data.Value\"\r\n [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [allowCustom]=\"allowCustomValue\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n [checkboxes]=\"data.EnableCheckbox\"\r\n [loading]=\"isLoading\"\r\n [autoClose]=\"autoClose\"\r\n [kendoDropDownFilter]=\"filterSettings\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n [style]=\"componentProperties.style.style1\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoMultiSelectItemTemplate let-dataItem>\r\n <span class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\">{{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}</span>\r\n </ng-template>\r\n </kendo-multiselect>\r\n <kendo-multiselecttree *ngIf=\"!isMobileScreen() && componentType == 'multiselecttree'\"\r\n class=\"input-field e1tag-style1\"\r\n #multiselecttree\r\n kendoMultiSelectTreeExpandable\r\n [placeholder]=\"data.PlaceHolder\"\r\n [kendoMultiSelectTreeHierarchyBinding]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [kendoMultiSelectTreeSummaryTag]=\"componentSettings.kendoMultiSelectTreeSummaryTag\"\r\n childrenField=\"Value\"\r\n [hasChildren]=\"hasChildren\"\r\n [textField]=\"itemTextField\"\r\n [valueField]=\"itemValueField\"\r\n [valuePrimitive]=\"true\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n [dataItems]=\"getDataItems()\"\r\n [formControlName]=\"data.Value\"\r\n [loading]=\"isLoading\"\r\n [autoClose]=\"autoClose\"\r\n [expandOnFilter]=\"componentSettings.expandOnFilter\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n (filterChange)=\"handleMultiSelectTreeFilter($event)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n [style]=\"componentProperties.style.style1\"\r\n [(expandedKeys)]=\"expandedKeys\"\r\n [popupSettings]=\"componentSettings.popupSettings\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoMultiSelectTreeNoDataTemplate>\r\n <h4>\r\n <span class=\"k-icon k-i-warning\"></span><br /><br />\r\n No record found.\r\n </h4>\r\n </ng-template>\r\n </kendo-multiselecttree>\r\n <kendo-dropdownlist *ngIf=\"!isMobileScreen() && componentType == 'dropdownlist'\"\r\n class=\"input-field e1tag-style1\"\r\n #dropdownlistComponent\r\n [data]=\"getItemsData() | zselectTranslationParser : itemTextField : data : group | async\"\r\n [valueField]=\"itemValueField\"\r\n [textField]=\"itemTextField\"\r\n [formControlName]=\"data.Value\"\r\n [valuePrimitive]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [allowCustom]=\"allowCustomValue\"\r\n [kendoDropDownFilter]=\"filterSettings\"\r\n [suggest]=\"true\"\r\n [filterable]=\"data.Filterable == false ? false : true\"\r\n [openOnFocus]=\"disableOpenOnFocus(comboboxComponent)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"data.Class\"\r\n [loading]=\"isLoading\"\r\n (valueChange)=\"onChange_desktop($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [virtual]=\"data.IsEnableVirtualization == true ? virtual : null\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n [style]=\"componentProperties.style.style1\"\r\n [clearButton]=\"data.ClearButton == false ? false : true\">\r\n <ng-template kendoDropDownListItemTemplate let-dataItem>\r\n <span class=\"e1tag-style5\" [class.zselect-virtualization]=\"data.IsEnableVirtualization\" [style]=\"componentProperties.style.style5\">{{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}</span>\r\n <!-- <span class=\"template\">{{ dataItem.value }}</span> {{ dataItem.text }} -->\r\n </ng-template>\r\n </kendo-dropdownlist>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-combobox.k-multiselect,:host ::ng-deep kendo-dropdownlist.k-multiselect,:host ::ng-deep kendo-multiselect.k-multiselect{height:auto}:host ::ng-deep kendo-combobox .k-searchbar,:host ::ng-deep kendo-dropdownlist .k-searchbar,:host ::ng-deep kendo-multiselect .k-searchbar{margin:auto}:host ::ng-deep kendo-combobox .k-searchbar+.k-icon,:host ::ng-deep kendo-dropdownlist .k-searchbar+.k-icon,:host ::ng-deep kendo-multiselect .k-searchbar+.k-icon{margin:auto}:host ::ng-deep kendo-combobox .kendo-combobox-item-template,:host ::ng-deep kendo-dropdownlist .kendo-combobox-item-template,:host ::ng-deep kendo-multiselect .kendo-combobox-item-template{height:var(--input-field-height)!important}:host ::ng-deep kendo-combobox.disabled>.k-dropdown-wrap,:host ::ng-deep kendo-dropdownlist.disabled>.k-dropdown-wrap,:host ::ng-deep kendo-multiselect.disabled>.k-dropdown-wrap{background:transparent}:host ::ng-deep kendo-combobox:focus-within,:host ::ng-deep kendo-dropdownlist:focus-within,:host ::ng-deep kendo-multiselect:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}:host ::ng-deep kendo-combobox.no-border,:host ::ng-deep kendo-dropdownlist.no-border,:host ::ng-deep kendo-multiselect.no-border{box-shadow:none!important;border:none!important}:host ::ng-deep kendo-combobox.no-border>.k-input-button,:host ::ng-deep kendo-dropdownlist.no-border>.k-input-button,:host ::ng-deep kendo-multiselect.no-border>.k-input-button{background:none;border:none}:host ::ng-deep kendo-combobox.no-background,:host ::ng-deep kendo-dropdownlist.no-background,:host ::ng-deep kendo-multiselect.no-background{background:none}:host ::ng-deep kendo-combobox.right-align>kendo-searchbar>input,:host ::ng-deep kendo-dropdownlist.right-align>kendo-searchbar>input,:host ::ng-deep kendo-multiselect.right-align>kendo-searchbar>input{text-align:right}:host ::ng-deep kendo-combobox.right-align>.k-input-inner,:host ::ng-deep kendo-dropdownlist.right-align>.k-input-inner,:host ::ng-deep kendo-multiselect.right-align>.k-input-inner{text-align:right}:host ::ng-deep kendo-dropdownlist{background:white}:host ::ng-deep kendo-dropdownlist>span.k-input-inner>.k-input-value-text{width:0px}fa-icon.isItemSelected{display:inline-block;width:1em;height:1em;contain:strict;fill:currentcolor;box-sizing:content-box!important;font-size:20px;margin-top:10px;margin-bottom:14px;margin-right:unset;margin-inline-end:20px}.gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divselectmultiple{justify-content:space-between;width:99%;color:#000}.zselect-virtualization{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\n"], components: [{ type: i3$5.IonicSelectableComponent, selector: "ionic-selectable", inputs: ["items", "modalCssClass", "modalEnterAnimation", "modalLeaveAnimation", "isConfirmButtonEnabled", "itemValueField", "itemTextField", "groupValueField", "groupTextField", "canSearch", "hasInfiniteScroll", "hasVirtualScroll", "virtualScrollApproxItemHeight", "searchPlaceholder", "placeholder", "searchFailText", "clearButtonText", "addButtonText", "confirmButtonText", "closeButtonText", "shouldFocusSearchbar", "headerColor", "groupColor", "closeButtonSlot", "itemIconSlot", "searchDebounce", "disabledItems", "shouldStoreItemValue", "canSaveItem", "canDeleteItem", "virtualScrollHeaderFn", "isEnabled", "shouldBackdropClose", "hasConfirmButton", "isOnSearchEnabled", "canClear", "isMultiple", "canAddItem"], outputs: ["itemsChange", "onChange", "onSearch", "onSearchFail", "onSearchSuccess", "onInfiniteScroll", "onOpen", "onClose", "onSelect", "onClear", "onSaveItem", "onDeleteItem", "onAddItem"] }, { type: i5$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2$1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i6$2.ComboBoxComponent, selector: "kendo-combobox", inputs: ["focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "popupSettings", "listHeight", "iconClass", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoComboBox"] }, { type: i6$2.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "loading", "data", "value", "valueField", "textField", "tabindex", "tabIndex", "size", "rounded", "fillMode", "placeholder", "disabled", "itemDisabled", "checkboxes", "readonly", "filterable", "virtual", "popupSettings", "listHeight", "valuePrimitive", "clearButton", "tagMapper", "allowCustom", "valueNormalizer"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { type: i6$2.MultiSelectTreeComponent, selector: "kendo-multiselecttree", inputs: ["tabindex", "size", "rounded", "fillMode", "popupSettings", "checkableSettings", "data", "value", "dataItems", "textField", "valueField", "valueDepth", "loading", "placeholder", "listHeight", "disabled", "readonly", "valuePrimitive", "loadOnDemand", "focusableId", "clearButton", "filterable", "checkAll", "hasChildren", "fetchChildren", "isNodeExpanded", "isNodeVisible", "itemDisabled", "tagMapper"], outputs: ["focus", "blur", "open", "opened", "close", "closed", "nodeExpand", "nodeCollapse", "valueChange", "removeTag", "filterChange"], exportAs: ["kendoMultiSelectTree"] }, { type: i6$2.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["iconClass", "loading", "data", "value", "textField", "valueField", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$5.IonicSelectableItemIconTemplateDirective, selector: "[ionicSelectableItemIconTemplate]" }, { type: i3$5.IonicSelectableCloseButtonTemplateDirective, selector: "[ionicSelectableCloseButtonTemplate]" }, { type: i3$5.IonicSelectableTitleTemplateDirective, selector: "[ionicSelectableTitleTemplate]" }, { type: i3$5.IonicSelectableItemTemplateDirective, selector: "[ionicSelectableItemTemplate]" }, { type: OpenOnFocusDirective, selector: "kendo-combobox[openOnFocus]", inputs: ["openOnFocus"] }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i6$2.FilterDirective, selector: "[kendoDropDownFilter]", inputs: ["data", "kendoDropDownFilter", "filterable"] }, { type: i5.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: i6$2.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { type: i6$2.DropDownTreesExpandDirective, selector: "[kendoDropDownTreeExpandable], [kendoMultiSelectTreeExpandable]", inputs: ["isNodeExpanded"] }, { type: i6$2.MultiSelectTreeHierarchyBindingDirective, selector: "[kendoMultiSelectTreeHierarchyBinding]", inputs: ["kendoMultiSelectTreeHierarchyBinding"] }, { type: i6$2.MultiSelectTreeSummaryTagDirective, selector: "[kendoMultiSelectTreeSummaryTag]", inputs: ["kendoMultiSelectTreeSummaryTag"] }, { type: i6$2.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }], pipes: { "async": i5.AsyncPipe, "zselectTranslationParser": ZSelectTranslationParser } });
@@ -8858,7 +8836,6 @@ class ZgridComponent extends DataListingFieldBase {
8858
8836
  console.warn('Invalid/Empty grid(' + this.data.Name + ') data to generate column');
8859
8837
  }
8860
8838
  else {
8861
- const fieldName = this.data['FieldElementName'];
8862
8839
  this.columns = [];
8863
8840
  const generateHiddenColumns = [];
8864
8841
  ZComponentHelper.getGridColumns({
@@ -9126,6 +9103,9 @@ class ZgridComponent extends DataListingFieldBase {
9126
9103
  this.inlineEditedFormGroups = {};
9127
9104
  this.zgrid.getDataBinding();
9128
9105
  }
9106
+ else {
9107
+ console.warn('this.zgrid is undefined.');
9108
+ }
9129
9109
  }
9130
9110
  getGridData() {
9131
9111
  return this.isUseLocalData() ? (this.zgrid.data || this.zgrid.originalData) : (this.zgrid.grid.data && this.zgrid.grid.data.data ? this.zgrid.grid.data.data : []);
@@ -11461,10 +11441,10 @@ class ZtreeComponent extends DataListingFieldBase {
11461
11441
  }
11462
11442
  }
11463
11443
  ZtreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtreeComponent, deps: [{ token: ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
11464
- ZtreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZtreeComponent, selector: "app-ztree", viewQueries: [{ propertyName: "nodetemplate", first: true, predicate: ["nodetemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"width:100%\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-treeview [nodes]=\"getItems()\"\r\n kendoTreeViewExpandable\r\n [kendoTreeViewSelectable]=\"selection\"\r\n kendoTreeViewDragAndDrop\r\n kendoTreeViewDragAndDropEditing\r\n [isExpanded]=\"isExpanded\"\r\n (collapse)=\"handleCollapse($event)\"\r\n (expand)=\"handleExpand($event)\"\r\n (nodeDrop)=\"handleNodeDrop($event)\"\r\n (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [(selectedKeys)]=\"selectedKeys\"\r\n kendoTreeViewHierarchyBinding\r\n childrenField=\"Value\"\r\n textField=\"Name\"\r\n [selectBy]=\"data.SelectOptions\"\r\n [filterable]=\"data.Filterable\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\"\r\n [ngClass]=\"data.Class\"\r\n [kendoTreeViewCheckable]=\"checkableSettings\"\r\n [checkBy]=\"data.SelectOptions\"\r\n [(checkedKeys)]=\"checkedKeys\"\r\n (checkedChange)=\"onCheckedChange($event)\"\r\n [kendoTreeViewDisable]=\"data.SelectOptions\"\r\n [isChecked]=\"isChecked\"\r\n [(disabledKeys)]=\"disabledCheckBoxKeys\"\r\n [disableParentNodesOnly]=\"data.DisableParentNodesOnly\">\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n <div class=\"tree-content-container\">\r\n <ion-button *ngIf=\"!!data.OnAddNode && !data.isHideAllAddNode\"\r\n (click)=\"onAddNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 2px;\"\r\n mat-raised-button\r\n color=\"primary\"\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnAddNodeVisible\"\r\n [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n </ion-button>\r\n <ion-button *ngIf=\"!!data.OnRemoveNode && !data.isHideAllRemoveNode\"\r\n (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 10px;\"\r\n color=\"danger\"\r\n mat-raised-button\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnRemoveNodeVisible\"\r\n [style]=\"componentProperties.style.style3\"\r\n class=\"e1tag-style3\">\r\n <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n </ion-button>\r\n <span class=\"btn-seperator e1tag-style7\" [style]=\"componentProperties.style.style7\"></span>\r\n <span *ngFor=\"let icon of dataItem.IconList\">\r\n <fa-icon class=\"e1tag-style5 left-icon\" [icon]=\"icon\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </span>\r\n <ion-label [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\">\r\n <div [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\" [innerHTML]=\"getTemplate(dataItem, data, group) | htmlSanitize\"></div>\r\n </ion-label>\r\n </div>\r\n </ng-template>\r\n </kendo-treeview>\r\n</div>\r\n", styles: [":host ::ng-deep .k-treeview .k-treeview-leaf{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.15);color:var(--ion-color-primary-shade);border:1px solid rgba(var(--ion-color-primary-rgb),1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf.k-selected,:host ::ng-deep .k-treeview .k-treeview-leaf.k-state-selected{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.5);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf:hover,:host ::ng-deep .k-treeview .k-treeview-leaf.k-hover .k-treeview-leaf.k-state-hover{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .tree-content-container{display:flex;align-items:center;justify-content:center}:host ::ng-deep .k-treeview .btn-seperator{width:10px;display:inline-block}.left-icon{margin-right:8px}\n"], components: [{ type: i2$9.TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { type: i2$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$9.ExpandDirective, selector: "[kendoTreeViewExpandable]", inputs: ["isExpanded", "expandBy", "expandOnFilter", "expandedKeys"], outputs: ["expandedKeysChange"] }, { type: i2$9.DragAndDropDirective, selector: "[kendoTreeViewDragAndDrop]", inputs: ["allowCopy", "dropZoneTreeViews", "startDragAfter", "autoScroll"] }, { type: i2$9.DragAndDropEditingDirective, selector: "[kendoTreeViewDragAndDropEditing]", inputs: ["editService"] }, { type: i2$9.HierarchyBindingDirective, selector: "[kendoTreeViewHierarchyBinding]", inputs: ["childrenField", "nodes", "isVisible", "loadOnDemand"] }, { type: i2$9.SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { type: i5.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$9.CheckDirective, selector: "[kendoTreeViewCheckable]", inputs: ["isChecked", "checkBy", "checkedKeys", "kendoTreeViewCheckable"], outputs: ["checkedKeysChange"] }, { type: i2$9.DisableDirective, selector: "[kendoTreeViewDisable]", inputs: ["isDisabled", "kendoTreeViewDisable", "disabledKeys"] }, { type: i2$9.NodeTemplateDirective, selector: "[kendoTreeViewNodeTemplate]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": HtmlSanitizePipe } });
11444
+ ZtreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZtreeComponent, selector: "app-ztree", viewQueries: [{ propertyName: "nodetemplate", first: true, predicate: ["nodetemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"width:100%\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-treeview [nodes]=\"getItems()\"\r\n kendoTreeViewExpandable\r\n [kendoTreeViewSelectable]=\"selection\"\r\n kendoTreeViewDragAndDrop\r\n kendoTreeViewDragAndDropEditing\r\n [isExpanded]=\"isExpanded\"\r\n (collapse)=\"handleCollapse($event)\"\r\n (expand)=\"handleExpand($event)\"\r\n (nodeDrop)=\"handleNodeDrop($event)\"\r\n (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [(selectedKeys)]=\"selectedKeys\"\r\n kendoTreeViewHierarchyBinding\r\n childrenField=\"Value\"\r\n textField=\"Name\"\r\n [selectBy]=\"data.SelectOptions\"\r\n [filterable]=\"data.Filterable\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\"\r\n [ngClass]=\"data.Class\"\r\n [kendoTreeViewCheckable]=\"checkableSettings\"\r\n [checkBy]=\"data.SelectOptions\"\r\n [(checkedKeys)]=\"checkedKeys\"\r\n (checkedChange)=\"onCheckedChange($event)\"\r\n [kendoTreeViewDisable]=\"data.SelectOptions\"\r\n [isChecked]=\"isChecked\"\r\n [(disabledKeys)]=\"disabledCheckBoxKeys\"\r\n [disableParentNodesOnly]=\"data.DisableParentNodesOnly\"\r\n [expandDisabledNodes]=\"data.ExpandDisabledNodes\">\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n <div class=\"tree-content-container\">\r\n <ion-button *ngIf=\"!!data.OnAddNode && !data.isHideAllAddNode\"\r\n (click)=\"onAddNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 2px;\"\r\n mat-raised-button\r\n color=\"primary\"\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnAddNodeVisible\"\r\n [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n </ion-button>\r\n <ion-button *ngIf=\"!!data.OnRemoveNode && !data.isHideAllRemoveNode\"\r\n (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 10px;\"\r\n color=\"danger\"\r\n mat-raised-button\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnRemoveNodeVisible\"\r\n [style]=\"componentProperties.style.style3\"\r\n class=\"e1tag-style3\">\r\n <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n </ion-button>\r\n <span class=\"btn-seperator e1tag-style7\" [style]=\"componentProperties.style.style7\"></span>\r\n <span *ngFor=\"let icon of dataItem.IconList\">\r\n <fa-icon class=\"e1tag-style5 left-icon\" [icon]=\"icon\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </span>\r\n <ion-label [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\">\r\n <div [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\" [innerHTML]=\"getTemplate(dataItem, data, group) | htmlSanitize\"></div>\r\n </ion-label>\r\n </div>\r\n </ng-template>\r\n </kendo-treeview>\r\n</div>\r\n", styles: [":host ::ng-deep .k-treeview .k-treeview-leaf{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.15);color:var(--ion-color-primary-shade);border:1px solid rgba(var(--ion-color-primary-rgb),1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf.k-selected,:host ::ng-deep .k-treeview .k-treeview-leaf.k-state-selected{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.5);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf:hover,:host ::ng-deep .k-treeview .k-treeview-leaf.k-hover .k-treeview-leaf.k-state-hover{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .tree-content-container{display:flex;align-items:center;justify-content:center}:host ::ng-deep .k-treeview .btn-seperator{width:10px;display:inline-block}.left-icon{margin-right:8px}\n"], components: [{ type: i2$9.TreeViewComponent, selector: "kendo-treeview", inputs: ["filterInputPlaceholder", "expandDisabledNodes", "animate", "nodeTemplate", "loadMoreButtonTemplate", "trackBy", "nodes", "textField", "hasChildren", "isChecked", "isDisabled", "isExpanded", "isSelected", "isVisible", "navigable", "children", "loadOnDemand", "filterable", "filter", "size", "disableParentNodesOnly"], outputs: ["childrenLoaded", "blur", "focus", "expand", "collapse", "nodeDragStart", "nodeDrag", "filterStateChange", "nodeDrop", "nodeDragEnd", "addItem", "removeItem", "checkedChange", "selectionChange", "filterChange", "nodeClick", "nodeDblClick"], exportAs: ["kendoTreeView"] }, { type: i2$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2$1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$9.ExpandDirective, selector: "[kendoTreeViewExpandable]", inputs: ["isExpanded", "expandBy", "expandOnFilter", "expandedKeys"], outputs: ["expandedKeysChange"] }, { type: i2$9.DragAndDropDirective, selector: "[kendoTreeViewDragAndDrop]", inputs: ["allowCopy", "dropZoneTreeViews", "startDragAfter", "autoScroll"] }, { type: i2$9.DragAndDropEditingDirective, selector: "[kendoTreeViewDragAndDropEditing]", inputs: ["editService"] }, { type: i2$9.HierarchyBindingDirective, selector: "[kendoTreeViewHierarchyBinding]", inputs: ["childrenField", "nodes", "isVisible", "loadOnDemand"] }, { type: i2$9.SelectDirective, selector: "[kendoTreeViewSelectable]", inputs: ["isSelected", "selectBy", "kendoTreeViewSelectable", "selectedKeys"], outputs: ["selectedKeysChange"] }, { type: i5.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$9.CheckDirective, selector: "[kendoTreeViewCheckable]", inputs: ["isChecked", "checkBy", "checkedKeys", "kendoTreeViewCheckable"], outputs: ["checkedKeysChange"] }, { type: i2$9.DisableDirective, selector: "[kendoTreeViewDisable]", inputs: ["isDisabled", "kendoTreeViewDisable", "disabledKeys"] }, { type: i2$9.NodeTemplateDirective, selector: "[kendoTreeViewNodeTemplate]" }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": HtmlSanitizePipe } });
11465
11445
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtreeComponent, decorators: [{
11466
11446
  type: Component,
11467
- args: [{ selector: "app-ztree", template: "<div style=\"width:100%\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-treeview [nodes]=\"getItems()\"\r\n kendoTreeViewExpandable\r\n [kendoTreeViewSelectable]=\"selection\"\r\n kendoTreeViewDragAndDrop\r\n kendoTreeViewDragAndDropEditing\r\n [isExpanded]=\"isExpanded\"\r\n (collapse)=\"handleCollapse($event)\"\r\n (expand)=\"handleExpand($event)\"\r\n (nodeDrop)=\"handleNodeDrop($event)\"\r\n (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [(selectedKeys)]=\"selectedKeys\"\r\n kendoTreeViewHierarchyBinding\r\n childrenField=\"Value\"\r\n textField=\"Name\"\r\n [selectBy]=\"data.SelectOptions\"\r\n [filterable]=\"data.Filterable\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\"\r\n [ngClass]=\"data.Class\"\r\n [kendoTreeViewCheckable]=\"checkableSettings\"\r\n [checkBy]=\"data.SelectOptions\"\r\n [(checkedKeys)]=\"checkedKeys\"\r\n (checkedChange)=\"onCheckedChange($event)\"\r\n [kendoTreeViewDisable]=\"data.SelectOptions\"\r\n [isChecked]=\"isChecked\"\r\n [(disabledKeys)]=\"disabledCheckBoxKeys\"\r\n [disableParentNodesOnly]=\"data.DisableParentNodesOnly\">\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n <div class=\"tree-content-container\">\r\n <ion-button *ngIf=\"!!data.OnAddNode && !data.isHideAllAddNode\"\r\n (click)=\"onAddNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 2px;\"\r\n mat-raised-button\r\n color=\"primary\"\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnAddNodeVisible\"\r\n [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n </ion-button>\r\n <ion-button *ngIf=\"!!data.OnRemoveNode && !data.isHideAllRemoveNode\"\r\n (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 10px;\"\r\n color=\"danger\"\r\n mat-raised-button\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnRemoveNodeVisible\"\r\n [style]=\"componentProperties.style.style3\"\r\n class=\"e1tag-style3\">\r\n <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n </ion-button>\r\n <span class=\"btn-seperator e1tag-style7\" [style]=\"componentProperties.style.style7\"></span>\r\n <span *ngFor=\"let icon of dataItem.IconList\">\r\n <fa-icon class=\"e1tag-style5 left-icon\" [icon]=\"icon\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </span>\r\n <ion-label [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\">\r\n <div [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\" [innerHTML]=\"getTemplate(dataItem, data, group) | htmlSanitize\"></div>\r\n </ion-label>\r\n </div>\r\n </ng-template>\r\n </kendo-treeview>\r\n</div>\r\n", styles: [":host ::ng-deep .k-treeview .k-treeview-leaf{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.15);color:var(--ion-color-primary-shade);border:1px solid rgba(var(--ion-color-primary-rgb),1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf.k-selected,:host ::ng-deep .k-treeview .k-treeview-leaf.k-state-selected{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.5);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf:hover,:host ::ng-deep .k-treeview .k-treeview-leaf.k-hover .k-treeview-leaf.k-state-hover{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .tree-content-container{display:flex;align-items:center;justify-content:center}:host ::ng-deep .k-treeview .btn-seperator{width:10px;display:inline-block}.left-icon{margin-right:8px}\n"] }]
11447
+ args: [{ selector: "app-ztree", template: "<div style=\"width:100%\" [style]=\"componentProperties.style.style\" class=\"e1tag-style\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <kendo-treeview [nodes]=\"getItems()\"\r\n kendoTreeViewExpandable\r\n [kendoTreeViewSelectable]=\"selection\"\r\n kendoTreeViewDragAndDrop\r\n kendoTreeViewDragAndDropEditing\r\n [isExpanded]=\"isExpanded\"\r\n (collapse)=\"handleCollapse($event)\"\r\n (expand)=\"handleExpand($event)\"\r\n (nodeDrop)=\"handleNodeDrop($event)\"\r\n (nodeDragEnd)=\"handleNodeDragEnd($event)\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [(selectedKeys)]=\"selectedKeys\"\r\n kendoTreeViewHierarchyBinding\r\n childrenField=\"Value\"\r\n textField=\"Name\"\r\n [selectBy]=\"data.SelectOptions\"\r\n [filterable]=\"data.Filterable\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\"\r\n [ngClass]=\"data.Class\"\r\n [kendoTreeViewCheckable]=\"checkableSettings\"\r\n [checkBy]=\"data.SelectOptions\"\r\n [(checkedKeys)]=\"checkedKeys\"\r\n (checkedChange)=\"onCheckedChange($event)\"\r\n [kendoTreeViewDisable]=\"data.SelectOptions\"\r\n [isChecked]=\"isChecked\"\r\n [(disabledKeys)]=\"disabledCheckBoxKeys\"\r\n [disableParentNodesOnly]=\"data.DisableParentNodesOnly\"\r\n [expandDisabledNodes]=\"data.ExpandDisabledNodes\">\r\n <ng-template kendoTreeViewNodeTemplate let-dataItem #nodetemplate>\r\n <div class=\"tree-content-container\">\r\n <ion-button *ngIf=\"!!data.OnAddNode && !data.isHideAllAddNode\"\r\n (click)=\"onAddNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 2px;\"\r\n mat-raised-button\r\n color=\"primary\"\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnAddNodeVisible\"\r\n [style]=\"componentProperties.style.style2\"\r\n class=\"e1tag-style2\">\r\n <fa-icon [icon]=\"'plus'\"></fa-icon>\r\n </ion-button>\r\n <ion-button *ngIf=\"!!data.OnRemoveNode && !data.isHideAllRemoveNode\"\r\n (click)=\"onRemoveNode($event, dataItem, data, group)\"\r\n style=\"zoom: 0.6; margin: 0 0 0 10px;\"\r\n color=\"danger\"\r\n mat-raised-button\r\n size=\"medium\"\r\n [hidden]=\"!!dataItem.OnRemoveNodeVisible\"\r\n [style]=\"componentProperties.style.style3\"\r\n class=\"e1tag-style3\">\r\n <fa-icon [icon]=\"'minus'\"></fa-icon>\r\n </ion-button>\r\n <span class=\"btn-seperator e1tag-style7\" [style]=\"componentProperties.style.style7\"></span>\r\n <span *ngFor=\"let icon of dataItem.IconList\">\r\n <fa-icon class=\"e1tag-style5 left-icon\" [icon]=\"icon\" [style]=\"componentProperties.style.style5\"></fa-icon>\r\n </span>\r\n <ion-label [style]=\"componentProperties.style.style4\" class=\"e1tag-style4\" [ngClass]=\"dataItem.class\">\r\n <div [style]=\"componentProperties.style.style6\" class=\"e1tag-style6\" [innerHTML]=\"getTemplate(dataItem, data, group) | htmlSanitize\"></div>\r\n </ion-label>\r\n </div>\r\n </ng-template>\r\n </kendo-treeview>\r\n</div>\r\n", styles: [":host ::ng-deep .k-treeview .k-treeview-leaf{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.15);color:var(--ion-color-primary-shade);border:1px solid rgba(var(--ion-color-primary-rgb),1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf.k-selected,:host ::ng-deep .k-treeview .k-treeview-leaf.k-state-selected{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.5);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .k-treeview-leaf:hover,:host ::ng-deep .k-treeview .k-treeview-leaf.k-hover .k-treeview-leaf.k-state-hover{width:100%;margin:5px;padding:9px 20px 9px 8px;border-radius:2px;background:rgba(var(--ion-color-primary-rgb),.1);font-size:13px;cursor:pointer}:host ::ng-deep .k-treeview .tree-content-container{display:flex;align-items:center;justify-content:center}:host ::ng-deep .k-treeview .btn-seperator{width:10px;display:inline-block}.left-icon{margin-right:8px}\n"] }]
11468
11448
  }], ctorParameters: function () { return [{ type: ZComponentService }]; }, propDecorators: { nodetemplate: [{
11469
11449
  type: ViewChild,
11470
11450
  args: ["nodetemplate", { static: true }]
@@ -13812,14 +13792,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
13812
13792
  // Approach 1: Total Count is known, get next page upon scroll. (Will only have multiple pages / pageable)
13813
13793
  // Approach 2: Total Count is not known, append more data at runtime. (Will only have 1 page / not pageable)
13814
13794
  class VirtualScrollComponent extends ContainerFieldBase {
13815
- constructor(componentService) {
13795
+ constructor(componentService, fontAweSomeService) {
13816
13796
  super(componentService);
13797
+ this.fontAweSomeService = fontAweSomeService;
13798
+ this.collapsedGroupBy = []; // Used to define animation status
13799
+ this.groupByValueToExpand = ''; // Used to define animation status
13800
+ this.collapsedGroupBy_FirstNodeIndexList = new Array(); // When collapse, need to retain the first node in the list so that the group by title will not be hidden
13801
+ this.fullDataItems = [];
13802
+ this.dataItems = [];
13817
13803
  this.pageSize = 50;
13818
13804
  this.pageFetched = [];
13819
13805
  this.footerFields = [];
13820
13806
  }
13821
13807
  ngOnInit() {
13822
- this.setData();
13808
+ this.setupComponent();
13809
+ this.setupDataItems();
13823
13810
  this.setupFooter();
13824
13811
  super.initComponent().subscribe();
13825
13812
  }
@@ -13834,7 +13821,8 @@ class VirtualScrollComponent extends ContainerFieldBase {
13834
13821
  this.viewPort.scrollToIndex(0);
13835
13822
  }
13836
13823
  }
13837
- setData() {
13824
+ setupComponent() {
13825
+ this.collapsedGroupBy = [];
13838
13826
  if (this.data.Options) {
13839
13827
  if (typeof this.data.Options === 'string' && this.data.Options.startsWith('group.')) {
13840
13828
  this.options = ZComponentHelper.getGroupValue(this.data.Options, this.group);
@@ -13844,36 +13832,49 @@ class VirtualScrollComponent extends ContainerFieldBase {
13844
13832
  }
13845
13833
  this.pageSize = this.options.pageSize || 50;
13846
13834
  this.options.loadingLabel = this.options.loadingLabel || '<div>Loading</div>';
13847
- this.setupDataItems();
13848
13835
  }
13849
13836
  }
13850
13837
  appendData(dataItems) {
13851
- this.dataItems = this.dataItems.concat(dataItems);
13852
- this.options.totalCount = this.dataItems.length;
13853
- this.pageSize = this.dataItems.length;
13838
+ // this.dataItems = this.dataItems.concat(dataItems);
13839
+ // this.pageSize = this.dataItems.length;
13840
+ this.fullDataItems = this.fullDataItems.concat(dataItems);
13841
+ this.pageSize = this.fullDataItems.length;
13842
+ this.computeDataItems();
13854
13843
  }
13855
13844
  setupDataItems() {
13856
13845
  this.pageFetched = [];
13857
- if (this.options.dataItems) { // init: 50, pagesize: 20
13858
- if (Array.isArray(this.options.dataItems) && this.options.dataItems.length > 0) {
13859
- const cnt = this.options.totalCount - this.options.dataItems.length;
13860
- if (cnt < 0) {
13861
- console.error('DataItems cannot be more than total count.');
13862
- return;
13863
- }
13864
- this.dataItems = this.options.dataItems.concat(Array(cnt).fill(false));
13865
- const pageNoToMarkAsFetch = Math.ceil(this.options.dataItems.length / this.pageSize) - 1;
13866
- for (let i = 0; i <= pageNoToMarkAsFetch; i++) {
13867
- this.pageFetched.push(i);
13868
- }
13846
+ if (this.data.DataSetResult) {
13847
+ let dataSetResult = this.data.DataSetResult;
13848
+ if (typeof dataSetResult == 'string' && dataSetResult.startsWith('group.')) {
13849
+ dataSetResult = ZComponentHelper.getGroupValue(dataSetResult, this.group);
13869
13850
  }
13870
- else {
13871
- this.dataItems = Array(this.options.totalCount).fill(false);
13851
+ this.setData(dataSetResult);
13852
+ }
13853
+ else {
13854
+ this.dataItems = [];
13855
+ }
13856
+ }
13857
+ setData(dataSetResult) {
13858
+ if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {
13859
+ const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;
13860
+ if (cnt < 0) {
13861
+ console.error('DataItems cannot be more than total count.');
13862
+ return;
13872
13863
  }
13864
+ this.dataItems = dataSetResult.dataSet.concat(Array(cnt).fill(false));
13865
+ const pageNoToMarkAsFetch = Math.ceil(dataSetResult.dataSet.length / this.pageSize) - 1;
13866
+ for (let i = 0; i <= pageNoToMarkAsFetch; i++) {
13867
+ this.pageFetched.push(i);
13868
+ }
13869
+ }
13870
+ else if (dataSetResult.totalCount) {
13871
+ this.dataItems = Array(dataSetResult.totalCount).fill(false);
13873
13872
  }
13874
13873
  else {
13875
- this.dataItems = Array(this.options.totalCount).fill(false);
13874
+ this.dataItems = [];
13876
13875
  }
13876
+ this.fullDataItems = this.dataItems;
13877
+ this.computeDataItems();
13877
13878
  }
13878
13879
  populateListData() {
13879
13880
  const renderRange = this.viewPort.getRenderedRange();
@@ -13902,8 +13903,8 @@ class VirtualScrollComponent extends ContainerFieldBase {
13902
13903
  }
13903
13904
  }
13904
13905
  fetchData(pageNo) {
13905
- if (this.data['OnScroll'] && typeof this.data['OnScroll'] == 'string' && this.data['OnScroll'].startsWith('group.')) {
13906
- const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data['OnScroll']);
13906
+ if (this.data.OnScroll && typeof this.data.OnScroll == 'string' && this.data.OnScroll.startsWith('group.')) {
13907
+ const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnScroll);
13907
13908
  if (typeof onScrollEvent === 'function') {
13908
13909
  const callFunc = onScrollEvent.bind(this.group.ctrlScope);
13909
13910
  return callFunc(this.group, { pageNo: pageNo, pageSize: this.pageSize });
@@ -13924,13 +13925,72 @@ class VirtualScrollComponent extends ContainerFieldBase {
13924
13925
  this.footerFields = this.data.Value.filter(x => x.Section === 'footer');
13925
13926
  }
13926
13927
  }
13928
+ //#region Group By
13929
+ getGroupByLabelTemplate(dataItem, options) {
13930
+ if (options.groupByLabelTemplate && typeof options.groupByLabelTemplate == 'string') {
13931
+ if (options.groupByLabelTemplate.startsWith('group.')) {
13932
+ const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, options.groupByLabelTemplate);
13933
+ if (getTemplateFunc) {
13934
+ return getTemplateFunc({
13935
+ dataItem,
13936
+ options,
13937
+ });
13938
+ }
13939
+ }
13940
+ else {
13941
+ return dataItem[options.groupByLabelTemplate];
13942
+ }
13943
+ }
13944
+ }
13945
+ groupByOnClick(groupByValue) {
13946
+ if (!this.options.isGroupByCollapsible) {
13947
+ return;
13948
+ }
13949
+ // use collapse / expand to control animation sequence
13950
+ const isToCollapse = !this.collapsedGroupBy.includes(groupByValue);
13951
+ const firstNodeIndex = this.fullDataItems.map(x => x[this.options.groupBy]).indexOf(groupByValue);
13952
+ if (isToCollapse) {
13953
+ // to collapse (For animation: Change status, then append data)
13954
+ this.collapsedGroupBy.push(groupByValue);
13955
+ this.collapsedGroupBy_FirstNodeIndexList.push(firstNodeIndex);
13956
+ of({}).pipe(delay$1(400), tap$1(() => this.computeDataItems())).subscribe();
13957
+ }
13958
+ else {
13959
+ // to expand (For animation: Append data, then change status)
13960
+ this.collapsedGroupBy_FirstNodeIndexList = this.collapsedGroupBy_FirstNodeIndexList.filter(x => x != firstNodeIndex);
13961
+ const tempCollapsedGroupBy = this.collapsedGroupBy.filter(x => x !== groupByValue);
13962
+ this.dataItems = this.fullDataItems.filter((x, index) => !tempCollapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
13963
+ this.groupByValueToExpand = groupByValue;
13964
+ of({}).pipe(delay$1(0), tap$1(() => {
13965
+ this.collapsedGroupBy = tempCollapsedGroupBy;
13966
+ this.groupByValueToExpand = groupByValue;
13967
+ })).subscribe();
13968
+ }
13969
+ }
13970
+ computeDataItems() {
13971
+ this.dataItems = this.fullDataItems.filter((x, index) => !this.collapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
13972
+ }
13973
+ expandAll() {
13974
+ this.collapsedGroupBy = [];
13975
+ this.computeDataItems();
13976
+ }
13977
+ expandByGroupByValues(groupByValue) {
13978
+ this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));
13979
+ this.computeDataItems();
13980
+ }
13927
13981
  }
13928
- VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
13929
- 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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": HtmlSanitizePipe } });
13982
+ VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: ZComponentService }, { token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
13983
+ 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 class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"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 [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 virtual-scroll-dataitem\" (click)=\"onClick($event, dataItem)\"\r\n [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 </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:-moz-fit-content;width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}\n"], components: [{ type: i3$b.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { type: i5$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form", "containerField"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.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: i3$b.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { type: i3$b.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "htmlSanitize": HtmlSanitizePipe }, animations: [
13984
+ collapseAnimation,
13985
+ rotateAnimation
13986
+ ] });
13930
13987
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, decorators: [{
13931
13988
  type: Component,
13932
- 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"] }]
13933
- }], ctorParameters: function () { return [{ type: ZComponentService }]; }, propDecorators: { viewPort: [{
13989
+ args: [{ selector: "app-virtual-scroll", animations: [
13990
+ collapseAnimation,
13991
+ rotateAnimation
13992
+ ], 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 class=\"virtual-scroll-groupby e1tag-container-style4\" [style]=\"componentProperties.containerStyle.style4\"\r\n *ngIf=\"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 [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 virtual-scroll-dataitem\" (click)=\"onClick($event, dataItem)\"\r\n [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 </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:-moz-fit-content;width:fit-content}.virtual-scroll-viewport .virtual-scroll-dataitem.groupby-value-expand{transform:translateY(-10%);opacity:.2}\n"] }]
13993
+ }], ctorParameters: function () { return [{ type: ZComponentService }, { type: i2.FontAweSomeService }]; }, propDecorators: { viewPort: [{
13934
13994
  type: ViewChild,
13935
13995
  args: [CdkVirtualScrollViewport]
13936
13996
  }] } });