mmhglobal-dynamicform 1.1.31 → 1.1.35

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
@@ -3,6 +3,26 @@
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
4
4
 
5
5
  ## Changelog
6
+ `1.35`<br/>
7
+ Temp disable get grid setting from cookiestore when load.
8
+ Fix and enable back grid session storage.
9
+
10
+ `1.34`<br/>
11
+ Fix zgrid intermittent display all column.
12
+ Fix zText tooltip issue.
13
+ Fix zSelectMultiple virtual problem for desktop view.
14
+
15
+ `1.33`<br/>
16
+ [zupload] - minor fix for selectFileOnly attribute. <br/>
17
+ [zgrid] - added support for filter operator "contains" for .net core. Default as contains, to use ==, zgrid attribute add FilterContainsUsingEqual:true.
18
+
19
+ `1.32`<br/>
20
+ [zgrid] - added getFormControlData function to retrieve incell data. <br/>
21
+ [zgrid] - added AfterloadCallback attribute handling. <br/>
22
+ [zgrid] - fix form control error when grid data is null. <br/>
23
+ [zupload] - save file data to group scope. <br/>
24
+ [zquerybuilder] - bug fix for query builder.
25
+
6
26
  `1.31`<br/>
7
27
  update dynamicform module for zuploadmodule. <br/>
8
28
 
@@ -2141,6 +2141,85 @@
2141
2141
  _this.getDataBinding();
2142
2142
  });
2143
2143
  };
2144
+ ZGridBindingDirective.prototype.getFilterParamsColumns = function () {
2145
+ var colFields = [];
2146
+ this.gridColumns.forEach(function (field) {
2147
+ if (field.valueExpr) {
2148
+ colFields.push(field.valueExpr + " as " + field.field);
2149
+ }
2150
+ else {
2151
+ colFields.push(field.field);
2152
+ }
2153
+ });
2154
+ if (colFields.length > 0) {
2155
+ if (colFields.indexOf("Id") === -1) {
2156
+ colFields.push("Id");
2157
+ }
2158
+ }
2159
+ var tmpGridColumn = [];
2160
+ tmpGridColumn.push(colFields.join(","));
2161
+ if (this.usableColumns.length > 0) {
2162
+ tmpGridColumn.push(this.usableColumns.join(","));
2163
+ }
2164
+ this.params.columns = tmpGridColumn.join(",");
2165
+ };
2166
+ ZGridBindingDirective.prototype.getFilter = function () {
2167
+ var _this = this;
2168
+ if (this.params.filters && this.field.Filters) {
2169
+ this.params.filters = this.params.filters + " && " + this.field.Filters;
2170
+ }
2171
+ else if (!this.params.filters && this.field.Filters) {
2172
+ this.params.filters = this.field.Filters;
2173
+ }
2174
+ if (this.field.Filters && this.field.Filters.indexOf("group.") !== -1) {
2175
+ var filterKeyValPairs = this.field.Filters.split(" ");
2176
+ var grpValues = filterKeyValPairs.filter(function (element) { return element.trim().indexOf("group.") !== -1; });
2177
+ grpValues.forEach(function (val) {
2178
+ var actualVal = i3.ZComponentHelper.getGroupValue(val, _this.grp);
2179
+ _this.params.filters = _this.params.filters.replace(val, actualVal);
2180
+ });
2181
+ }
2182
+ };
2183
+ ZGridBindingDirective.prototype.getFilterParams = function () {
2184
+ if (this.field['FilterParams']) {
2185
+ if (this.field['FilterParams'].indexOf("group.") !== -1) {
2186
+ this.params.filterParams = i3.ZComponentHelper.getGroupValue(this.field['FilterParams'], this.grp);
2187
+ }
2188
+ else {
2189
+ this.params.filterParams = this.field['FilterParams'];
2190
+ }
2191
+ }
2192
+ };
2193
+ ZGridBindingDirective.prototype.getSorting = function () {
2194
+ if (this.field.SortOrder) {
2195
+ if (this.field.SortOrder.indexOf("group.") !== -1) {
2196
+ this.params.sortOrder = i3.ZComponentHelper.getGroupValue(this.field.SortOrder, this.grp);
2197
+ }
2198
+ else {
2199
+ this.params.sortOrder = this.field.SortOrder;
2200
+ }
2201
+ }
2202
+ };
2203
+ ZGridBindingDirective.prototype.getGrantType = function () {
2204
+ if (this.field.GrantType) {
2205
+ this.params.grantType = i3.ZComponentHelper.getGroupValue(this.field.GrantType.toString(), this.grp);
2206
+ }
2207
+ };
2208
+ ZGridBindingDirective.prototype.setHiddenColumn = function (gridSetting) {
2209
+ var _this = this;
2210
+ if (this.gridColumns && gridSetting) {
2211
+ // filter out hidden == false array.
2212
+ var gridSettingHiddenCol = gridSetting.filter(function (item) {
2213
+ return item['hidden'] == true;
2214
+ });
2215
+ // find and set the hidden to current column setting.
2216
+ Object.values(gridSettingHiddenCol).forEach(function (value) {
2217
+ if (_this.gridColumns.find(function (c) { return c.field === value.field; })) {
2218
+ _this.gridColumns.find(function (c) { return c.field === value.field; })['hidden'] = value['hidden'];
2219
+ }
2220
+ });
2221
+ }
2222
+ };
2144
2223
  ZGridBindingDirective.prototype.getDataBinding = function () {
2145
2224
  var _this = this;
2146
2225
  this.grid.loading = true;
@@ -2198,38 +2277,6 @@
2198
2277
  ZGridBindingDirective.prototype.clearData = function () {
2199
2278
  this.grid.data = { data: [], total: 0 };
2200
2279
  };
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
2280
  ZGridBindingDirective.prototype.aggregateHandling = function (data) {
2234
2281
  var aggregateColumns = this.gridColumns.filter(function (x) { return x.aggregateType; });
2235
2282
  aggregateColumns.forEach(function (col) {
@@ -2270,38 +2317,6 @@
2270
2317
  col.aggregateValue = 0;
2271
2318
  });
2272
2319
  };
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
2320
  ZGridBindingDirective.prototype.pageChange = function (event) {
2306
2321
  this.params.pageNo = event.skip / this.params.pageSize;
2307
2322
  this.state.skip = event.skip;
@@ -2397,6 +2412,11 @@
2397
2412
  return "isnull";
2398
2413
  case "isnotnull":
2399
2414
  return "isnotnull";
2415
+ case "contains": {
2416
+ if (!this.field['FilterContainsUsingEqual']) {
2417
+ return "contains";
2418
+ }
2419
+ }
2400
2420
  default:
2401
2421
  return "==";
2402
2422
  // eq, neq, isnull, isnotnull, endswith, startswith
@@ -2413,21 +2433,6 @@
2413
2433
  }
2414
2434
  }
2415
2435
  };
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
2436
  ZGridBindingDirective.prototype.beforeGridGetData = function (group, me) {
2432
2437
  console.warn("beforeDataBinding triggered");
2433
2438
  if (!group.beforeGridGetData) {
@@ -2437,61 +2442,49 @@
2437
2442
  return group.beforeGridGetData(group, me);
2438
2443
  };
2439
2444
  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];
2445
+ var _this = this;
2446
+ if (!group["GridStorageKey"]) {
2447
+ return rxjs.of([]);
2448
+ }
2449
+ var StorageKey = group["GridStorageKey"];
2450
+ if (this.storageService) {
2451
+ var subject_1 = new rxjs.Subject();
2452
+ rxjs.of(true)
2453
+ .pipe(operators.switchMap(function () {
2454
+ return _this.storageService.get(StorageKey);
2455
+ }), operators.tap(function (data) {
2456
+ if (!data || !data.value || data.value === "null") {
2457
+ subject_1.next();
2458
+ }
2459
+ else {
2460
+ var result = JSON.parse(data.value);
2461
+ _this.state.filter = JSON.parse(result["StateFilter"]);
2462
+ _this.params.filterParams = JSON.parse(result["FilterParams"]);
2463
+ _this.state.filter.filters.forEach(function (d) {
2464
+ if (d.field.includes('UTC')) {
2465
+ d.value = new Date(d.value);
2448
2466
  }
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*/];
2467
+ });
2468
+ subject_1.next();
2473
2469
  }
2474
- });
2475
- });
2470
+ })).subscribe();
2471
+ return subject_1.asObservable();
2472
+ }
2473
+ else {
2474
+ return rxjs.of([]);
2475
+ }
2476
2476
  };
2477
2477
  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
- });
2478
+ if (!group["GridStorageKey"]) {
2479
+ return null;
2480
+ }
2481
+ var StorageKey = group["GridStorageKey"];
2482
+ if (me.state.filter && this.storageService && this.field['SaveFilter']) {
2483
+ //list of data for StateFilter and FilterParams
2484
+ var lstGridFilter = { "StateFilter": JSON.stringify(me.state.filter), "FilterParams": JSON.stringify(me.params.filterParams) };
2485
+ //create session storage
2486
+ this.storageService.set(StorageKey, JSON.stringify(lstGridFilter));
2487
+ }
2495
2488
  };
2496
2489
  return ZGridBindingDirective;
2497
2490
  }(kendoAngularGrid.DataBindingDirective));
@@ -5537,7 +5530,9 @@
5537
5530
  });
5538
5531
  }
5539
5532
  }
5540
- _this.createFormControls();
5533
+ if (_this.gData) {
5534
+ _this.createFormControls();
5535
+ }
5541
5536
  };
5542
5537
  /* Available Functions */
5543
5538
  this.setEnable = function (status) {
@@ -5565,17 +5560,20 @@
5565
5560
  // Grid saved setting key(Used in CookieStore & LocalStorage)
5566
5561
  this.gridStorageKey = 'ionic-field::' + this.authService.e1Token.userName + '::' + this.data.Name + '::' + this.router.url;
5567
5562
  rxjs.of(true)
5568
- .pipe(operators.concatMap(function () {
5569
- // try get gridsetting from cookiestore
5570
- return _this.mainService.cookieStoreGet(_this.gridStorageKey, _this.authService.e1Token.access_token);
5571
- }), operators.switchMap(function (savedGridCache) {
5572
- if (savedGridCache) {
5573
- // Keep the gridSetting from cookiestore to localStorage
5574
- _this.zGridStatePersistingService.set(_this.gridStorageKey, savedGridCache);
5575
- return rxjs.of(true);
5576
- }
5577
- return rxjs.of(false);
5578
- }), operators.switchMap(function () {
5563
+ .pipe(
5564
+ //concatMap(() => {
5565
+ // // try get gridsetting from cookiestore
5566
+ // return this.mainService.cookieStoreGet(this.gridStorageKey, this.authService.e1Token.access_token);
5567
+ //}),
5568
+ //switchMap(savedGridCache => {
5569
+ // if (savedGridCache) {
5570
+ // // Keep the gridSetting from cookiestore to localStorage
5571
+ // this.zGridStatePersistingService.set(this.gridStorageKey, savedGridCache);
5572
+ // return of(true);
5573
+ // }
5574
+ // return of(false);
5575
+ //}),
5576
+ operators.switchMap(function () {
5579
5577
  // Grid default setting
5580
5578
  _this.columns = [];
5581
5579
  _this.widthReduce = _this.data.WidthReduce || 60;
@@ -5628,6 +5626,8 @@
5628
5626
  _this.setGridSessionKey(_this.group);
5629
5627
  }
5630
5628
  return rxjs.of(true);
5629
+ }), operators.tap(function () {
5630
+ _this.gridCallback(_this.group);
5631
5631
  })).subscribe();
5632
5632
  };
5633
5633
  ZgridComponent.prototype.ngOnDestroy = function () {
@@ -5769,6 +5769,16 @@
5769
5769
  });
5770
5770
  }
5771
5771
  };
5772
+ ZgridComponent.prototype.gridCallback = function (group) {
5773
+ if (this.data['AfterloadCallback']) {
5774
+ var me = Object.assign({}, this);
5775
+ this.group.subject.next({
5776
+ type: "zgrid-AfterloadCallback",
5777
+ target: this.data['AfterloadCallback'],
5778
+ data: me
5779
+ });
5780
+ }
5781
+ };
5772
5782
  ZgridComponent.prototype.getData = function () {
5773
5783
  if (this.zgrid) {
5774
5784
  this.zgrid.getDataBinding();
@@ -6074,6 +6084,9 @@
6074
6084
  var formArray = this.inlineEditedFormGroups.get('items');
6075
6085
  return formArray.at(rowIndex);
6076
6086
  };
6087
+ ZgridComponent.prototype.getFormControlData = function (value) {
6088
+ return this.inlineEditedFormGroups.value.items;
6089
+ };
6077
6090
  /* Event */
6078
6091
  ZgridComponent.prototype.beforeGridGetData = function (group, me) {
6079
6092
  console.warn("beforeDataBinding triggered");
@@ -8125,10 +8138,12 @@
8125
8138
  return this.qbItems[rule.field].options ? this.qbItems[rule.field].options : optionsList;
8126
8139
  };
8127
8140
  ZquerybuilderComponent.prototype.setQueryValue = function (queryValueString) {
8128
- var defaultQueryValueJson = JSON.parse(queryValueString);
8129
- this.queryCtrl = defaultQueryValueJson;
8130
- // default lock the query builder if there default query
8131
- this.completeRule(true, defaultQueryValueJson);
8141
+ if (queryValueString) {
8142
+ var defaultQueryValueJson = toQueryRule(JSON.parse(queryValueString));
8143
+ this.queryCtrl = defaultQueryValueJson;
8144
+ // default lock the query builder if there default query
8145
+ this.completeRule(true, defaultQueryValueJson);
8146
+ }
8132
8147
  };
8133
8148
  return ZquerybuilderComponent;
8134
8149
  }());
@@ -8150,7 +8165,23 @@
8150
8165
  data: [{ type: i0.Input }],
8151
8166
  group: [{ type: i0.Input }],
8152
8167
  form: [{ type: i0.Input }]
8153
- };
8168
+ };
8169
+ function toQueryRule(queryBuilderModel) {
8170
+ var rule = {};
8171
+ if (queryBuilderModel.condition) {
8172
+ rule.condition = queryBuilderModel.condition;
8173
+ rule.rules = queryBuilderModel.rules.map(function (q) { return toQueryRule(q); });
8174
+ }
8175
+ else {
8176
+ rule.field = queryBuilderModel.field;
8177
+ rule.type = queryBuilderModel.type;
8178
+ rule.operator = queryBuilderModel.operator;
8179
+ rule.value = queryBuilderModel.value instanceof Array
8180
+ ? queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value
8181
+ : [queryBuilderModel.type === 'date' ? new Date(queryBuilderModel.value) : queryBuilderModel.value];
8182
+ }
8183
+ return rule;
8184
+ }
8154
8185
 
8155
8186
  /********** Angular **********/
8156
8187
  var ZreportComponent = /** @class */ (function () {
@@ -8565,6 +8596,10 @@
8565
8596
  "optionFilters": "",
8566
8597
  "totalCount": 0
8567
8598
  };
8599
+ this.virtual = {
8600
+ itemHeight: 28,
8601
+ pageSize: 15
8602
+ };
8568
8603
  // Common function
8569
8604
  this.setEnable = function (status) {
8570
8605
  var fc = _this.group.form.controls[_this.data.Value];
@@ -9044,7 +9079,7 @@
9044
9079
  ZselectmultipleComponent.decorators = [
9045
9080
  { type: i0.Component, args: [{
9046
9081
  selector: "app-zselectmultiple",
9047
- 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",
9082
+ 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",
9048
9083
  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}"]
9049
9084
  },] }
9050
9085
  ];
@@ -9308,7 +9343,9 @@
9308
9343
  i.Tooltip = "";
9309
9344
  }
9310
9345
  else {
9311
- i.Tooltip = i3.ZComponentHelper.getGroupEvalValue.call(_this, i.Tooltip);
9346
+ if (i.Tooltip.indexOf("group.") !== -1) {
9347
+ i.Tooltip = i3.ZComponentHelper.getGroupEvalValue.call(_this, i.Tooltip);
9348
+ }
9312
9349
  }
9313
9350
  // Default position top. right | bottom | top | left
9314
9351
  if (i.Position === undefined) {
@@ -10877,7 +10914,7 @@
10877
10914
  ZuploadComponent.prototype.selectEventHandler = function (e) {
10878
10915
  var _this = this;
10879
10916
  var me = this;
10880
- if (this.data['FileSelectedEvent']) {
10917
+ if (this.data['SelectFileOnly']) {
10881
10918
  // append all file to component memory
10882
10919
  e.files.forEach(function (file) { return __awaiter(_this, void 0, void 0, function () {
10883
10920
  var reader;
@@ -10944,6 +10981,8 @@
10944
10981
  } // file type check
10945
10982
  }); // loop each file
10946
10983
  } // imagecompression check
10984
+ // add to group scope
10985
+ me.group['zupload_' + me.data.Value] = e.files;
10947
10986
  }
10948
10987
  }
10949
10988
  };
@@ -11646,6 +11685,7 @@
11646
11685
  exports.ZuploadComponent = ZuploadComponent;
11647
11686
  exports.ZworkflowbuttonsComponent = ZworkflowbuttonsComponent;
11648
11687
  exports.refreshGrid = refreshGrid;
11688
+ exports.toQueryRule = toQueryRule;
11649
11689
  exports.ɵa = ZComponentDebugService;
11650
11690
  exports.ɵb = ZGridCalendarBindingDirective;
11651
11691
  exports.ɵc = ZComponentService;