mmhglobal-dynamicform 2.25.0 → 2.27.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.
@@ -1769,9 +1769,6 @@ class MainService {
1769
1769
  this.signalrService.joinGroup(firstProjectCode);
1770
1770
  }
1771
1771
  }
1772
- else {
1773
- console.warn('signalR not enabled.');
1774
- }
1775
1772
  }
1776
1773
  handleSignalRModificationAlert(formId) {
1777
1774
  if (this.signalrService.signalREnabled() && this.environment.enableFormPageModificationAlert) {
@@ -4430,7 +4427,7 @@ class ButtonFieldBase extends FieldBase {
4430
4427
  return isVisible;
4431
4428
  }
4432
4429
  getButtonLabel(button) {
4433
- let labelResult = button.Label || '';
4430
+ let labelResult = button.Label || button.Name || '';
4434
4431
  let labelExpr = labelResult.match(/^{{.*}}$/gi);
4435
4432
  if (labelExpr) {
4436
4433
  labelExpr = labelExpr[0].slice(2, -2);
@@ -8248,7 +8245,7 @@ class ZuploadComponent extends InputFieldBase {
8248
8245
  // DivClass: "col-md-12 col-md-6",
8249
8246
  // Visible: true
8250
8247
  // }];
8251
- constructor(componentService, authService, compressImage, zcoreService, ngZone, sharePointService) {
8248
+ constructor(componentService, authService, compressImage, zcoreService, ngZone, sharePointService, alertService) {
8252
8249
  super(componentService);
8253
8250
  this.componentService = componentService;
8254
8251
  this.authService = authService;
@@ -8256,6 +8253,7 @@ class ZuploadComponent extends InputFieldBase {
8256
8253
  this.zcoreService = zcoreService;
8257
8254
  this.ngZone = ngZone;
8258
8255
  this.sharePointService = sharePointService;
8256
+ this.alertService = alertService;
8259
8257
  this.uploadAttachmentUrl = null;
8260
8258
  this.uploadSaveUrl = "/Attachment/Chunk_Upload_Save"; // should represent an actual API endpoint
8261
8259
  this.uploadRemoveUrl = "/Attachment/Chunk_Upload_Remove"; // should represent an actual API endpoint
@@ -8316,6 +8314,9 @@ class ZuploadComponent extends InputFieldBase {
8316
8314
  if (this.data.Multiple) {
8317
8315
  this.isMultiple = this.data.Multiple;
8318
8316
  }
8317
+ if (this.data.AllowedFileExtension) {
8318
+ this.restrictions.allowedExtensions = this.restrictions.allowedExtensions.concat(this.data.AllowedFileExtension);
8319
+ }
8319
8320
  this.componentProperties.style.style6 = this.componentProperties.style.style6 || "margin: 5px; border: 1px solid gray;";
8320
8321
  }
8321
8322
  onSuccess(e) {
@@ -8410,18 +8411,24 @@ class ZuploadComponent extends InputFieldBase {
8410
8411
  // Image Preview
8411
8412
  const me = this;
8412
8413
  e.files.forEach((file) => {
8413
- if (file.rawFile && file.rawFile.type.includes("image")) {
8414
- if (!file.validationErrors) {
8415
- const reader = new FileReader();
8416
- reader.onload = function (ev) {
8417
- if (me.data.EnableImagePreview) {
8418
- if (!me.uid.includes(file.uid)) {
8419
- me.uid.push(file.uid);
8420
- me.imagePreviews.push({ ...file, src: reader.result });
8414
+ if (!me.isValidUploadedFile(me, file)) {
8415
+ e.preventDefault();
8416
+ return;
8417
+ }
8418
+ else {
8419
+ if (file.rawFile && file.rawFile.type.includes("image")) {
8420
+ if (!file.validationErrors) {
8421
+ const reader = new FileReader();
8422
+ reader.onload = function (ev) {
8423
+ if (me.data.EnableImagePreview) {
8424
+ if (!me.uid.includes(file.uid)) {
8425
+ me.uid.push(file.uid);
8426
+ me.imagePreviews.push({ ...file, src: reader.result });
8427
+ }
8421
8428
  }
8422
- }
8423
- };
8424
- reader.readAsDataURL(file.rawFile);
8429
+ };
8430
+ reader.readAsDataURL(file.rawFile);
8431
+ }
8425
8432
  }
8426
8433
  }
8427
8434
  });
@@ -8485,38 +8492,60 @@ class ZuploadComponent extends InputFieldBase {
8485
8492
  });
8486
8493
  }
8487
8494
  }
8495
+ isValidUploadedFile(me, file) {
8496
+ const fileSize = file.rawFile.size;
8497
+ const fileExtension = file.rawFile.name.split('.').pop().toLowerCase();
8498
+ // Check if file size and extension are valid
8499
+ if (fileSize > me.restrictions.maxFileSize || !me.restrictions.allowedExtensions.includes(fileExtension)) {
8500
+ let errorMessage = 'Error: ';
8501
+ if (!me.restrictions.allowedExtensions.includes(fileExtension)) {
8502
+ errorMessage = `Invalid file type. Allowed types are: ${me.restrictions.allowedExtensions.join(', ')}.`;
8503
+ }
8504
+ else if (fileSize > me.restrictions.maxFileSize) {
8505
+ errorMessage = `File size cannot exceeds ${me.formatFileSize(me.restrictions.maxFileSize)}.`;
8506
+ }
8507
+ me.alertService.showOkay('Failed to upload', errorMessage, ['col-4']);
8508
+ return false;
8509
+ }
8510
+ return true;
8511
+ }
8488
8512
  selectEventHandler(e) {
8489
8513
  const me = this;
8490
- /****** sharepoint ******/
8514
+ //#region sharepoint
8491
8515
  const attachmentInfo = this.sharePointService.getAttachmentInfo(this.data["DownloadFileConfig"]);
8492
- //change uploadSaveUrl
8516
+ // Change uploadSaveUrl if saving to SharePoint
8493
8517
  if (attachmentInfo && attachmentInfo.isSaveToSharePoint && attachmentInfo.siteName) {
8494
8518
  const attachmentSourceUrl = this.zcoreService.getEnvironment().attachmentSourceUrl;
8495
8519
  this.uploadSaveUrl = attachmentSourceUrl + '/Chunk_Upload_Save';
8496
8520
  }
8497
- /****** sharepoint ******/
8521
+ //#endregion
8498
8522
  if (this.data['SelectFileOnly']) {
8499
- // append all file to component memory
8523
+ // Append all files to component memory
8500
8524
  e.files.forEach(async (file) => {
8501
- if (file.rawFile) {
8502
- const reader = new FileReader();
8503
- reader.onload = function (ev) {
8504
- // clone the data and also add the readed file to the object
8505
- const fileData = Object.assign({}, file);
8506
- fileData['file'] = ev.target["result"];
8507
- // push to component fileList
8508
- me.fileList.push(fileData);
8509
- me.group['zupload_' + me.data.Value] = me.fileList;
8510
- if (me.data['FileSelectedEvent']) {
8511
- // call the project event
8512
- me.group.subject.next({
8513
- type: "zupload-fileSelectedEvent",
8514
- target: me.data['FileSelectedEvent'],
8515
- data: me.fileList
8516
- });
8517
- }
8518
- };
8519
- await reader.readAsDataURL(file.rawFile);
8525
+ if (me.isValidUploadedFile(me, file)) {
8526
+ if (file.rawFile) {
8527
+ const reader = new FileReader();
8528
+ reader.onload = function (ev) {
8529
+ // Clone the data and also add the read file to the object
8530
+ const fileData = Object.assign({}, file);
8531
+ fileData['file'] = ev.target["result"];
8532
+ // Push to component fileList
8533
+ me.fileList.push(fileData);
8534
+ me.group['zupload_' + me.data.Value] = me.fileList;
8535
+ if (me.data['FileSelectedEvent']) {
8536
+ // Call the project event
8537
+ me.group.subject.next({
8538
+ type: "zupload-fileSelectedEvent",
8539
+ target: me.data['FileSelectedEvent'],
8540
+ data: me.fileList
8541
+ });
8542
+ }
8543
+ };
8544
+ await reader.readAsDataURL(file.rawFile);
8545
+ }
8546
+ }
8547
+ else {
8548
+ e.preventDefault();
8520
8549
  }
8521
8550
  });
8522
8551
  }
@@ -8528,29 +8557,32 @@ class ZuploadComponent extends InputFieldBase {
8528
8557
  //Check if Image Compression is enabled.
8529
8558
  if (imageCompressionEnabled === true) {
8530
8559
  e.files.forEach((file) => {
8531
- // Compress only if it is an image file
8532
- if (file.rawFile && file.rawFile.type.includes("image")) {
8533
- if (!file.validationErrors) {
8534
- const imgConfig = this.compressionConfigHandler(this.data.Compression);
8535
- if (file.size > imgConfig.FileSizeMinSizeByte) {
8536
- me.compressImage.compress(file.rawFile, imgConfig) //Pass in parameter to set the Compression Options
8537
- .pipe(take(1))
8538
- .subscribe(compressFile => {
8539
- this.ngZone.run(() => {
8540
- file.rawFile = compressFile;
8541
- file.size = compressFile.size;
8542
- // clone the data and also add the readed file to the object
8543
- const fileData = Object.assign({}, file);
8544
- // push to component fileList
8545
- me.fileList.push(fileData);
8546
- const reader = new FileReader();
8547
- reader.readAsDataURL(file.rawFile);
8560
+ if (me.isValidUploadedFile(me, file)) {
8561
+ // Compress only if it is an image file
8562
+ if (file.rawFile && file.rawFile.type.includes("image")) {
8563
+ if (!file.validationErrors) {
8564
+ const imgConfig = this.compressionConfigHandler(this.data.Compression);
8565
+ if (file.size > imgConfig.FileSizeMinSizeByte) {
8566
+ me.compressImage.compress(file.rawFile, imgConfig) //Pass in parameter to set the Compression Options
8567
+ .pipe(take(1))
8568
+ .subscribe(compressFile => {
8569
+ this.ngZone.run(() => {
8570
+ file.rawFile = compressFile;
8571
+ file.size = compressFile.size;
8572
+ // Push to component fileList
8573
+ me.fileList.push(Object.assign({}, file));
8574
+ const reader = new FileReader();
8575
+ reader.readAsDataURL(file.rawFile);
8576
+ });
8577
+ console.log(`Compressed file size: ${(file.rawFile.size / 1024).toFixed(2)}KB`);
8548
8578
  });
8549
- console.log(`Compressed file size: ${(file.rawFile.size / 1024).toFixed(2)}KB`);
8550
- });
8551
- } // file size check
8552
- } // validationErrors check
8553
- } // file type check
8579
+ } // file size check
8580
+ } // validationErrors check
8581
+ } // file type check
8582
+ }
8583
+ else {
8584
+ e.preventDefault();
8585
+ }
8554
8586
  }); // loop each file
8555
8587
  } // imagecompression check
8556
8588
  // add to group scope
@@ -8562,13 +8594,20 @@ class ZuploadComponent extends InputFieldBase {
8562
8594
  this.uploadComponent.clearFiles();
8563
8595
  this.group['zupload_' + this.data.Value] = this.fileList;
8564
8596
  }
8597
+ formatFileSize(bytes) {
8598
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
8599
+ if (bytes === 0)
8600
+ return '0 Byte';
8601
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
8602
+ return parseFloat((bytes / Math.pow(1024, i)).toFixed(2)) + sizes[i];
8603
+ }
8565
8604
  }
8566
- ZuploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZuploadComponent, deps: [{ token: ZComponentService }, { token: i2.AuthService }, { token: i2.CompressImageService }, { token: i2.ZCoreService }, { token: i0.NgZone }, { token: i2.SharePointService }], target: i0.ɵɵFactoryTarget.Component });
8567
- ZuploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZuploadComponent, selector: "app-zupload", viewQueries: [{ propertyName: "uploadComponent", first: true, predicate: ["uploadComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zupload-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-upload #uploadComponent *ngIf=\"!data.SelectFileOnly\" [id]=\"data.Value\" [autoUpload]=\"isAutoUpload\"\r\n [saveUrl]=\"uploadSaveUrl\" [removeUrl]=\"uploadRemoveUrl\" [restrictions]=\"restrictions\"\r\n [multiple]=\"isMultiple\" [chunkable]=\"chunkSettings\" [showFileList]=\"showFileList\"\r\n (select)=\"selectEventHandler($event)\" (remove)=\"onRemove($event)\" (success)=\"onSuccess($event)\"\r\n (upload)=\"uploadEventHandler($event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n </kendo-upload>\r\n\r\n <kendo-fileselect #uploadComponent *ngIf=\"data.SelectFileOnly\" [id]=\"data.Value\" (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\" [formControlName]=\"data.Value\" (valueChange)=\"onChange($event)\" [restrictions]=\"restrictions\"\r\n [style]=\"componentProperties.style.style1\" class=e1tag-style1>\r\n </kendo-fileselect>\r\n\r\n <div *ngIf=\"imagePreviews.length\" class=\"image-preview-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <div class=\"label-container e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n Image Preview:\r\n </div>\r\n <div class=\"image-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <img *ngFor=\"let image of imagePreviews\" [src]=\"image.src\" alt=\"image preview\" height=\"100\" class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\" />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".image-preview-container{border:1px solid rgba(0,0,0,.08)}.image-preview-container>.label-container{margin:5px}\n"], components: [{ type: i3$7.UploadComponent, selector: "kendo-upload", inputs: ["autoUpload", "batch", "withCredentials", "saveField", "saveHeaders", "saveMethod", "saveUrl", "responseType", "removeField", "removeHeaders", "removeMethod", "removeUrl", "chunkable", "concurrent", "multiple", "disabled", "showFileList", "tabindex", "zoneId", "tabIndex", "accept", "restrictions", "focusableId", "actionsLayout"], outputs: ["blur", "cancel", "clear", "complete", "error", "focus", "pause", "remove", "resume", "select", "success", "upload", "uploadProgress", "valueChange"], exportAs: ["kendoUpload"] }, { type: i3$7.FileSelectComponent, selector: "kendo-fileselect", inputs: ["accept", "disabled", "multiple", "name", "showFileList", "tabindex", "restrictions", "zoneId", "focusableId"], outputs: ["blur", "focus", "select", "remove", "valueChange"], exportAs: ["kendoFileSelect"] }], directives: [{ type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
8605
+ ZuploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZuploadComponent, deps: [{ token: ZComponentService }, { token: i2.AuthService }, { token: i2.CompressImageService }, { token: i2.ZCoreService }, { token: i0.NgZone }, { token: i2.SharePointService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component });
8606
+ ZuploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZuploadComponent, selector: "app-zupload", viewQueries: [{ propertyName: "uploadComponent", first: true, predicate: ["uploadComponent"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"zupload-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-upload\r\n *ngIf=\"!data.SelectFileOnly\"\r\n #uploadComponent\r\n [id]=\"data.Value\"\r\n [autoUpload]=\"isAutoUpload\"\r\n [saveUrl]=\"uploadSaveUrl\"\r\n [removeUrl]=\"uploadRemoveUrl\"\r\n [restrictions]=\"restrictions\"\r\n [multiple]=\"isMultiple\"\r\n [chunkable]=\"chunkSettings\"\r\n [showFileList]=\"showFileList\"\r\n (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\"\r\n (success)=\"onSuccess($event)\"\r\n (upload)=\"uploadEventHandler($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n </kendo-upload>\r\n\r\n <kendo-fileselect\r\n *ngIf=\"data.SelectFileOnly\"\r\n #uploadComponent\r\n [id]=\"data.Value\"\r\n (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [formControlName]=\"data.Value\"\r\n (valueChange)=\"onChange($event)\" \r\n [restrictions]=\"restrictions\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n </kendo-fileselect>\r\n\r\n <div\r\n *ngIf=\"imagePreviews.length\"\r\n class=\"image-preview-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <div\r\n class=\"label-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n Image Preview:\r\n </div>\r\n <div\r\n class=\"image-container e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <img\r\n *ngFor=\"let image of imagePreviews\"\r\n [src]=\"image.src\"\r\n alt=\"image preview\"\r\n height=\"100\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\" />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".image-preview-container{border:1px solid rgba(0,0,0,.08)}.image-preview-container>.label-container{margin:5px}\n"], components: [{ type: i3$7.UploadComponent, selector: "kendo-upload", inputs: ["autoUpload", "batch", "withCredentials", "saveField", "saveHeaders", "saveMethod", "saveUrl", "responseType", "removeField", "removeHeaders", "removeMethod", "removeUrl", "chunkable", "concurrent", "multiple", "disabled", "showFileList", "tabindex", "zoneId", "tabIndex", "accept", "restrictions", "focusableId", "actionsLayout"], outputs: ["blur", "cancel", "clear", "complete", "error", "focus", "pause", "remove", "resume", "select", "success", "upload", "uploadProgress", "valueChange"], exportAs: ["kendoUpload"] }, { type: i3$7.FileSelectComponent, selector: "kendo-fileselect", inputs: ["accept", "disabled", "multiple", "name", "showFileList", "tabindex", "restrictions", "zoneId", "focusableId"], outputs: ["blur", "focus", "select", "remove", "valueChange"], exportAs: ["kendoFileSelect"] }], directives: [{ type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
8568
8607
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZuploadComponent, decorators: [{
8569
8608
  type: Component,
8570
- args: [{ selector: "app-zupload", template: "<div [formGroup]=\"form\" class=\"zupload-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-upload #uploadComponent *ngIf=\"!data.SelectFileOnly\" [id]=\"data.Value\" [autoUpload]=\"isAutoUpload\"\r\n [saveUrl]=\"uploadSaveUrl\" [removeUrl]=\"uploadRemoveUrl\" [restrictions]=\"restrictions\"\r\n [multiple]=\"isMultiple\" [chunkable]=\"chunkSettings\" [showFileList]=\"showFileList\"\r\n (select)=\"selectEventHandler($event)\" (remove)=\"onRemove($event)\" (success)=\"onSuccess($event)\"\r\n (upload)=\"uploadEventHandler($event)\" [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\">\r\n </kendo-upload>\r\n\r\n <kendo-fileselect #uploadComponent *ngIf=\"data.SelectFileOnly\" [id]=\"data.Value\" (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\" [formControlName]=\"data.Value\" (valueChange)=\"onChange($event)\" [restrictions]=\"restrictions\"\r\n [style]=\"componentProperties.style.style1\" class=e1tag-style1>\r\n </kendo-fileselect>\r\n\r\n <div *ngIf=\"imagePreviews.length\" class=\"image-preview-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <div class=\"label-container e1tag-style3\" [style]=\"componentProperties.style.style3\">\r\n Image Preview:\r\n </div>\r\n <div class=\"image-container e1tag-style4\" [style]=\"componentProperties.style.style4\">\r\n <img *ngFor=\"let image of imagePreviews\" [src]=\"image.src\" alt=\"image preview\" height=\"100\" class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\" />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".image-preview-container{border:1px solid rgba(0,0,0,.08)}.image-preview-container>.label-container{margin:5px}\n"] }]
8571
- }], ctorParameters: function () { return [{ type: ZComponentService }, { type: i2.AuthService }, { type: i2.CompressImageService }, { type: i2.ZCoreService }, { type: i0.NgZone }, { type: i2.SharePointService }]; }, propDecorators: { uploadComponent: [{
8609
+ args: [{ selector: "app-zupload", template: "<div [formGroup]=\"form\" class=\"zupload-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <kendo-upload\r\n *ngIf=\"!data.SelectFileOnly\"\r\n #uploadComponent\r\n [id]=\"data.Value\"\r\n [autoUpload]=\"isAutoUpload\"\r\n [saveUrl]=\"uploadSaveUrl\"\r\n [removeUrl]=\"uploadRemoveUrl\"\r\n [restrictions]=\"restrictions\"\r\n [multiple]=\"isMultiple\"\r\n [chunkable]=\"chunkSettings\"\r\n [showFileList]=\"showFileList\"\r\n (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\"\r\n (success)=\"onSuccess($event)\"\r\n (upload)=\"uploadEventHandler($event)\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n </kendo-upload>\r\n\r\n <kendo-fileselect\r\n *ngIf=\"data.SelectFileOnly\"\r\n #uploadComponent\r\n [id]=\"data.Value\"\r\n (select)=\"selectEventHandler($event)\"\r\n (remove)=\"onRemove($event)\"\r\n [formControlName]=\"data.Value\"\r\n (valueChange)=\"onChange($event)\" \r\n [restrictions]=\"restrictions\"\r\n [style]=\"componentProperties.style.style1\"\r\n class=\"e1tag-style1\">\r\n </kendo-fileselect>\r\n\r\n <div\r\n *ngIf=\"imagePreviews.length\"\r\n class=\"image-preview-container e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\">\r\n <div\r\n class=\"label-container e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n Image Preview:\r\n </div>\r\n <div\r\n class=\"image-container e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <img\r\n *ngFor=\"let image of imagePreviews\"\r\n [src]=\"image.src\"\r\n alt=\"image preview\"\r\n height=\"100\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\" />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".image-preview-container{border:1px solid rgba(0,0,0,.08)}.image-preview-container>.label-container{margin:5px}\n"] }]
8610
+ }], ctorParameters: function () { return [{ type: ZComponentService }, { type: i2.AuthService }, { type: i2.CompressImageService }, { type: i2.ZCoreService }, { type: i0.NgZone }, { type: i2.SharePointService }, { type: i2.AlertService }]; }, propDecorators: { uploadComponent: [{
8572
8611
  type: ViewChild,
8573
8612
  args: ["uploadComponent"]
8574
8613
  }] } });
@@ -8799,7 +8838,7 @@ class InputFieldAddOnsComponent extends InputFieldBase {
8799
8838
  if (this.addOn.IconList) {
8800
8839
  this.addOn.IconList = this.addOn.IconList.filter(x => x);
8801
8840
  this.addOn.IconList.forEach((i) => {
8802
- if (i.ToolTipText == undefined || i.ToolTipText == null) {
8841
+ if (!i.ToolTipText) {
8803
8842
  i.ToolTipText = "";
8804
8843
  }
8805
8844
  else if (i.ToolTipText.indexOf("group.") !== -1) {
@@ -8831,7 +8870,7 @@ class InputFieldAddOnsComponent extends InputFieldBase {
8831
8870
  if (this.addOn.TextList) {
8832
8871
  this.addOn.TextList = this.addOn.TextList.filter(x => x);
8833
8872
  this.addOn.TextList.forEach((i) => {
8834
- if (i.ToolTipText == undefined || i.ToolTipText == null) {
8873
+ if (!i.ToolTipText) {
8835
8874
  i.ToolTipText = "";
8836
8875
  }
8837
8876
  else if (i.ToolTipText.indexOf("group.") !== -1) {
@@ -10037,9 +10076,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
10037
10076
 
10038
10077
  /********** Angular **********/
10039
10078
  class ZmfbComponent extends ButtonFieldBase {
10040
- constructor(componentService, fieldService, resourceApiService, workflowService) {
10079
+ constructor(componentService, fontAweSomeService, fieldService, resourceApiService, workflowService) {
10041
10080
  super(componentService);
10042
10081
  this.componentService = componentService;
10082
+ this.fontAweSomeService = fontAweSomeService;
10043
10083
  this.fieldService = fieldService;
10044
10084
  this.resourceApiService = resourceApiService;
10045
10085
  this.workflowService = workflowService;
@@ -10233,12 +10273,12 @@ class ZmfbComponent extends ButtonFieldBase {
10233
10273
  }
10234
10274
  }
10235
10275
  }
10236
- ZmfbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmfbComponent, deps: [{ token: ZComponentService }, { token: i2.FieldService }, { token: i2.ResourceApiService }, { token: i2.WorkflowService }], target: i0.ɵɵFactoryTarget.Component });
10237
- ZmfbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmfbComponent, selector: "app-zmfb", usesInheritance: true, ngImport: i0, template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"], components: [{ type: i3$3.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2$5.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i3$3.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
10276
+ ZmfbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmfbComponent, deps: [{ token: ZComponentService }, { token: i2.FontAweSomeService }, { token: i2.FieldService }, { token: i2.ResourceApiService }, { token: i2.WorkflowService }], target: i0.ɵɵFactoryTarget.Component });
10277
+ ZmfbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ZmfbComponent, selector: "app-zmfb", usesInheritance: true, ngImport: i0, template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n size=\"2x\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <fa-icon [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\" size=\"1x\"></fa-icon>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"], components: [{ type: i3$3.FloatingActionButtonComponent, selector: "kendo-floatingactionbutton", inputs: ["themeColor", "size", "rounded", "disabled", "align", "offset", "positionMode", "icon", "iconClass", "buttonClass", "dialClass", "text", "dialItemAnimation", "tabIndex", "dialItems"], outputs: ["blur", "focus", "dialItemClick", "open", "close"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i2$5.AvatarComponent, selector: "kendo-avatar", inputs: ["shape", "size", "rounded", "themeColor", "fillMode", "fill", "border", "iconClass", "width", "height", "cssStyle", "initials", "icon", "imageSrc"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.FloatingActionButtonTemplateDirective, selector: "[kendoFloatingActionButtonTemplate]" }, { type: i3$3.DialItemTemplateDirective, selector: "[kendoDialItemTemplate]" }] });
10238
10278
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ZmfbComponent, decorators: [{
10239
10279
  type: Component,
10240
- args: [{ selector: 'app-zmfb', template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <span class=\"k-icon k-i-{{ item.icon }}\"></span>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"] }]
10241
- }], ctorParameters: function () { return [{ type: ZComponentService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.WorkflowService }]; } });
10280
+ args: [{ selector: 'app-zmfb', template: "<div class=\"zmfb-wrap e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <div class=\"k-overlay e1tag-style1\"\r\n *ngIf=\"dialOpen\"\r\n [style]=\"componentProperties.style.style1\">\r\n </div>\r\n <kendo-floatingactionbutton buttonClass=\"custom-floating-button\"\r\n class=\"e1tag-style2\"\r\n dialClass=\"custom-floating-dial\"\r\n [positionMode]=\"positionMode\"\r\n [align]=\"align\"\r\n [dialItems]=\"items\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n (open)=\"onOpen($event)\"\r\n (close)=\"onClose($event)\"\r\n (click)=\"buttonClick(data)\"\r\n (dialItemClick)=\"onDialItemClick($event)\"\r\n [style]=\"componentProperties.style.style2\">\r\n <ng-template kendoFloatingActionButtonTemplate>\r\n <fa-icon [icon]=\"data.Icon ? data.Icon : 'plus'\"\r\n size=\"2x\"\r\n class=\"e1tag-style3\"\r\n [style]=\"componentProperties.style.style3\">\r\n </fa-icon>\r\n </ng-template>\r\n <ng-template kendoDialItemTemplate\r\n let-item\r\n let-isFocused=\"isFocused\">\r\n <span class=\"k-fab-item-text e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n <span>{{ item.label }}</span>\r\n </span>\r\n <kendo-avatar shape=\"circle\"\r\n [themeColor]=\"buttonColor\"\r\n class=\"e1tag-style5\"\r\n [style]=\"componentProperties.style.style5\">\r\n <fa-icon [icon]=\"getFontAwesome(item.icon, fontAweSomeService)\" size=\"1x\"></fa-icon>\r\n </kendo-avatar>\r\n </ng-template>\r\n </kendo-floatingactionbutton>\r\n</div>\r\n", styles: [":host ::ng-deep kendo-floatingactionbutton .custom-floating-button{background:var(--ion-color-primary);border:none!important;outline:none;height:55px;width:55px;z-index:999}:host ::ng-deep kendo-floatingactionbutton .custom-floating-button:hover{background:var(--ion-color-primary-tint)}.button-item{padding:8px 10px;width:100%;display:flex;align-items:center;background-color:#fff}.button-details{margin-left:8px;display:flex;flex-direction:column;align-items:flex-start}.custom-focused-class{box-shadow:inset 0 0 8px #0003}.zmfb-wrap{display:flex;justify-content:center;margin-top:60px}@media only screen and (max-device-width: 768px){.k-bottom-end,.k-pos-bottom-end{padding-bottom:16vh}}.k-top-end,.k-pos-top-end{padding-top:6.5vh;padding-right:1vw}\n"] }]
10281
+ }], ctorParameters: function () { return [{ type: ZComponentService }, { type: i2.FontAweSomeService }, { type: i2.FieldService }, { type: i2.ResourceApiService }, { type: i2.WorkflowService }]; } });
10242
10282
 
10243
10283
  /********** Angular **********/
10244
10284
  class ZmodalComponent extends DialogContentBase {
@@ -12301,11 +12341,13 @@ class ZudfComponent extends ContainerFieldBase {
12301
12341
  if (this.data.Value == undefined && this.data.FieldElementCode) {
12302
12342
  const fieldName = ZComponentHelper.getGroupValue(this.data.FieldElementCode, this.group);
12303
12343
  const fieldFormType = ZComponentHelper.getGroupValue(this.data.FieldElementFormType, this.group);
12304
- if (fieldFormType && fieldFormType == FormType.listField) {
12305
- obs = this.fieldService.getListFieldByFieldElementName(fieldName);
12306
- }
12307
- else {
12308
- obs = this.fieldService.getFormFieldCode(fieldName, 'FormField', this, 'fields');
12344
+ if (fieldName) {
12345
+ if (fieldFormType && fieldFormType == FormType.listField) {
12346
+ obs = this.fieldService.getListFieldByFieldElementName(fieldName);
12347
+ }
12348
+ else {
12349
+ obs = this.fieldService.getFormFieldCode(fieldName, 'FormField', this, 'fields');
12350
+ }
12309
12351
  }
12310
12352
  }
12311
12353
  super.initComponent().pipe(switchMap(() => obs), switchMap((field) => {
@@ -14303,6 +14345,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
14303
14345
  args: [{ selector: "app-kscrollview", template: "<div class=\"kscrollview-container\" [style]=\"componentProperties.containerStyle.style\" class=\"e1tag-container-style\"\r\n *ngIf=\"!isLoading\">\r\n <kendo-scrollview [style]=\"componentProperties.containerStyle.style1\" class=\"e1tag-container-style1 scrollview\"\r\n [ngClass]=\"data.Class\" [data]=\"panelItems\" [arrows]=\"options.arrows\" [pageable]=\"options.pageAble\"\r\n [endless]=\"options.endless\">\r\n <ng-template let-item=\"item\">\r\n <div [style]=\"componentProperties.containerStyle.style2\" class=\"e1tag-container-style2\" (click)=\"onItemClick($event, item)\">\r\n <div [style]=\"componentProperties.containerStyle.style3\" class=\"e1tag-container-style3 kscrollview-title\">\r\n {{item.Label}}\r\n </div>\r\n <img [src]='item.SourceUrl' [alt]='item.Label' [style]=\"componentProperties.containerStyle.style4\"\r\n class=\"e1tag-container-style4\" draggable=\"true\" />\r\n </div>\r\n </ng-template>\r\n </kendo-scrollview>\r\n</div>\r\n", styles: [".k-scrollview-wrap{margin:0 auto}.kscrollview-title{position:absolute;top:0;left:0;right:0;margin:0;padding:8px 8px 10px;color:#fff;background:linear-gradient(rgba(0,0,0,.8),rgba(202,202,202,.4705882353));text-align:center;font-size:16px}.scrollview{height:400px}.title-bottom .kscrollview-title{top:unset;bottom:0;background:linear-gradient(rgba(202,202,202,.4705882353),rgba(0,0,0,.8));padding-bottom:15px;padding-top:10px}.show-title-when-hover .kscrollview-title{opacity:0;transition:opacity .5s}.show-title-when-hover:hover .kscrollview-title{opacity:1;transition:opacity .5s}\n"] }]
14304
14346
  }], ctorParameters: function () { return [{ type: ZComponentService }]; } });
14305
14347
 
14348
+ class FiconComponent {
14349
+ constructor(fontAweSomeService) {
14350
+ this.fontAweSomeService = fontAweSomeService;
14351
+ this.size = "large";
14352
+ this.rounded = "medium";
14353
+ this.fillMode = "solid";
14354
+ this.icons = [];
14355
+ this.filteredIcons = [];
14356
+ this.searchTerm = '';
14357
+ }
14358
+ ngOnInit() {
14359
+ this.icons = this.fontAweSomeService.getAllIcons().map(icon => ({
14360
+ ...icon,
14361
+ formattedName: this.toCamelCase(`${icon.name}`)
14362
+ // formattedName: this.toCamelCase(`${icon.prefix === 'fas' ? 'fa' : icon.prefix}-${icon.name}`)
14363
+ }));
14364
+ this.filteredIcons = [...this.icons];
14365
+ ZComponentHelper.setComponentProperties(this);
14366
+ ZComponentHelper.registerComponent(this);
14367
+ }
14368
+ toCamelCase(str) {
14369
+ return str
14370
+ .split('-')
14371
+ .map((word, index) => index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1))
14372
+ .join('');
14373
+ }
14374
+ filterIcon(searchTerm) {
14375
+ this.searchTerm = searchTerm;
14376
+ this.filteredIcons = this.icons.filter(icon => icon.name.toLowerCase().includes(searchTerm.toLowerCase()));
14377
+ }
14378
+ }
14379
+ FiconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FiconComponent, deps: [{ token: i2.FontAweSomeService }], target: i0.ɵɵFactoryTarget.Component });
14380
+ FiconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FiconComponent, selector: "app-ficon", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div> \r\n <div class=\"search-box\">\r\n <kendo-floatinglabel [labelCssClass]=\"'custom-label-class'\"\r\n text=\"Search icons\">\r\n <kendo-textbox [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"filterIcon(searchTerm)\"\r\n placeholder=\"Search icons\"\r\n [clearButton]=\"true\"\r\n [rounded]=\"rounded\"\r\n [style.width.px]=\"480\">\r\n </kendo-textbox>\r\n </kendo-floatinglabel> \r\n </div>\r\n\r\n <ul class=\"icons-wrapper\">\r\n <li *ngFor=\"let icon of filteredIcons\" class=\"icon-item\">\r\n <fa-icon [icon]=\"icon.definition\" size=\"3x\"></fa-icon>\r\n <div class=\"icon-name\" style=\"text-align:center\">{{ icon.formattedName }}</div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: [".icons-wrapper{display:flex;flex-wrap:wrap;justify-content:center;list-style:none;padding:1em;margin:1em}.icon-item{display:flex;flex-direction:column;align-items:center;margin:0 8px 16px 0;width:150px;height:100px;text-align:center;font-size:12px;box-shadow:0 4px 8px #0000001a;border-radius:8px;padding:12px;background-color:#f5f5f5}.icon-item kendo-svgicon{margin-bottom:8px}.icon-name{word-spacing:100px;white-space:initial;max-width:150px;padding-top:1em}.k-icon{display:block;clear:both;margin:0 auto 10px;color:#656565;font-size:32px}.custom-label-class{margin-left:30px}.search-box{display:flex;justify-content:center;margin-top:30px;margin-bottom:20px}\n"], components: [{ type: i15.FloatingLabelComponent, selector: "kendo-floatinglabel", inputs: ["labelCssStyle", "labelCssClass", "id", "text", "optional"], outputs: ["positionChange"], exportAs: ["kendoFloatingLabel"] }, { type: i3$5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "errorIcon", "clearButtonIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i4.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], directives: [{ type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
14381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FiconComponent, decorators: [{
14382
+ type: Component,
14383
+ args: [{ selector: 'app-ficon', template: "<div> \r\n <div class=\"search-box\">\r\n <kendo-floatinglabel [labelCssClass]=\"'custom-label-class'\"\r\n text=\"Search icons\">\r\n <kendo-textbox [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"filterIcon(searchTerm)\"\r\n placeholder=\"Search icons\"\r\n [clearButton]=\"true\"\r\n [rounded]=\"rounded\"\r\n [style.width.px]=\"480\">\r\n </kendo-textbox>\r\n </kendo-floatinglabel> \r\n </div>\r\n\r\n <ul class=\"icons-wrapper\">\r\n <li *ngFor=\"let icon of filteredIcons\" class=\"icon-item\">\r\n <fa-icon [icon]=\"icon.definition\" size=\"3x\"></fa-icon>\r\n <div class=\"icon-name\" style=\"text-align:center\">{{ icon.formattedName }}</div>\r\n </li>\r\n </ul>\r\n</div>\r\n", styles: [".icons-wrapper{display:flex;flex-wrap:wrap;justify-content:center;list-style:none;padding:1em;margin:1em}.icon-item{display:flex;flex-direction:column;align-items:center;margin:0 8px 16px 0;width:150px;height:100px;text-align:center;font-size:12px;box-shadow:0 4px 8px #0000001a;border-radius:8px;padding:12px;background-color:#f5f5f5}.icon-item kendo-svgicon{margin-bottom:8px}.icon-name{word-spacing:100px;white-space:initial;max-width:150px;padding-top:1em}.k-icon{display:block;clear:both;margin:0 auto 10px;color:#656565;font-size:32px}.custom-label-class{margin-left:30px}.search-box{display:flex;justify-content:center;margin-top:30px;margin-bottom:20px}\n"] }]
14384
+ }], ctorParameters: function () { return [{ type: i2.FontAweSomeService }]; }, propDecorators: { data: [{
14385
+ type: Input
14386
+ }], group: [{
14387
+ type: Input
14388
+ }], form: [{
14389
+ type: Input
14390
+ }] } });
14391
+
14306
14392
  /********** Angular **********/
14307
14393
  class MmhglobalDynamicformModule {
14308
14394
  }
@@ -14388,7 +14474,8 @@ MmhglobalDynamicformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.
14388
14474
  ZcolorpickerComponent,
14389
14475
  KmenuComponent,
14390
14476
  KScrollViewComponent,
14391
- ContextMenuComponent], imports: [IonicModule,
14477
+ ContextMenuComponent,
14478
+ FiconComponent], imports: [IonicModule,
14392
14479
  IonicSelectableModule,
14393
14480
  CommonModule,
14394
14481
  RouterModule,
@@ -14515,7 +14602,8 @@ MmhglobalDynamicformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.
14515
14602
  VirtualScrollComponent,
14516
14603
  ZcolorpickerComponent,
14517
14604
  KmenuComponent,
14518
- KScrollViewComponent] });
14605
+ KScrollViewComponent,
14606
+ FiconComponent] });
14519
14607
  MmhglobalDynamicformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MmhglobalDynamicformModule, providers: [
14520
14608
  ModalService
14521
14609
  ], imports: [[
@@ -14654,7 +14742,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
14654
14742
  ZcolorpickerComponent,
14655
14743
  KmenuComponent,
14656
14744
  KScrollViewComponent,
14657
- ContextMenuComponent
14745
+ ContextMenuComponent,
14746
+ FiconComponent
14658
14747
  ],
14659
14748
  imports: [
14660
14749
  IonicModule,
@@ -14788,6 +14877,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
14788
14877
  ZcolorpickerComponent,
14789
14878
  KmenuComponent,
14790
14879
  KScrollViewComponent,
14880
+ FiconComponent
14791
14881
  ],
14792
14882
  providers: [
14793
14883
  ModalService
@@ -14804,5 +14894,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
14804
14894
  * Generated bundle index. Do not edit.
14805
14895
  */
14806
14896
 
14807
- export { ButtonFieldBase, ContainerFieldBase, ContextMenuComponent, DataListingFieldBase, DateIonicFormatParser, DateIonicMinMaxParser, DateKendoFormatParser, DateParserFilter, DateRangeFilterCellComponent, DivzLayout, EditorFilter, ElementContainerDirective, FieldBase, FieldElementDirective, HtmlSanitizePipe, InputErrorMessageComponent, InputFieldAddOnsComponent, InputFieldBase, KScrollViewComponent, KcardComponent, KmenuComponent, KsplitterComponent, MainService, MmhglobalDynamicformModule, MyFileInfo, OpenOnFocusDirective, PageLoaderComponent, PanelAreaFilter, ProcessingRecordLoaderComponent, ScrollbarThemeDirective, SfquerybuilderComponent, SpinnerComponent, TabFilter, UiactionbuttonComponent, UiappmenucontentComponent, UibulletinComponent, UicontainerComponent, UicontentComponent, UiheaderComponent, UimenubuttonComponent, UimenucontentComponent, UipageComponent, UivalidationmessageComponent, VirtualScrollComponent, ZBulletComponent, ZChipComponent, ZComponentService, ZGridBindingDirective, ZGridPopupAnchorDirective, ZInputContainerComponent, ZInputParser, ZNumericParser, ZSchedulerToolBarComponent, ZSelectTranslationParser, ZTreeListOptions, ZbuttonsComponent, ZcardComponent, ZchartComponent, ZcheckboxComponent, ZcodeeditorComponent, ZcolorpickerComponent, ZdaterangeComponent, ZdatetimeComponent, ZdivComponent, ZformComponent, ZformcontrolComponent, ZgaugeComponent, ZgridComponent, ZgridContainerComponent, ZimgComponent, ZlabelComponent, ZloopComponent, ZmfbComponent, ZmodalComponent, ZmodalMobileComponent, ZnumericComponent, ZpostselectinputComponent, ZprogressbarComponent, ZreportComponent, ZschedulerComponent, ZselectmultipleComponent, ZtabComponent, ZtextComponent, ZtextareaComponent, ZtexteditorComponent, ZtreeComponent, ZtreelistComponent, ZtrendcardComponent, ZudfComponent, ZunknownComponent, ZuploadComponent, ZworkflowbuttonsComponent, refreshGrid };
14897
+ export { ButtonFieldBase, ContainerFieldBase, ContextMenuComponent, DataListingFieldBase, DateIonicFormatParser, DateIonicMinMaxParser, DateKendoFormatParser, DateParserFilter, DateRangeFilterCellComponent, DivzLayout, EditorFilter, ElementContainerDirective, FiconComponent, FieldBase, FieldElementDirective, HtmlSanitizePipe, InputErrorMessageComponent, InputFieldAddOnsComponent, InputFieldBase, KScrollViewComponent, KcardComponent, KmenuComponent, KsplitterComponent, MainService, MmhglobalDynamicformModule, MyFileInfo, OpenOnFocusDirective, PageLoaderComponent, PanelAreaFilter, ProcessingRecordLoaderComponent, ScrollbarThemeDirective, SfquerybuilderComponent, SpinnerComponent, TabFilter, UiactionbuttonComponent, UiappmenucontentComponent, UibulletinComponent, UicontainerComponent, UicontentComponent, UiheaderComponent, UimenubuttonComponent, UimenucontentComponent, UipageComponent, UivalidationmessageComponent, VirtualScrollComponent, ZBulletComponent, ZChipComponent, ZComponentService, ZGridBindingDirective, ZGridPopupAnchorDirective, ZInputContainerComponent, ZInputParser, ZNumericParser, ZSchedulerToolBarComponent, ZSelectTranslationParser, ZTreeListOptions, ZbuttonsComponent, ZcardComponent, ZchartComponent, ZcheckboxComponent, ZcodeeditorComponent, ZcolorpickerComponent, ZdaterangeComponent, ZdatetimeComponent, ZdivComponent, ZformComponent, ZformcontrolComponent, ZgaugeComponent, ZgridComponent, ZgridContainerComponent, ZimgComponent, ZlabelComponent, ZloopComponent, ZmfbComponent, ZmodalComponent, ZmodalMobileComponent, ZnumericComponent, ZpostselectinputComponent, ZprogressbarComponent, ZreportComponent, ZschedulerComponent, ZselectmultipleComponent, ZtabComponent, ZtextComponent, ZtextareaComponent, ZtexteditorComponent, ZtreeComponent, ZtreelistComponent, ZtrendcardComponent, ZudfComponent, ZunknownComponent, ZuploadComponent, ZworkflowbuttonsComponent, refreshGrid };
14808
14898
  //# sourceMappingURL=mmhglobal-dynamicform.mjs.map