mmhglobal-dynamicform 1.1.32 → 1.1.36

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 CHANGED
@@ -2,7 +2,23 @@
2
2
 
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
4
4
 
5
- ## Changelog
5
+ ## Changelog
6
+ `1.36`<br/>
7
+ Disable zgrid session storage.
8
+
9
+ `1.35`<br/>
10
+ Temp disable get grid setting from cookiestore when load.
11
+ Fix and enable back grid session storage.
12
+
13
+ `1.34`<br/>
14
+ Fix zgrid intermittent display all column.
15
+ Fix zText tooltip issue.
16
+ Fix zSelectMultiple virtual problem for desktop view.
17
+
18
+ `1.33`<br/>
19
+ [zupload] - minor fix for selectFileOnly attribute. <br/>
20
+ [zgrid] - added support for filter operator "contains" for .net core. Default as contains, to use ==, zgrid attribute add FilterContainsUsingEqual:true.
21
+
6
22
  `1.32`<br/>
7
23
  [zgrid] - added getFormControlData function to retrieve incell data. <br/>
8
24
  [zgrid] - added AfterloadCallback attribute handling. <br/>
@@ -2127,20 +2127,102 @@
2127
2127
  _this.getGrantType();
2128
2128
  _this.setHiddenColumn(gridSetting);
2129
2129
  _this.params.referId = _this.getFieldReferenceId() || _this.grp.referenceId || null;
2130
- }), operators.switchMap(function () {
2131
- //Get Session
2132
- return _this.getGridSessionFilter(_this.grp, _this);
2133
- }), operators.switchMap(function () {
2134
- //Before get grid data
2135
- return _this.beforeGridGetData(_this.grp, _this);
2136
- }), operators.switchMap(function () {
2137
- //Set grid data
2138
- return _this.setGridSessionFilter(_this.grp, _this);
2130
+ //}),
2131
+ //switchMap(() => {
2132
+ // //Get Session
2133
+ // return this.getGridSessionFilter(this.grp, this);
2134
+ //}),
2135
+ //switchMap(() => {
2136
+ // //Before get grid data
2137
+ // return this.beforeGridGetData(this.grp, this);
2138
+ //}),
2139
+ //switchMap(() => {
2140
+ // //Set grid data
2141
+ // return this.setGridSessionFilter(this.grp, this);
2139
2142
  }))
2140
2143
  .subscribe(function () {
2141
2144
  _this.getDataBinding();
2142
2145
  });
2143
2146
  };
2147
+ ZGridBindingDirective.prototype.getFilterParamsColumns = function () {
2148
+ var colFields = [];
2149
+ this.gridColumns.forEach(function (field) {
2150
+ if (field.valueExpr) {
2151
+ colFields.push(field.valueExpr + " as " + field.field);
2152
+ }
2153
+ else {
2154
+ colFields.push(field.field);
2155
+ }
2156
+ });
2157
+ if (colFields.length > 0) {
2158
+ if (colFields.indexOf("Id") === -1) {
2159
+ colFields.push("Id");
2160
+ }
2161
+ }
2162
+ var tmpGridColumn = [];
2163
+ tmpGridColumn.push(colFields.join(","));
2164
+ if (this.usableColumns.length > 0) {
2165
+ tmpGridColumn.push(this.usableColumns.join(","));
2166
+ }
2167
+ this.params.columns = tmpGridColumn.join(",");
2168
+ };
2169
+ ZGridBindingDirective.prototype.getFilter = function () {
2170
+ var _this = this;
2171
+ if (this.params.filters && this.field.Filters) {
2172
+ this.params.filters = this.params.filters + " && " + this.field.Filters;
2173
+ }
2174
+ else if (!this.params.filters && this.field.Filters) {
2175
+ this.params.filters = this.field.Filters;
2176
+ }
2177
+ if (this.field.Filters && this.field.Filters.indexOf("group.") !== -1) {
2178
+ var filterKeyValPairs = this.field.Filters.split(" ");
2179
+ var grpValues = filterKeyValPairs.filter(function (element) { return element.trim().indexOf("group.") !== -1; });
2180
+ grpValues.forEach(function (val) {
2181
+ var actualVal = i3.ZComponentHelper.getGroupValue(val, _this.grp);
2182
+ _this.params.filters = _this.params.filters.replace(val, actualVal);
2183
+ });
2184
+ }
2185
+ };
2186
+ ZGridBindingDirective.prototype.getFilterParams = function () {
2187
+ if (this.field['FilterParams']) {
2188
+ if (this.field['FilterParams'].indexOf("group.") !== -1) {
2189
+ this.params.filterParams = i3.ZComponentHelper.getGroupValue(this.field['FilterParams'], this.grp);
2190
+ }
2191
+ else {
2192
+ this.params.filterParams = this.field['FilterParams'];
2193
+ }
2194
+ }
2195
+ };
2196
+ ZGridBindingDirective.prototype.getSorting = function () {
2197
+ if (this.field.SortOrder) {
2198
+ if (this.field.SortOrder.indexOf("group.") !== -1) {
2199
+ this.params.sortOrder = i3.ZComponentHelper.getGroupValue(this.field.SortOrder, this.grp);
2200
+ }
2201
+ else {
2202
+ this.params.sortOrder = this.field.SortOrder;
2203
+ }
2204
+ }
2205
+ };
2206
+ ZGridBindingDirective.prototype.getGrantType = function () {
2207
+ if (this.field.GrantType) {
2208
+ this.params.grantType = i3.ZComponentHelper.getGroupValue(this.field.GrantType.toString(), this.grp);
2209
+ }
2210
+ };
2211
+ ZGridBindingDirective.prototype.setHiddenColumn = function (gridSetting) {
2212
+ var _this = this;
2213
+ if (this.gridColumns && gridSetting) {
2214
+ // filter out hidden == false array.
2215
+ var gridSettingHiddenCol = gridSetting.filter(function (item) {
2216
+ return item['hidden'] == true;
2217
+ });
2218
+ // find and set the hidden to current column setting.
2219
+ Object.values(gridSettingHiddenCol).forEach(function (value) {
2220
+ if (_this.gridColumns.find(function (c) { return c.field === value.field; })) {
2221
+ _this.gridColumns.find(function (c) { return c.field === value.field; })['hidden'] = value['hidden'];
2222
+ }
2223
+ });
2224
+ }
2225
+ };
2144
2226
  ZGridBindingDirective.prototype.getDataBinding = function () {
2145
2227
  var _this = this;
2146
2228
  this.grid.loading = true;
@@ -2198,38 +2280,6 @@
2198
2280
  ZGridBindingDirective.prototype.clearData = function () {
2199
2281
  this.grid.data = { data: [], total: 0 };
2200
2282
  };
2201
- ZGridBindingDirective.prototype.getFilterParamsColumns = function () {
2202
- var colFields = [];
2203
- this.gridColumns.forEach(function (field) {
2204
- if (field.valueExpr) {
2205
- colFields.push(field.valueExpr + " as " + field.field);
2206
- }
2207
- else {
2208
- colFields.push(field.field);
2209
- }
2210
- });
2211
- if (colFields.length > 0) {
2212
- if (colFields.indexOf("Id") === -1) {
2213
- colFields.push("Id");
2214
- }
2215
- }
2216
- var tmpGridColumn = [];
2217
- tmpGridColumn.push(colFields.join(","));
2218
- if (this.usableColumns.length > 0) {
2219
- tmpGridColumn.push(this.usableColumns.join(","));
2220
- }
2221
- this.params.columns = tmpGridColumn.join(",");
2222
- };
2223
- ZGridBindingDirective.prototype.getFilterParams = function () {
2224
- if (this.field['FilterParams']) {
2225
- if (this.field['FilterParams'].indexOf("group.") !== -1) {
2226
- this.params.filterParams = i3.ZComponentHelper.getGroupValue(this.field['FilterParams'], this.grp);
2227
- }
2228
- else {
2229
- this.params.filterParams = this.field['FilterParams'];
2230
- }
2231
- }
2232
- };
2233
2283
  ZGridBindingDirective.prototype.aggregateHandling = function (data) {
2234
2284
  var aggregateColumns = this.gridColumns.filter(function (x) { return x.aggregateType; });
2235
2285
  aggregateColumns.forEach(function (col) {
@@ -2270,38 +2320,6 @@
2270
2320
  col.aggregateValue = 0;
2271
2321
  });
2272
2322
  };
2273
- ZGridBindingDirective.prototype.getFilter = function () {
2274
- var _this = this;
2275
- if (this.params.filters && this.field.Filters) {
2276
- this.params.filters = this.params.filters + " && " + this.field.Filters;
2277
- }
2278
- else if (!this.params.filters && this.field.Filters) {
2279
- this.params.filters = this.field.Filters;
2280
- }
2281
- if (this.field.Filters && this.field.Filters.indexOf("group.") !== -1) {
2282
- var filterKeyValPairs = this.field.Filters.split(" ");
2283
- var grpValues = filterKeyValPairs.filter(function (element) { return element.trim().indexOf("group.") !== -1; });
2284
- grpValues.forEach(function (val) {
2285
- var actualVal = i3.ZComponentHelper.getGroupValue(val, _this.grp);
2286
- _this.params.filters = _this.params.filters.replace(val, actualVal);
2287
- });
2288
- }
2289
- };
2290
- ZGridBindingDirective.prototype.getSorting = function () {
2291
- if (this.field.SortOrder) {
2292
- if (this.field.SortOrder.indexOf("group.") !== -1) {
2293
- this.params.sortOrder = i3.ZComponentHelper.getGroupValue(this.field.SortOrder, this.grp);
2294
- }
2295
- else {
2296
- this.params.sortOrder = this.field.SortOrder;
2297
- }
2298
- }
2299
- };
2300
- ZGridBindingDirective.prototype.getGrantType = function () {
2301
- if (this.field.GrantType) {
2302
- this.params.grantType = i3.ZComponentHelper.getGroupValue(this.field.GrantType.toString(), this.grp);
2303
- }
2304
- };
2305
2323
  ZGridBindingDirective.prototype.pageChange = function (event) {
2306
2324
  this.params.pageNo = event.skip / this.params.pageSize;
2307
2325
  this.state.skip = event.skip;
@@ -2397,6 +2415,11 @@
2397
2415
  return "isnull";
2398
2416
  case "isnotnull":
2399
2417
  return "isnotnull";
2418
+ case "contains": {
2419
+ if (!this.field['FilterContainsUsingEqual']) {
2420
+ return "contains";
2421
+ }
2422
+ }
2400
2423
  default:
2401
2424
  return "==";
2402
2425
  // eq, neq, isnull, isnotnull, endswith, startswith
@@ -2413,21 +2436,6 @@
2413
2436
  }
2414
2437
  }
2415
2438
  };
2416
- ZGridBindingDirective.prototype.setHiddenColumn = function (gridSetting) {
2417
- var _this = this;
2418
- if (this.gridColumns && gridSetting) {
2419
- // filter out hidden == false array.
2420
- var gridSettingHiddenCol = gridSetting.filter(function (item) {
2421
- return item['hidden'] == true;
2422
- });
2423
- // find and set the hidden to current column setting.
2424
- Object.values(gridSettingHiddenCol).forEach(function (value) {
2425
- if (_this.gridColumns.find(function (c) { return c.field === value.field; })) {
2426
- _this.gridColumns.find(function (c) { return c.field === value.field; })['hidden'] = value['hidden'];
2427
- }
2428
- });
2429
- }
2430
- };
2431
2439
  ZGridBindingDirective.prototype.beforeGridGetData = function (group, me) {
2432
2440
  console.warn("beforeDataBinding triggered");
2433
2441
  if (!group.beforeGridGetData) {
@@ -2437,61 +2445,49 @@
2437
2445
  return group.beforeGridGetData(group, me);
2438
2446
  };
2439
2447
  ZGridBindingDirective.prototype.getGridSessionFilter = function (group, me) {
2440
- return __awaiter(this, void 0, void 0, function () {
2441
- var StorageKey;
2442
- var _this = this;
2443
- return __generator(this, function (_a) {
2444
- switch (_a.label) {
2445
- case 0:
2446
- if (!group["GridStorageKey"]) {
2447
- return [2 /*return*/, null];
2448
+ var _this = this;
2449
+ if (!group["GridStorageKey"]) {
2450
+ return rxjs.of([]);
2451
+ }
2452
+ var StorageKey = group["GridStorageKey"];
2453
+ if (this.storageService) {
2454
+ var subject_1 = new rxjs.Subject();
2455
+ rxjs.of(true)
2456
+ .pipe(operators.switchMap(function () {
2457
+ return _this.storageService.get(StorageKey);
2458
+ }), operators.tap(function (data) {
2459
+ if (!data || !data.value || data.value === "null") {
2460
+ subject_1.next();
2461
+ }
2462
+ else {
2463
+ var result = JSON.parse(data.value);
2464
+ _this.state.filter = JSON.parse(result["StateFilter"]);
2465
+ _this.params.filterParams = JSON.parse(result["FilterParams"]);
2466
+ _this.state.filter.filters.forEach(function (d) {
2467
+ if (d.field.includes('UTC')) {
2468
+ d.value = new Date(d.value);
2448
2469
  }
2449
- StorageKey = group["GridStorageKey"];
2450
- if (!this.storageService) return [3 /*break*/, 2];
2451
- return [4 /*yield*/, this.storageService.get(StorageKey)
2452
- .then(function (data) {
2453
- if (!data || !data.value || data.value === "null") {
2454
- return null;
2455
- }
2456
- else {
2457
- var result = JSON.parse(data.value);
2458
- _this.state.filter = JSON.parse(result["StateFilter"]);
2459
- _this.params.filterParams = JSON.parse(result["FilterParams"]);
2460
- _this.state.filter.filters.forEach(function (d) {
2461
- if (d.field.includes('UTC')) {
2462
- d.value = new Date(d.value);
2463
- }
2464
- });
2465
- return data;
2466
- }
2467
- })];
2468
- case 1:
2469
- _a.sent();
2470
- return [3 /*break*/, 3];
2471
- case 2: return [2 /*return*/, null];
2472
- case 3: return [2 /*return*/];
2470
+ });
2471
+ subject_1.next();
2473
2472
  }
2474
- });
2475
- });
2473
+ })).subscribe();
2474
+ return subject_1.asObservable();
2475
+ }
2476
+ else {
2477
+ return rxjs.of([]);
2478
+ }
2476
2479
  };
2477
2480
  ZGridBindingDirective.prototype.setGridSessionFilter = function (group, me) {
2478
- return __awaiter(this, void 0, void 0, function () {
2479
- var StorageKey, lstGridFilter;
2480
- return __generator(this, function (_a) {
2481
- if (!group["GridStorageKey"]) {
2482
- return [2 /*return*/, null];
2483
- }
2484
- StorageKey = group["GridStorageKey"];
2485
- lstGridFilter = {};
2486
- if (me.state.filter && this.storageService && this.field['SaveFilter']) {
2487
- //list of data for StateFilter and FilterParams
2488
- lstGridFilter = { "StateFilter": JSON.stringify(me.state.filter), "FilterParams": JSON.stringify(me.params.filterParams) };
2489
- //create session storage
2490
- this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));
2491
- }
2492
- return [2 /*return*/];
2493
- });
2494
- });
2481
+ if (!group["GridStorageKey"]) {
2482
+ return null;
2483
+ }
2484
+ var StorageKey = group["GridStorageKey"];
2485
+ if (me.state.filter && this.storageService && this.field['SaveFilter']) {
2486
+ //list of data for StateFilter and FilterParams
2487
+ var lstGridFilter = { "StateFilter": JSON.stringify(me.state.filter), "FilterParams": JSON.stringify(me.params.filterParams) };
2488
+ //create session storage
2489
+ this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));
2490
+ }
2495
2491
  };
2496
2492
  return ZGridBindingDirective;
2497
2493
  }(kendoAngularGrid.DataBindingDirective));
@@ -5567,17 +5563,20 @@
5567
5563
  // Grid saved setting key(Used in CookieStore & LocalStorage)
5568
5564
  this.gridStorageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.data.Name + '::' + this.router.url;
5569
5565
  rxjs.of(true)
5570
- .pipe(operators.concatMap(function () {
5571
- // try get gridsetting from cookiestore
5572
- return _this.mainService.cookieStoreGet(_this.gridStorageKey, _this.authService.e1Token.access_token);
5573
- }), operators.switchMap(function (savedGridCache) {
5574
- if (savedGridCache) {
5575
- // Keep the gridSetting from cookiestore to localStorage
5576
- _this.zGridStatePersistingService.set(_this.gridStorageKey, savedGridCache);
5577
- return rxjs.of(true);
5578
- }
5579
- return rxjs.of(false);
5580
- }), operators.switchMap(function () {
5566
+ .pipe(
5567
+ //concatMap(() => {
5568
+ // // try get gridsetting from cookiestore
5569
+ // return this.mainService.cookieStoreGet(this.gridStorageKey, this.authService.e1Token.access_token);
5570
+ //}),
5571
+ //switchMap(savedGridCache => {
5572
+ // if (savedGridCache) {
5573
+ // // Keep the gridSetting from cookiestore to localStorage
5574
+ // this.zGridStatePersistingService.set(this.gridStorageKey, savedGridCache);
5575
+ // return of(true);
5576
+ // }
5577
+ // return of(false);
5578
+ //}),
5579
+ operators.switchMap(function () {
5581
5580
  // Grid default setting
5582
5581
  _this.columns = [];
5583
5582
  _this.widthReduce = _this.data.WidthReduce || 60;
@@ -5632,7 +5631,6 @@
5632
5631
  return rxjs.of(true);
5633
5632
  }), operators.tap(function () {
5634
5633
  _this.gridCallback(_this.group);
5635
- return rxjs.of(true);
5636
5634
  })).subscribe();
5637
5635
  };
5638
5636
  ZgridComponent.prototype.ngOnDestroy = function () {
@@ -8601,6 +8599,10 @@
8601
8599
  "optionFilters": "",
8602
8600
  "totalCount": 0
8603
8601
  };
8602
+ this.virtual = {
8603
+ itemHeight: 28,
8604
+ pageSize: 15
8605
+ };
8604
8606
  // Common function
8605
8607
  this.setEnable = function (status) {
8606
8608
  var fc = _this.group.form.controls[_this.data.Value];
@@ -9080,7 +9082,7 @@
9080
9082
  ZselectmultipleComponent.decorators = [
9081
9083
  { type: i0.Component, args: [{
9082
9084
  selector: "app-zselectmultiple",
9083
- template: "<ion-item [ngClass]=\"getClass(form, data)\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && isMobileScreen()\">\r\n\r\n <ion-label *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"componentProperties.isRequired\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n\r\n <kendo-label *ngIf=\"data.TooltipsInfo && !showTooltipsInfoIcon && !showTooltipsInfoBySide\"\r\n [text]=\"setTooltipsDisplayText()\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n <div [class]=\"setTooltipsInfoSideBySide()\" *ngIf=\"!isLoading\">\r\n <div style=\"flex-grow: 1;\">\r\n <ionic-selectable #selectComponent item-content\r\n searchFailText=\"Nothing found :(\"\r\n headerColor=\"primary\"\r\n clearButtonText=\"Clear\"\r\n [(ngModel)]=\"group.zModel[data.Value]\"\r\n [id]=\"data.Value\"\r\n [items]=\"getItemsData()\"\r\n [itemValueField]=\"itemValueField\"\r\n [itemTextField]=\"itemTextField\"\r\n [canAddItem]=\"!!data.OnAddItem\"\r\n [canClear]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [canSearch]=\"!data['disable-search']\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\"\r\n [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [shouldStoreItemValue]=\"true\"\r\n (onSearch)=\"onSearch($event)\"\r\n (onInfiniteScroll)=\"getInfiniteData($event)\"\r\n (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange($event)\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate\r\n let-item=\"item\"\r\n let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\"\r\n class=\"isItemSelected\"\r\n size=\"sm\"\r\n [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\"></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\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\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 {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n\r\n <!--<ng-template ionicSelectableFooterTemplate>\r\n <ion-toolbar>\r\n <ion-row>\r\n <ion-col>\r\n <ion-button expand=\"full\" ng-reflect-disabled=\"false\" ng-reflect-expand=\"full\" class=\"button button-full button-solid ion-activatable ion-focusable hydrated\" (click)=\"clearItems()\">\r\n Clear\r\n </ion-button>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button expand=\"full\" ng-reflect-disabled=\"false\" ng-reflect-expand=\"full\" class=\"button button-full button-solid ion-activatable ion-focusable hydrated\" (click)=\"confirmItems()\">\r\n OK\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-toolbar>\r\n </ng-template>-->\r\n </ionic-selectable>\r\n </div>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n <!-- side by side and desktop tooltipsinfo -->\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon && showTooltipsInfoBySide\"\r\n [text]=\"setTooltipsDisplayText()\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n </div>\r\n</ion-item>\r\n\r\n\r\n\r\n<ion-item [ngClass]=\"getClass(form, data)\" [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && !isMobileScreen()\" [ngClass]=\"getIon_InvalidClass(form, data)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n <span kendoTooltip\r\n *ngIf=\"data.TooltipsInfo && showTooltipsInfoIcon\"\r\n [title]=\"setTooltipsDisplayText()\">\r\n <fa-icon [icon]=\"setTooltipsInfoIcon()\"\r\n class=\"tooltipsinfo-icon\">\r\n </fa-icon>\r\n </span>\r\n </ion-label>\r\n <!-- mobile tooltipsinfo below label-->\r\n <div [class]=\"setTooltipsInfoSideBySide()\">\r\n <div style=\"flex: 1;\">\r\n <kendo-combobox *ngIf=\"!data.Multiple\"\r\n #comboboxComponent\r\n [data]=\"getItemsData()\"\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 [suggest]=\"true\"\r\n [filterable]=\"!!data.HasInfiniteScroll\"\r\n [openOnFocus]=\"disableOpenOnFocus(comboboxComponent)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n [loading]=\"isLoading\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n style=\"margin-top: 7px; width: 100%;\">\r\n <ng-template kendoComboBoxItemTemplate let-dataItem>\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n <!-- <span class=\"template\">{{ dataItem.value }}</span> {{ dataItem.text }} -->\r\n </ng-template>\r\n <ng-template kendoTextBoxSuffixTemplate>\r\n\r\n <!-- For Validation feature -->\r\n <app-uivalidationmessage [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n class=\"validation-icon\"></app-uivalidationmessage>\r\n </ng-template>\r\n </kendo-combobox>\r\n <kendo-multiselect *ngIf=\"data.Multiple\"\r\n [data]=\"getItemsData()\"\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.HasInfiniteScroll\"\r\n [checkboxes]=\"data.EnableCheckbox\"\r\n [loading]=\"isLoading\"\r\n [autoClose]=\"autoClose\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n style=\"margin-top: 7px; width: 100%;\">\r\n <ng-template kendoMultiSelectItemTemplate let-dataItem>\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n <!-- <span class=\"template\">{{ dataItem.value }}</span> {{ dataItem.text }} -->\r\n </ng-template>\r\n </kendo-multiselect>\r\n </div>\r\n\r\n <div *ngFor=\"let item of iconList\">\r\n <div kendoTooltip style=\"text-align: center; padding-top: 10px;\"\r\n showOn=\"hover\"\r\n [tooltipWidth]=\"item.Width\"\r\n [position]=\"item.Position\">\r\n <span *ngIf=\"!!item && item.Color\"\r\n (click)=\"onIconClick(item.Click)\"\r\n [title]=\"item.Tooltip\"\r\n style=\"margin-top: 10px;\">\r\n <fa-icon [icon]=\"item.Icon\"\r\n [ngStyle]=\"{'padding': '4px 6px', 'color': (item.Color ? item.Color : 'black')}\"></fa-icon>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <app-uivalidationmessage [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"></app-uivalidationmessage>\r\n\r\n <!-- side by side and desktop tooltipsinfo -->\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon && ((showTooltipsInfoBySide && isMobileScreen()) || !isMobileScreen())\"\r\n [text]=\"setTooltipsDisplayText()\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n\r\n </div>\r\n</ion-item>\r\n",
9085
+ template: "<ion-item [ngClass]=\"getClass(form, data)\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && isMobileScreen()\">\r\n\r\n <ion-label *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"componentProperties.isRequired\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n\r\n <kendo-label *ngIf=\"data.TooltipsInfo && !showTooltipsInfoIcon && !showTooltipsInfoBySide\"\r\n [text]=\"setTooltipsDisplayText()\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n <div [class]=\"setTooltipsInfoSideBySide()\" *ngIf=\"!isLoading\">\r\n <div style=\"flex-grow: 1;\">\r\n <ionic-selectable #selectComponent item-content\r\n searchFailText=\"Nothing found :(\"\r\n headerColor=\"primary\"\r\n clearButtonText=\"Clear\"\r\n [(ngModel)]=\"group.zModel[data.Value]\"\r\n [id]=\"data.Value\"\r\n [items]=\"getItemsData()\"\r\n [itemValueField]=\"itemValueField\"\r\n [itemTextField]=\"itemTextField\"\r\n [canAddItem]=\"!!data.OnAddItem\"\r\n [canClear]=\"true\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [canSearch]=\"!data['disable-search']\"\r\n [shouldFocusSearchbar]=\"!data['disable-search']\"\r\n [hasInfiniteScroll]=\"!!data.HasInfiniteScroll\"\r\n [isMultiple]=\"data.Multiple\"\r\n [isEnabled]=\"!(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [shouldStoreItemValue]=\"true\"\r\n (onSearch)=\"onSearch($event)\"\r\n (onInfiniteScroll)=\"getInfiniteData($event)\"\r\n (onAddItem)=\"onAddItem($event)\"\r\n (onChange)=\"onChange($event)\">\r\n\r\n <ng-template ionicSelectableItemIconTemplate\r\n let-item=\"item\"\r\n let-isItemSelected=\"isItemSelected\">\r\n <fa-icon slot=\"start\"\r\n class=\"isItemSelected\"\r\n size=\"sm\"\r\n [icon]=\"['far', isItemSelected ? 'check-circle': 'circle']\"\r\n [styles]=\"{'color': isItemSelected ? 'dodgerBlue' : 'lightGray'}\"></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\"></fa-icon>\r\n </ng-template>\r\n\r\n <ng-template ionicSelectableTitleTemplate>\r\n {{data.Label}}\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 {{ getItemTemplate(item, data, group, itemValueField, itemTextField) }}\r\n <!-- <ng-template zselectitemelement [item]=\"item\"></ng-template> -->\r\n </ng-template>\r\n\r\n <!--<ng-template ionicSelectableFooterTemplate>\r\n <ion-toolbar>\r\n <ion-row>\r\n <ion-col>\r\n <ion-button expand=\"full\" ng-reflect-disabled=\"false\" ng-reflect-expand=\"full\" class=\"button button-full button-solid ion-activatable ion-focusable hydrated\" (click)=\"clearItems()\">\r\n Clear\r\n </ion-button>\r\n </ion-col>\r\n <ion-col>\r\n <ion-button expand=\"full\" ng-reflect-disabled=\"false\" ng-reflect-expand=\"full\" class=\"button button-full button-solid ion-activatable ion-focusable hydrated\" (click)=\"confirmItems()\">\r\n OK\r\n </ion-button>\r\n </ion-col>\r\n </ion-row>\r\n </ion-toolbar>\r\n </ng-template>-->\r\n </ionic-selectable>\r\n </div>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n <!-- side by side and desktop tooltipsinfo -->\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon && showTooltipsInfoBySide\"\r\n [text]=\"setTooltipsDisplayText()\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n </div>\r\n</ion-item>\r\n\r\n\r\n\r\n<ion-item [ngClass]=\"getClass(form, data)\" [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible) && !isMobileScreen()\" [ngClass]=\"getIon_InvalidClass(form, data)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n <span kendoTooltip\r\n *ngIf=\"data.TooltipsInfo && showTooltipsInfoIcon\"\r\n [title]=\"setTooltipsDisplayText()\">\r\n <fa-icon [icon]=\"setTooltipsInfoIcon()\"\r\n class=\"tooltipsinfo-icon\">\r\n </fa-icon>\r\n </span>\r\n </ion-label>\r\n <!-- mobile tooltipsinfo below label-->\r\n <div [class]=\"setTooltipsInfoSideBySide()\">\r\n <div style=\"flex: 1;\">\r\n <kendo-combobox *ngIf=\"!data.Multiple\"\r\n #comboboxComponent\r\n [data]=\"getItemsData()\"\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 [suggest]=\"true\"\r\n [filterable]=\"!!data.HasInfiniteScroll\"\r\n [openOnFocus]=\"disableOpenOnFocus(comboboxComponent)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n [loading]=\"isLoading\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n [virtual]=\"virtual\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n style=\"margin-top: 7px; width: 100%;\">\r\n <ng-template kendoComboBoxItemTemplate let-dataItem>\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n <!-- <span class=\"template\">{{ dataItem.value }}</span> {{ dataItem.text }} -->\r\n </ng-template>\r\n <ng-template kendoTextBoxSuffixTemplate>\r\n\r\n <!-- For Validation feature -->\r\n <app-uivalidationmessage [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n class=\"validation-icon\"></app-uivalidationmessage>\r\n </ng-template>\r\n </kendo-combobox>\r\n <kendo-multiselect *ngIf=\"data.Multiple\"\r\n [data]=\"getItemsData()\"\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.HasInfiniteScroll\"\r\n [checkboxes]=\"data.EnableCheckbox\"\r\n [loading]=\"isLoading\"\r\n [autoClose]=\"autoClose\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n (valueChange)=\"onValueChange($event)\"\r\n (filterChange)=\"handleFilter($event)\"\r\n (open)=\"handleOpen()\"\r\n (close)=\"handleClose()\"\r\n (blur)=\"handleBlur()\"\r\n style=\"margin-top: 7px; width: 100%;\">\r\n <ng-template kendoMultiSelectItemTemplate let-dataItem>\r\n {{ getItemTemplate(dataItem, data, group, itemValueField, itemTextField) }}\r\n <!-- <span class=\"template\">{{ dataItem.value }}</span> {{ dataItem.text }} -->\r\n </ng-template>\r\n </kendo-multiselect>\r\n </div>\r\n\r\n <div *ngFor=\"let item of iconList\">\r\n <div kendoTooltip style=\"text-align: center; padding-top: 10px;\"\r\n showOn=\"hover\"\r\n [tooltipWidth]=\"item.Width\"\r\n [position]=\"item.Position\">\r\n <span *ngIf=\"!!item && item.Color\"\r\n (click)=\"onIconClick(item.Click)\"\r\n [title]=\"item.Tooltip\"\r\n style=\"margin-top: 10px;\">\r\n <fa-icon [icon]=\"item.Icon\"\r\n [ngStyle]=\"{'padding': '4px 6px', 'color': (item.Color ? item.Color : 'black')}\"></fa-icon>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <app-uivalidationmessage [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"></app-uivalidationmessage>\r\n\r\n <!-- side by side and desktop tooltipsinfo -->\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon && ((showTooltipsInfoBySide && isMobileScreen()) || !isMobileScreen())\"\r\n [text]=\"setTooltipsDisplayText()\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n\r\n </div>\r\n</ion-item>\r\n",
9084
9086
  styles: ["fa-icon.isItemSelected{display:inline-block;width:1em;height:1em;contain:strict;fill:currentcolor;box-sizing:initial!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:100%;color:#000}.tooltipsinfo-text{margin-left:5px}.tooltipsinfo-text,.tooltipsinfo-text-wide{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin-top:6px}.tooltipsinfo-text-wide{width:100%;padding-bottom:5px}.tooltipsinfo-right{display:grid;grid-template-columns:1.2fr .05fr 1fr;grid-gap:0}.tooltipsinfo-icon{padding-left:10px;color:#3880ff}"]
9085
9087
  },] }
9086
9088
  ];
@@ -9344,7 +9346,9 @@
9344
9346
  i.Tooltip = "";
9345
9347
  }
9346
9348
  else {
9347
- i.Tooltip = i3.ZComponentHelper.getGroupEvalValue.call(_this, i.Tooltip);
9349
+ if (i.Tooltip.indexOf("group.") !== -1) {
9350
+ i.Tooltip = i3.ZComponentHelper.getGroupEvalValue.call(_this, i.Tooltip);
9351
+ }
9348
9352
  }
9349
9353
  // Default position top. right | bottom | top | left
9350
9354
  if (i.Position === undefined) {
@@ -10913,7 +10917,7 @@
10913
10917
  ZuploadComponent.prototype.selectEventHandler = function (e) {
10914
10918
  var _this = this;
10915
10919
  var me = this;
10916
- if (this.data['FileSelectedEvent']) {
10920
+ if (this.data['SelectFileOnly']) {
10917
10921
  // append all file to component memory
10918
10922
  e.files.forEach(function (file) { return __awaiter(_this, void 0, void 0, function () {
10919
10923
  var reader;
@@ -10980,7 +10984,7 @@
10980
10984
  } // file type check
10981
10985
  }); // loop each file
10982
10986
  } // imagecompression check
10983
- // add to group scope
10987
+ // add to group scope
10984
10988
  me.group['zupload_' + me.data.Value] = e.files;
10985
10989
  }
10986
10990
  }