mmhglobal-dynamicform 2.15.2 → 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.
- package/README.md +11 -0
- package/esm2020/lib/animations/component-animations.mjs +29 -2
- package/esm2020/lib/services/main.service.mjs +22 -68
- package/esm2020/lib/virtual-scroll/virtual-scroll.component.mjs +118 -35
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +27 -4
- package/esm2020/lib/zgrid/zgrid.component.mjs +4 -2
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +12 -14
- package/esm2020/lib/ztree/ztree.component.mjs +3 -3
- package/fesm2015/mmhglobal-dynamicform.mjs +201 -116
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +200 -116
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/animations/component-animations.d.ts +2 -0
- package/lib/virtual-scroll/virtual-scroll.component.d.ts +15 -4
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -7,7 +7,7 @@ import { NavigationStart, NavigationEnd, NavigationError, RouterModule } from '@
|
|
|
7
7
|
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';
|
|
8
8
|
import { tap, switchMap, map, take, delay, concatMap, ignoreElements } from 'rxjs/operators';
|
|
9
9
|
import * as i2 from 'mmhglobal-zcore';
|
|
10
|
-
import { ZGroup, FormType, ZComponentHelper, MESSAGETYPE, DefaultMessage, DefaultDialogTitle,
|
|
10
|
+
import { ZGroup, FormType, ZComponentHelper, MESSAGETYPE, ActionType, DefaultMessage, DefaultDialogTitle, Delimiter, ZSelectPostApiParams, ZComponentProperties, ComponentType as ComponentType$1, InternalComponentType_DropDown, UploadMetaData, AttachmentConfig, DefaultPageSettingParams, ZCoreModule } from 'mmhglobal-zcore';
|
|
11
11
|
import * as i2$1 from '@ionic/angular';
|
|
12
12
|
import { IonicModule } from '@ionic/angular';
|
|
13
13
|
import * as i3 from 'mmhglobal-zmodal';
|
|
@@ -18,7 +18,7 @@ import * as i8 from '@progress/kendo-angular-grid';
|
|
|
18
18
|
import { DataBindingDirective, GridComponent, BaseFilterCellComponent, ExcelModule, GridModule } from '@progress/kendo-angular-grid';
|
|
19
19
|
import * as i5 from '@angular/common';
|
|
20
20
|
import { formatDate, CommonModule } from '@angular/common';
|
|
21
|
-
import * as
|
|
21
|
+
import * as i3$b from '@angular/cdk/scrolling';
|
|
22
22
|
import { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';
|
|
23
23
|
import * as i4 from '@angular/forms';
|
|
24
24
|
import { Validators, FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
@@ -85,7 +85,7 @@ import 'brace/mode/json';
|
|
|
85
85
|
import 'brace/mode/javascript';
|
|
86
86
|
import 'brace/mode/html';
|
|
87
87
|
import { process } from '@progress/kendo-data-query';
|
|
88
|
-
import { trigger, transition, style, animate } from '@angular/animations';
|
|
88
|
+
import { trigger, transition, style, animate, state } from '@angular/animations';
|
|
89
89
|
import * as i3$7 from '@progress/kendo-angular-toolbar';
|
|
90
90
|
import { MultiSelect, DropDownList } from '@syncfusion/ej2-dropdowns';
|
|
91
91
|
import { createElement, getComponent } from '@syncfusion/ej2-base';
|
|
@@ -921,55 +921,7 @@ class MainService {
|
|
|
921
921
|
}
|
|
922
922
|
return of(false);
|
|
923
923
|
}));
|
|
924
|
-
|
|
925
|
-
// this.alertCtrl
|
|
926
|
-
// .create({
|
|
927
|
-
// header: "Data not save yet",
|
|
928
|
-
// // subHeader: 'SubHeader statement here',
|
|
929
|
-
// message: "Are you sure want to discard the changes?",
|
|
930
|
-
// buttons: [
|
|
931
|
-
// {
|
|
932
|
-
// text: "Cancel",
|
|
933
|
-
// role: "cancel",
|
|
934
|
-
// cssClass: "secondary",
|
|
935
|
-
// handler: () => {
|
|
936
|
-
// replySub.next(false);
|
|
937
|
-
// }
|
|
938
|
-
// },
|
|
939
|
-
// {
|
|
940
|
-
// text: "Discard Changes",
|
|
941
|
-
// cssClass: "warning",
|
|
942
|
-
// handler: () => {
|
|
943
|
-
// replySub.next(true);
|
|
944
|
-
// }
|
|
945
|
-
// }
|
|
946
|
-
// ]
|
|
947
|
-
// })
|
|
948
|
-
// .then(alertElement => {
|
|
949
|
-
// alertElement.present();
|
|
950
|
-
// });
|
|
951
|
-
// return replySub.asObservable().pipe(take(1));
|
|
952
|
-
}
|
|
953
|
-
// async openModalForm(modalParams: ModalPageParams) {
|
|
954
|
-
// // console.log("openModalForm");
|
|
955
|
-
// console.error(
|
|
956
|
-
// "Please use ModalService.show instead of MainService.openModalForm!"
|
|
957
|
-
// );
|
|
958
|
-
// // const modal = this.modalService.show(modalParams.colFields$ || modalParams.controllerName, modalParams.parentGroup,
|
|
959
|
-
// // modalParams.formHeader, modalParams.zModel, modalParams.referId);
|
|
960
|
-
// const modal = await this.modalCtrl.create({
|
|
961
|
-
// component: ZmodalPage,
|
|
962
|
-
// backdropDismiss: true,
|
|
963
|
-
// componentProps: {
|
|
964
|
-
// modalParams,
|
|
965
|
-
// },
|
|
966
|
-
// });
|
|
967
|
-
// modal.present();
|
|
968
|
-
// return modal;
|
|
969
|
-
// // .onWillDismiss((zmodel: any) => {
|
|
970
|
-
// // this.
|
|
971
|
-
// // });
|
|
972
|
-
// }
|
|
924
|
+
}
|
|
973
925
|
closeModalForm(group) {
|
|
974
926
|
if (group && group.subject) {
|
|
975
927
|
group.subject.next({
|
|
@@ -1107,8 +1059,9 @@ class MainService {
|
|
|
1107
1059
|
if (this.previousRouteParam) {
|
|
1108
1060
|
const paramSegment = this.previousRouteParam.split("/");
|
|
1109
1061
|
const actionSegment = paramSegment[paramSegment.length - 1];
|
|
1110
|
-
// If the last segment is 'new' or 'update', store the previous route param in session storage
|
|
1111
|
-
|
|
1062
|
+
// If the last segment is 'new' or 'update', store the previous route param in session storage
|
|
1063
|
+
const validActionTypes = [ActionType.New.toString(), ActionType.Edit.toString(), ActionType.Update.toString()];
|
|
1064
|
+
if (validActionTypes.includes(actionSegment)) {
|
|
1112
1065
|
this.storageService.set(this.PREVIOUS_PAGE_ROUTE_PARAM_STORAGE_KEY, JSON.stringify(this.previousRouteParam));
|
|
1113
1066
|
}
|
|
1114
1067
|
}
|
|
@@ -1336,11 +1289,11 @@ class MainService {
|
|
|
1336
1289
|
//const lastSegment = pathSegment[pathSegment.length - 1];
|
|
1337
1290
|
const currentNavigationParam = this.getNavigationCurrentParam();
|
|
1338
1291
|
const navigationSegments = currentNavigationParam ? currentNavigationParam.split('/') : null;
|
|
1339
|
-
const defaultAction = group.isCloneNew ?
|
|
1340
|
-
const actionSegment = group.isCloneNew ? (navigationSegments ? navigationSegments[navigationSegments.length - 1] :
|
|
1292
|
+
const defaultAction = group.isCloneNew ? ActionType.New : ActionType.Edit;
|
|
1293
|
+
const actionSegment = group.isCloneNew ? (navigationSegments ? navigationSegments[navigationSegments.length - 1] : ActionType.New) : defaultAction;
|
|
1341
1294
|
if (group.isListForm) {
|
|
1342
1295
|
this.tryUpdateGroupTrigger(false);
|
|
1343
|
-
this.setNavigationParams([referenceId,
|
|
1296
|
+
this.setNavigationParams([referenceId, ActionType.New.toString()]);
|
|
1344
1297
|
this.router.navigate([group.editModelURL], {
|
|
1345
1298
|
relativeTo: group.ctrlScope.activatedRoute,
|
|
1346
1299
|
});
|
|
@@ -1354,7 +1307,7 @@ class MainService {
|
|
|
1354
1307
|
// Scenario 6: From List open record(action: edit), isCloneNew, Save, Click New ==> Clear form (When UpdateModel, need change isCloneNew = false)
|
|
1355
1308
|
// Scenario 7: From List open record(action: edit), Click New ==> Clear form
|
|
1356
1309
|
// Scenario 8: From List open record(action: edit), Click New, Save, isCloneNew ==> DONT Clear form
|
|
1357
|
-
if (actionSegment ===
|
|
1310
|
+
if (actionSegment === ActionType.Edit || actionSegment === ActionType.New) {
|
|
1358
1311
|
if (!group.isCloneNew) {
|
|
1359
1312
|
group.zModel = {};
|
|
1360
1313
|
group.form.reset();
|
|
@@ -1363,14 +1316,14 @@ class MainService {
|
|
|
1363
1316
|
this.reloadWorkflowButton(group, event.data.zButtonName);
|
|
1364
1317
|
}
|
|
1365
1318
|
}
|
|
1366
|
-
if (actionSegment ===
|
|
1319
|
+
if (actionSegment === ActionType.Edit) {
|
|
1367
1320
|
// clear cloneNewModel cache(if have)
|
|
1368
1321
|
if (this.cacheService.getCache(this.CLONE_NEW_MODEL_CACHE_KEY)) {
|
|
1369
1322
|
this.cacheService.clearCache(this.CLONE_NEW_MODEL_CACHE_KEY);
|
|
1370
1323
|
}
|
|
1371
1324
|
//this.setNavigationParams([referenceId, 'new']);
|
|
1372
1325
|
this.removeLastRouteParam();
|
|
1373
|
-
this.setRouteParam([referenceId,
|
|
1326
|
+
this.setRouteParam([referenceId, ActionType.New.toString()]);
|
|
1374
1327
|
group.zModel[group.parentReferenceField] = referenceId;
|
|
1375
1328
|
}
|
|
1376
1329
|
group.isEdit = false;
|
|
@@ -1379,7 +1332,7 @@ class MainService {
|
|
|
1379
1332
|
}
|
|
1380
1333
|
else {
|
|
1381
1334
|
this.tryUpdateGroupTrigger(false);
|
|
1382
|
-
this.setNavigationParams([referenceId,
|
|
1335
|
+
this.setNavigationParams([referenceId, ActionType.New.toString()]);
|
|
1383
1336
|
this.router.navigate([group.editModelURL], {
|
|
1384
1337
|
relativeTo: group.ctrlScope.activatedRoute,
|
|
1385
1338
|
});
|
|
@@ -1395,10 +1348,10 @@ class MainService {
|
|
|
1395
1348
|
}
|
|
1396
1349
|
createModel(event, group) {
|
|
1397
1350
|
const fg = group.form;
|
|
1398
|
-
const resMessage = group.SuccessCreatedMessage ||
|
|
1351
|
+
const resMessage = group.SuccessCreatedMessage || DefaultMessage.recordCreated;
|
|
1399
1352
|
let createModelres = null;
|
|
1400
1353
|
if (!fg.dirty) {
|
|
1401
|
-
console.warn(
|
|
1354
|
+
console.warn(DefaultMessage.notDirtyMessage);
|
|
1402
1355
|
return;
|
|
1403
1356
|
}
|
|
1404
1357
|
if (!fg.valid) {
|
|
@@ -1453,7 +1406,7 @@ class MainService {
|
|
|
1453
1406
|
}
|
|
1454
1407
|
updateModelObservable(event, group, form = null, updateAPIObservable = null, isSkipDirty = false) {
|
|
1455
1408
|
const fg = form || group.form;
|
|
1456
|
-
const resMessage = group.SuccessUpdatedMessage ||
|
|
1409
|
+
const resMessage = group.SuccessUpdatedMessage || DefaultMessage.recordUpdated;
|
|
1457
1410
|
let updateModelres = null;
|
|
1458
1411
|
if (!this.isFormDirtyAndValid(fg, group, isSkipDirty, event)) {
|
|
1459
1412
|
if (isSkipDirty) {
|
|
@@ -1461,7 +1414,7 @@ class MainService {
|
|
|
1461
1414
|
}
|
|
1462
1415
|
return of(false);
|
|
1463
1416
|
}
|
|
1464
|
-
updateAPIObservable = updateAPIObservable || this.webApiService.httpPut$(group.resourceURL
|
|
1417
|
+
updateAPIObservable = updateAPIObservable || this.webApiService.httpPut$(`${group.resourceURL}/${group.zModel.Id}`, group.zModel, false).pipe(tap((res) => {
|
|
1465
1418
|
this.handleSuccess(res, resMessage);
|
|
1466
1419
|
}
|
|
1467
1420
|
//this.handleSuccess(res, "Record is updated successfully.")
|
|
@@ -1535,14 +1488,14 @@ class MainService {
|
|
|
1535
1488
|
}
|
|
1536
1489
|
deleteModel(event, group) {
|
|
1537
1490
|
const fg = group.form;
|
|
1538
|
-
const resMessage = group.SuccessDeletedMessage ||
|
|
1491
|
+
const resMessage = group.SuccessDeletedMessage || DefaultMessage.recordDeleted;
|
|
1539
1492
|
of(group.zModel)
|
|
1540
1493
|
.pipe(switchMap((zmodel) => {
|
|
1541
1494
|
console.log("Before delete, zModel:", zmodel);
|
|
1542
1495
|
return this.beforeDeleteModel(group);
|
|
1543
1496
|
}), switchMap(() => {
|
|
1544
1497
|
group.isTriggered = false;
|
|
1545
|
-
return this.alertService.show("Delete Record",
|
|
1498
|
+
return this.alertService.show("Delete Record", DefaultMessage.confirmation, [
|
|
1546
1499
|
{ text: "No", cssClass: "secondary" },
|
|
1547
1500
|
{ text: "Yes", cssClass: "primary" }
|
|
1548
1501
|
]);
|
|
@@ -1608,7 +1561,7 @@ class MainService {
|
|
|
1608
1561
|
}
|
|
1609
1562
|
isFormDirtyAndValid(fg, group, isSkipDirty = false, event) {
|
|
1610
1563
|
if (!isSkipDirty && !fg.dirty) {
|
|
1611
|
-
console.warn(
|
|
1564
|
+
console.warn(DefaultMessage.notDirtyMessage);
|
|
1612
1565
|
const message = event && event.data && event.data[`FormNotDirtyMessage`] ? event.data[`FormNotDirtyMessage`] : DefaultMessage.notDirtyMessage;
|
|
1613
1566
|
this.alertService.showOkay(DefaultDialogTitle.nothingToUpdate, message, ["col-5"]);
|
|
1614
1567
|
return false;
|
|
@@ -1813,16 +1766,17 @@ class MainService {
|
|
|
1813
1766
|
}
|
|
1814
1767
|
}
|
|
1815
1768
|
handleSignalRModificationAlert(formId) {
|
|
1816
|
-
if (this.signalrService.signalREnabled()) {
|
|
1769
|
+
if (this.signalrService.signalREnabled() && this.environment.enableFormPageModificationAlert) {
|
|
1817
1770
|
const eventName = `${window.location.href}`.replace(/([^:]\/)\/+/g, "$1");
|
|
1818
1771
|
if (!this.group.signalRCallbackHandler) {
|
|
1819
1772
|
this.group.signalRCallbackHandler = {};
|
|
1820
1773
|
}
|
|
1821
1774
|
this.group.signalRCallbackHandler['alertFormModified'] = this.alertFormModified.bind(this, formId);
|
|
1775
|
+
this.signalrService.unsubscribeFromEvent(`${eventName}`); // unsubscribe the event before subscribe to event again.
|
|
1822
1776
|
this.signalrService.subscribeToEvent(this.group, `${eventName}`, `group.signalRCallbackHandler.alertFormModified`);
|
|
1823
1777
|
}
|
|
1824
1778
|
else {
|
|
1825
|
-
console.warn('
|
|
1779
|
+
console.warn('enableFormPageModificationAlert not enabled.');
|
|
1826
1780
|
}
|
|
1827
1781
|
}
|
|
1828
1782
|
alertFormModified(formId, group, resp, eventName) {
|
|
@@ -2834,6 +2788,7 @@ class ZGridBindingDirective extends DataBindingDirective {
|
|
|
2834
2788
|
* @returns {void}
|
|
2835
2789
|
*/
|
|
2836
2790
|
filterChange(event) {
|
|
2791
|
+
var _a;
|
|
2837
2792
|
this.params.pageNo = 0;
|
|
2838
2793
|
this.params.filterParams = [];
|
|
2839
2794
|
this.setFilterParamsByParentRefId();
|
|
@@ -2863,8 +2818,31 @@ class ZGridBindingDirective extends DataBindingDirective {
|
|
|
2863
2818
|
}
|
|
2864
2819
|
});
|
|
2865
2820
|
}
|
|
2866
|
-
this.
|
|
2867
|
-
|
|
2821
|
+
if ((_a = this.field.GridFilterConfiguration) === null || _a === void 0 ? void 0 : _a.OnChange) {
|
|
2822
|
+
console.log("GridFilterConfiguration.OnChange triggered");
|
|
2823
|
+
// Use switchMap to handle the asynchronous operation
|
|
2824
|
+
of(this.params.filterParams).pipe(switchMap((filterParams) => {
|
|
2825
|
+
let expression = this.field.GridFilterConfiguration.OnChange;
|
|
2826
|
+
expression = expression.replace('modalGroup.', 'group.');
|
|
2827
|
+
expression = expression.replace('group.', 'grp.');
|
|
2828
|
+
const func = eval('this.' + expression);
|
|
2829
|
+
const callFunc = func.bind(this.grp);
|
|
2830
|
+
return callFunc(filterParams);
|
|
2831
|
+
})).subscribe((updatedFilterParams) => {
|
|
2832
|
+
console.log(updatedFilterParams);
|
|
2833
|
+
// update filterParams
|
|
2834
|
+
if (updatedFilterParams) {
|
|
2835
|
+
this.params.filterParams = updatedFilterParams;
|
|
2836
|
+
}
|
|
2837
|
+
this.changeEvent.filterChanged = true;
|
|
2838
|
+
this.getDataBinding();
|
|
2839
|
+
});
|
|
2840
|
+
}
|
|
2841
|
+
else {
|
|
2842
|
+
// If there is no GridFilterConfiguration.OnChange
|
|
2843
|
+
this.changeEvent.filterChanged = true;
|
|
2844
|
+
this.getDataBinding();
|
|
2845
|
+
}
|
|
2868
2846
|
}
|
|
2869
2847
|
dataStateChange(state) {
|
|
2870
2848
|
this.grid.loading = true;
|
|
@@ -6652,6 +6630,33 @@ const hideAndShowVerticalAnimation = trigger('hideAndShowAnimation', [
|
|
|
6652
6630
|
style({ transform: 'translateY(0)', opacity: 1, height: 100 }),
|
|
6653
6631
|
animate('300ms ease-in', style({ transform: 'translateY(-20%)', opacity: 0, height: 0 }))
|
|
6654
6632
|
])
|
|
6633
|
+
]);
|
|
6634
|
+
const rotateAnimation = trigger('rotateAnimation', [
|
|
6635
|
+
state('default', style({
|
|
6636
|
+
transform: 'rotate(0deg)'
|
|
6637
|
+
})),
|
|
6638
|
+
state('rotate', style({
|
|
6639
|
+
transform: 'rotate(' + '{{degree}}' + 'deg)'
|
|
6640
|
+
}), { params: { degree: 90 } }),
|
|
6641
|
+
transition('* => *', [
|
|
6642
|
+
animate('{{duration}}')
|
|
6643
|
+
], { params: { duration: '0.2s' } }),
|
|
6644
|
+
]);
|
|
6645
|
+
const collapseAnimation = trigger('collapseAnimation', [
|
|
6646
|
+
state('default', style({
|
|
6647
|
+
transform: 'translateY(0)', opacity: 1, display: 'block'
|
|
6648
|
+
})),
|
|
6649
|
+
state('collapse', style({
|
|
6650
|
+
transform: 'translateY(' + '{{height}}' + ')',
|
|
6651
|
+
opacity: 0,
|
|
6652
|
+
display: 'none'
|
|
6653
|
+
}), { params: { height: '-10%' } }),
|
|
6654
|
+
transition('* => collapse', [
|
|
6655
|
+
animate('{{duration}}')
|
|
6656
|
+
], { params: { duration: '0.2s' } }),
|
|
6657
|
+
transition('* => default', [
|
|
6658
|
+
animate('{{duration}}')
|
|
6659
|
+
], { params: { duration: '0.2s' } })
|
|
6655
6660
|
]);
|
|
6656
6661
|
|
|
6657
6662
|
/********** Angular **********/
|
|
@@ -7113,9 +7118,7 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7113
7118
|
getzDataForzModel$.subscribe((zdata) => {
|
|
7114
7119
|
console.log(data.Name, ' - initial zData load: ', zdata);
|
|
7115
7120
|
if (this.group) {
|
|
7116
|
-
|
|
7117
|
-
this.group.afterLoadzDataOptions(this.group);
|
|
7118
|
-
}
|
|
7121
|
+
this.afterLoadzDataOptions();
|
|
7119
7122
|
}
|
|
7120
7123
|
this.isLoading = false;
|
|
7121
7124
|
});
|
|
@@ -7137,9 +7140,7 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7137
7140
|
this.autoSelectFirstOption(isRequired, optionData[0], fieldValue, zModel.Id);
|
|
7138
7141
|
}
|
|
7139
7142
|
if (this.group) {
|
|
7140
|
-
|
|
7141
|
-
this.group.afterLoadzDataOptions(this.group);
|
|
7142
|
-
}
|
|
7143
|
+
this.afterLoadzDataOptions();
|
|
7143
7144
|
}
|
|
7144
7145
|
this.isLoading = false;
|
|
7145
7146
|
});
|
|
@@ -7156,9 +7157,7 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7156
7157
|
setTimeout(function () {
|
|
7157
7158
|
thisComponent.autoSelectFirstOption(isRequired, optionData[0], fieldValue, thisComponent.group.zModel.Id);
|
|
7158
7159
|
if (this.group) {
|
|
7159
|
-
|
|
7160
|
-
this.group.afterLoadzDataOptions(this.group);
|
|
7161
|
-
}
|
|
7160
|
+
this.afterLoadzDataOptions();
|
|
7162
7161
|
}
|
|
7163
7162
|
}, 100);
|
|
7164
7163
|
}
|
|
@@ -7289,7 +7288,7 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7289
7288
|
this.onSearch({ component: null, text: value });
|
|
7290
7289
|
if (this.group) {
|
|
7291
7290
|
if (this.group.afterLoadzDataOptions) {
|
|
7292
|
-
this.group.afterLoadzDataOptions(this.group);
|
|
7291
|
+
this.group.afterLoadzDataOptions(this.group, this.data);
|
|
7293
7292
|
}
|
|
7294
7293
|
}
|
|
7295
7294
|
});
|
|
@@ -7306,9 +7305,7 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7306
7305
|
.subscribe(() => {
|
|
7307
7306
|
this.onSearch({ component: null, text: value });
|
|
7308
7307
|
if (this.group) {
|
|
7309
|
-
|
|
7310
|
-
this.group.afterLoadzDataOptions(this.group);
|
|
7311
|
-
}
|
|
7308
|
+
this.afterLoadzDataOptions();
|
|
7312
7309
|
}
|
|
7313
7310
|
this.isLoading = false;
|
|
7314
7311
|
});
|
|
@@ -7532,6 +7529,12 @@ class ZselectmultipleComponent extends InputFieldBase {
|
|
|
7532
7529
|
}
|
|
7533
7530
|
}
|
|
7534
7531
|
}
|
|
7532
|
+
afterLoadzDataOptions() {
|
|
7533
|
+
if (this.group.afterLoadzDataOptions) {
|
|
7534
|
+
console.log("group.afterLoadzDataOptions triggered." + this.data);
|
|
7535
|
+
this.group.afterLoadzDataOptions(this.group, this.data);
|
|
7536
|
+
}
|
|
7537
|
+
}
|
|
7535
7538
|
}
|
|
7536
7539
|
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 });
|
|
7537
7540
|
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 +8861,6 @@ class ZgridComponent extends DataListingFieldBase {
|
|
|
8858
8861
|
console.warn('Invalid/Empty grid(' + this.data.Name + ') data to generate column');
|
|
8859
8862
|
}
|
|
8860
8863
|
else {
|
|
8861
|
-
const fieldName = this.data['FieldElementName'];
|
|
8862
8864
|
this.columns = [];
|
|
8863
8865
|
const generateHiddenColumns = [];
|
|
8864
8866
|
ZComponentHelper.getGridColumns({
|
|
@@ -9126,6 +9128,9 @@ class ZgridComponent extends DataListingFieldBase {
|
|
|
9126
9128
|
this.inlineEditedFormGroups = {};
|
|
9127
9129
|
this.zgrid.getDataBinding();
|
|
9128
9130
|
}
|
|
9131
|
+
else {
|
|
9132
|
+
console.warn('this.zgrid is undefined.');
|
|
9133
|
+
}
|
|
9129
9134
|
}
|
|
9130
9135
|
getGridData() {
|
|
9131
9136
|
return this.isUseLocalData() ? (this.zgrid.data || this.zgrid.originalData) : (this.zgrid.grid.data && this.zgrid.grid.data.data ? this.zgrid.grid.data.data : []);
|
|
@@ -11467,10 +11472,10 @@ class ZtreeComponent extends DataListingFieldBase {
|
|
|
11467
11472
|
}
|
|
11468
11473
|
}
|
|
11469
11474
|
ZtreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtreeComponent, deps: [{ token: ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11470
|
-
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 } });
|
|
11475
|
+
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 } });
|
|
11471
11476
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZtreeComponent, decorators: [{
|
|
11472
11477
|
type: Component,
|
|
11473
|
-
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"] }]
|
|
11478
|
+
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"] }]
|
|
11474
11479
|
}], ctorParameters: function () { return [{ type: ZComponentService }]; }, propDecorators: { nodetemplate: [{
|
|
11475
11480
|
type: ViewChild,
|
|
11476
11481
|
args: ["nodetemplate", { static: true }]
|
|
@@ -13827,14 +13832,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
13827
13832
|
// Approach 1: Total Count is known, get next page upon scroll. (Will only have multiple pages / pageable)
|
|
13828
13833
|
// Approach 2: Total Count is not known, append more data at runtime. (Will only have 1 page / not pageable)
|
|
13829
13834
|
class VirtualScrollComponent extends ContainerFieldBase {
|
|
13830
|
-
constructor(componentService) {
|
|
13835
|
+
constructor(componentService, fontAweSomeService) {
|
|
13831
13836
|
super(componentService);
|
|
13837
|
+
this.fontAweSomeService = fontAweSomeService;
|
|
13838
|
+
this.collapsedGroupBy = []; // Used to define animation status
|
|
13839
|
+
this.groupByValueToExpand = ''; // Used to define animation status
|
|
13840
|
+
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
|
|
13841
|
+
this.fullDataItems = [];
|
|
13842
|
+
this.dataItems = [];
|
|
13832
13843
|
this.pageSize = 50;
|
|
13833
13844
|
this.pageFetched = [];
|
|
13834
13845
|
this.footerFields = [];
|
|
13835
13846
|
}
|
|
13836
13847
|
ngOnInit() {
|
|
13837
|
-
this.
|
|
13848
|
+
this.setupComponent();
|
|
13849
|
+
this.setupDataItems();
|
|
13838
13850
|
this.setupFooter();
|
|
13839
13851
|
super.initComponent().subscribe();
|
|
13840
13852
|
}
|
|
@@ -13849,7 +13861,8 @@ class VirtualScrollComponent extends ContainerFieldBase {
|
|
|
13849
13861
|
this.viewPort.scrollToIndex(0);
|
|
13850
13862
|
}
|
|
13851
13863
|
}
|
|
13852
|
-
|
|
13864
|
+
setupComponent() {
|
|
13865
|
+
this.collapsedGroupBy = [];
|
|
13853
13866
|
if (this.data.Options) {
|
|
13854
13867
|
if (typeof this.data.Options === 'string' && this.data.Options.startsWith('group.')) {
|
|
13855
13868
|
this.options = ZComponentHelper.getGroupValue(this.data.Options, this.group);
|
|
@@ -13859,36 +13872,49 @@ class VirtualScrollComponent extends ContainerFieldBase {
|
|
|
13859
13872
|
}
|
|
13860
13873
|
this.pageSize = this.options.pageSize || 50;
|
|
13861
13874
|
this.options.loadingLabel = this.options.loadingLabel || '<div>Loading</div>';
|
|
13862
|
-
this.setupDataItems();
|
|
13863
13875
|
}
|
|
13864
13876
|
}
|
|
13865
13877
|
appendData(dataItems) {
|
|
13866
|
-
this.dataItems = this.dataItems.concat(dataItems);
|
|
13867
|
-
this.
|
|
13868
|
-
this.
|
|
13878
|
+
// this.dataItems = this.dataItems.concat(dataItems);
|
|
13879
|
+
// this.pageSize = this.dataItems.length;
|
|
13880
|
+
this.fullDataItems = this.fullDataItems.concat(dataItems);
|
|
13881
|
+
this.pageSize = this.fullDataItems.length;
|
|
13882
|
+
this.computeDataItems();
|
|
13869
13883
|
}
|
|
13870
13884
|
setupDataItems() {
|
|
13871
13885
|
this.pageFetched = [];
|
|
13872
|
-
if (this.
|
|
13873
|
-
|
|
13874
|
-
|
|
13875
|
-
|
|
13876
|
-
console.error('DataItems cannot be more than total count.');
|
|
13877
|
-
return;
|
|
13878
|
-
}
|
|
13879
|
-
this.dataItems = this.options.dataItems.concat(Array(cnt).fill(false));
|
|
13880
|
-
const pageNoToMarkAsFetch = Math.ceil(this.options.dataItems.length / this.pageSize) - 1;
|
|
13881
|
-
for (let i = 0; i <= pageNoToMarkAsFetch; i++) {
|
|
13882
|
-
this.pageFetched.push(i);
|
|
13883
|
-
}
|
|
13886
|
+
if (this.data.DataSetResult) {
|
|
13887
|
+
let dataSetResult = this.data.DataSetResult;
|
|
13888
|
+
if (typeof dataSetResult == 'string' && dataSetResult.startsWith('group.')) {
|
|
13889
|
+
dataSetResult = ZComponentHelper.getGroupValue(dataSetResult, this.group);
|
|
13884
13890
|
}
|
|
13885
|
-
|
|
13886
|
-
|
|
13891
|
+
this.setData(dataSetResult);
|
|
13892
|
+
}
|
|
13893
|
+
else {
|
|
13894
|
+
this.dataItems = [];
|
|
13895
|
+
}
|
|
13896
|
+
}
|
|
13897
|
+
setData(dataSetResult) {
|
|
13898
|
+
if (dataSetResult.dataSet && Array.isArray(dataSetResult.dataSet) && dataSetResult.dataSet.length > 0) {
|
|
13899
|
+
const cnt = dataSetResult.totalCount - dataSetResult.dataSet.length;
|
|
13900
|
+
if (cnt < 0) {
|
|
13901
|
+
console.error('DataItems cannot be more than total count.');
|
|
13902
|
+
return;
|
|
13887
13903
|
}
|
|
13904
|
+
this.dataItems = dataSetResult.dataSet.concat(Array(cnt).fill(false));
|
|
13905
|
+
const pageNoToMarkAsFetch = Math.ceil(dataSetResult.dataSet.length / this.pageSize) - 1;
|
|
13906
|
+
for (let i = 0; i <= pageNoToMarkAsFetch; i++) {
|
|
13907
|
+
this.pageFetched.push(i);
|
|
13908
|
+
}
|
|
13909
|
+
}
|
|
13910
|
+
else if (dataSetResult.totalCount) {
|
|
13911
|
+
this.dataItems = Array(dataSetResult.totalCount).fill(false);
|
|
13888
13912
|
}
|
|
13889
13913
|
else {
|
|
13890
|
-
this.dataItems =
|
|
13914
|
+
this.dataItems = [];
|
|
13891
13915
|
}
|
|
13916
|
+
this.fullDataItems = this.dataItems;
|
|
13917
|
+
this.computeDataItems();
|
|
13892
13918
|
}
|
|
13893
13919
|
populateListData() {
|
|
13894
13920
|
const renderRange = this.viewPort.getRenderedRange();
|
|
@@ -13917,8 +13943,8 @@ class VirtualScrollComponent extends ContainerFieldBase {
|
|
|
13917
13943
|
}
|
|
13918
13944
|
}
|
|
13919
13945
|
fetchData(pageNo) {
|
|
13920
|
-
if (this.data
|
|
13921
|
-
const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data
|
|
13946
|
+
if (this.data.OnScroll && typeof this.data.OnScroll == 'string' && this.data.OnScroll.startsWith('group.')) {
|
|
13947
|
+
const onScrollEvent = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnScroll);
|
|
13922
13948
|
if (typeof onScrollEvent === 'function') {
|
|
13923
13949
|
const callFunc = onScrollEvent.bind(this.group.ctrlScope);
|
|
13924
13950
|
return callFunc(this.group, { pageNo: pageNo, pageSize: this.pageSize });
|
|
@@ -13939,13 +13965,72 @@ class VirtualScrollComponent extends ContainerFieldBase {
|
|
|
13939
13965
|
this.footerFields = this.data.Value.filter(x => x.Section === 'footer');
|
|
13940
13966
|
}
|
|
13941
13967
|
}
|
|
13968
|
+
//#region Group By
|
|
13969
|
+
getGroupByLabelTemplate(dataItem, options) {
|
|
13970
|
+
if (options.groupByLabelTemplate && typeof options.groupByLabelTemplate == 'string') {
|
|
13971
|
+
if (options.groupByLabelTemplate.startsWith('group.')) {
|
|
13972
|
+
const getTemplateFunc = ZComponentHelper.getGroupEvalValue.call(this, options.groupByLabelTemplate);
|
|
13973
|
+
if (getTemplateFunc) {
|
|
13974
|
+
return getTemplateFunc({
|
|
13975
|
+
dataItem,
|
|
13976
|
+
options,
|
|
13977
|
+
});
|
|
13978
|
+
}
|
|
13979
|
+
}
|
|
13980
|
+
else {
|
|
13981
|
+
return dataItem[options.groupByLabelTemplate];
|
|
13982
|
+
}
|
|
13983
|
+
}
|
|
13984
|
+
}
|
|
13985
|
+
groupByOnClick(groupByValue) {
|
|
13986
|
+
if (!this.options.isGroupByCollapsible) {
|
|
13987
|
+
return;
|
|
13988
|
+
}
|
|
13989
|
+
// use collapse / expand to control animation sequence
|
|
13990
|
+
const isToCollapse = !this.collapsedGroupBy.includes(groupByValue);
|
|
13991
|
+
const firstNodeIndex = this.fullDataItems.map(x => x[this.options.groupBy]).indexOf(groupByValue);
|
|
13992
|
+
if (isToCollapse) {
|
|
13993
|
+
// to collapse (For animation: Change status, then append data)
|
|
13994
|
+
this.collapsedGroupBy.push(groupByValue);
|
|
13995
|
+
this.collapsedGroupBy_FirstNodeIndexList.push(firstNodeIndex);
|
|
13996
|
+
of({}).pipe(delay$1(400), tap$1(() => this.computeDataItems())).subscribe();
|
|
13997
|
+
}
|
|
13998
|
+
else {
|
|
13999
|
+
// to expand (For animation: Append data, then change status)
|
|
14000
|
+
this.collapsedGroupBy_FirstNodeIndexList = this.collapsedGroupBy_FirstNodeIndexList.filter(x => x != firstNodeIndex);
|
|
14001
|
+
const tempCollapsedGroupBy = this.collapsedGroupBy.filter(x => x !== groupByValue);
|
|
14002
|
+
this.dataItems = this.fullDataItems.filter((x, index) => !tempCollapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
|
|
14003
|
+
this.groupByValueToExpand = groupByValue;
|
|
14004
|
+
of({}).pipe(delay$1(0), tap$1(() => {
|
|
14005
|
+
this.collapsedGroupBy = tempCollapsedGroupBy;
|
|
14006
|
+
this.groupByValueToExpand = groupByValue;
|
|
14007
|
+
})).subscribe();
|
|
14008
|
+
}
|
|
14009
|
+
}
|
|
14010
|
+
computeDataItems() {
|
|
14011
|
+
this.dataItems = this.fullDataItems.filter((x, index) => !this.collapsedGroupBy.includes(x[this.options.groupBy]) || this.collapsedGroupBy_FirstNodeIndexList.includes(index));
|
|
14012
|
+
}
|
|
14013
|
+
expandAll() {
|
|
14014
|
+
this.collapsedGroupBy = [];
|
|
14015
|
+
this.computeDataItems();
|
|
14016
|
+
}
|
|
14017
|
+
expandByGroupByValues(groupByValue) {
|
|
14018
|
+
this.collapsedGroupBy = this.collapsedGroupBy.filter(x => !groupByValue.includes(x));
|
|
14019
|
+
this.computeDataItems();
|
|
14020
|
+
}
|
|
13942
14021
|
}
|
|
13943
|
-
VirtualScrollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, deps: [{ token: ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
13944
|
-
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:
|
|
14022
|
+
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 });
|
|
14023
|
+
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: [
|
|
14024
|
+
collapseAnimation,
|
|
14025
|
+
rotateAnimation
|
|
14026
|
+
] });
|
|
13945
14027
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VirtualScrollComponent, decorators: [{
|
|
13946
14028
|
type: Component,
|
|
13947
|
-
args: [{ selector: "app-virtual-scroll",
|
|
13948
|
-
|
|
14029
|
+
args: [{ selector: "app-virtual-scroll", animations: [
|
|
14030
|
+
collapseAnimation,
|
|
14031
|
+
rotateAnimation
|
|
14032
|
+
], 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"] }]
|
|
14033
|
+
}], ctorParameters: function () { return [{ type: ZComponentService }, { type: i2.FontAweSomeService }]; }, propDecorators: { viewPort: [{
|
|
13949
14034
|
type: ViewChild,
|
|
13950
14035
|
args: [CdkVirtualScrollViewport]
|
|
13951
14036
|
}] } });
|