@bnsights/bbsf-controls 1.0.40 → 1.0.43

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.
Files changed (36) hide show
  1. package/README.md +13 -0
  2. package/bnsights-bbsf-controls-1.0.43.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +109 -47
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Enums/Enums.js +2 -1
  7. package/esm2015/lib/Shared/Enums/FileType.js +2 -2
  8. package/esm2015/lib/Shared/Models/ControlOptionsBase.js +3 -1
  9. package/esm2015/lib/Shared/Models/FileDTO.js +1 -1
  10. package/esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js +3 -1
  11. package/esm2015/lib/Shared/Models/MultipleFileUploadModel.js +1 -1
  12. package/esm2015/lib/Shared/Models/TagsInputOptions.js +1 -3
  13. package/esm2015/lib/Shared/Models/TextBoxOptions.js +3 -3
  14. package/esm2015/lib/Shared/Models/datePickerOptions.js +3 -1
  15. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +2 -2
  16. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +50 -33
  17. package/esm2015/lib/controls/Form/Form.component.js +13 -2
  18. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +4 -4
  19. package/esm2015/lib/controls/Paging/Paging.component.js +29 -2
  20. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +5 -1
  21. package/esm2015/lib/controls/TextBox/TextBox.component.js +2 -2
  22. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +2 -5
  23. package/fesm2015/bnsights-bbsf-controls.js +108 -47
  24. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  25. package/lib/Shared/Enums/Enums.d.ts +2 -1
  26. package/lib/Shared/Enums/FileType.d.ts +1 -1
  27. package/lib/Shared/Models/FileDTO.d.ts +1 -1
  28. package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +2 -0
  29. package/lib/Shared/Models/MultipleFileUploadModel.d.ts +1 -1
  30. package/lib/Shared/Models/TagsInputOptions.d.ts +2 -0
  31. package/lib/Shared/Models/TextBoxOptions.d.ts +1 -1
  32. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +4 -1
  33. package/lib/controls/Form/Form.component.d.ts +4 -1
  34. package/lib/controls/Paging/Paging.component.d.ts +3 -0
  35. package/package.json +2 -2
  36. package/bnsights-bbsf-controls-1.0.40.tgz +0 -0
@@ -556,7 +556,7 @@
556
556
  DateInputComponent.decorators = [
557
557
  { type: i0.Component, args: [{
558
558
  selector: 'BBSF-DateTimePicker',
559
- template: "<div class=\"b-control b-date-picker\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"getStartView(options.StartView)\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n \r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n <!--<span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(Dateinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>-->\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"control-desc\"*ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n \r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
559
+ template: "<div class=\"b-control b-date-picker\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"getStartView(options.StartView)\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n \r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n <!--<span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(Dateinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>-->\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"control-desc\"*ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n \r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
560
560
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
561
561
  },] }
562
562
  ];
@@ -653,6 +653,7 @@
653
653
  this.markAllAsTouched = false;
654
654
  this.validationRules = [];
655
655
  this.validationRulesasync = [];
656
+ this.deletedFiles = [];
656
657
  this.resetError = function () {
657
658
  _this.controlValidationService.RemoveGlobalError();
658
659
  };
@@ -699,33 +700,43 @@
699
700
  else {
700
701
  if (this.options.IsMultipleFile == true) {
701
702
  var files = [];
702
- this.multipleFileUploadModel = this.options.Value;
703
+ this.multipleFileUploadModel.ExistingFiles = this.options.Value.ExistingFiles;
704
+ this.multipleFileUploadModel.UploadedFiles = [];
703
705
  for (var index = 0; index < this.options.Value.ExistingFiles.length; index++) {
704
706
  var element = this.options.Value.ExistingFiles[index];
705
- // this.FileLikeObject = new FileLikeObject({
706
- // name: element.FileName,
707
- // size: element.FileSizeInMB * 1000 * 1000,
708
- // type: element.FileType,
709
- // rawFile: element.FileBase64,
710
- // })
711
- var blob = void 0;
712
- blob = new Blob(['']);
713
- blob.name = element.FileName;
714
- blob.lastModifiedDate = null;
715
- blob.webkitRelativePath = '';
716
- files.push(blob);
707
+ var bytes = new Uint8Array(element.Bytes);
708
+ var base64 = btoa(String.fromCharCode(null, bytes));
709
+ this.FileLikeObject = new ng2FileUpload.FileLikeObject({
710
+ name: element.NameWithExtension,
711
+ type: element.MimeType,
712
+ rawFile: base64,
713
+ });
714
+ // let blob: any;
715
+ // blob = new Blob(['']) as any;
716
+ // blob.name = element.FileName;
717
+ // blob.lastModifiedDate = null;
718
+ // blob.webkitRelativePath = '';
719
+ var file = this.FileLikeObject;
720
+ file.url = element.FileURL;
721
+ files.push(file);
717
722
  }
718
723
  this.uploader.addToQueue(files);
724
+ console.log(this.uploader.queue);
719
725
  }
720
726
  else {
721
- var element = this.options.Value.File;
727
+ var element = this.options.Value;
728
+ var bytes = new Uint8Array(element.Bytes);
729
+ var base64 = btoa(String.fromCharCode(null, bytes));
722
730
  this.FileLikeObject = new ng2FileUpload.FileLikeObject({
723
- name: element.FileName,
724
- size: element.FileSizeInMB * 1000 * 1000,
725
- type: element.FileType,
726
- rawFile: element.FileBase64,
731
+ name: element.NameWithExtension,
732
+ type: element.MimeType,
733
+ rawFile: base64,
727
734
  });
728
- this.uploader.addToQueue([this.FileLikeObject]);
735
+ this.file = element;
736
+ var file = this.FileLikeObject;
737
+ file.url = element.FileURL;
738
+ this.uploader.addToQueue([file]);
739
+ console.log(this.uploader.queue);
729
740
  }
730
741
  }
731
742
  if (this.options.LabelKey != null && this.options.LabelKey != "")
@@ -853,12 +864,16 @@
853
864
  var fileObject = file.rawFile;
854
865
  reader_1.readAsDataURL(fileObject);
855
866
  reader_1.onload = function () {
867
+ var existingID_GUID = null;
868
+ if (!_this.options.IsMultipleFile && _this.file)
869
+ existingID_GUID = _this.file.NameWithExtension == file.name ? _this.file.ID_GUID : null;
856
870
  var AddedFile = {
857
871
  FileName: file.name,
858
872
  FileType: file.type,
859
873
  FileBase64: reader_1.result.toString().split(',')[1],
860
874
  FileSizeInMB: ((file.size / 1000) / 1000),
861
- NameWithExtension: file.name
875
+ NameWithExtension: file.name,
876
+ ID_GUID: existingID_GUID
862
877
  };
863
878
  if (_this.options.IsMultipleFile == false) {
864
879
  _this.fileUploadModel = new FileUploadModel();
@@ -904,33 +919,35 @@
904
919
  else {
905
920
  if (this.options.Value != null && this.options.Value != undefined) {
906
921
  if (this.options.Value.CorrelationID_GUID == null) {
922
+ this.deletedFiles = [];
907
923
  this.multipleFileUploadModel.RemovedFiles = [];
908
924
  }
909
925
  else {
910
926
  if (this.multipleFileUploadModel.RemovedFiles.length == 0) {
911
927
  var FileObject_1 = item.file.rawFile;
912
- var DeletedItemId = this.options.Value.ExistingFiles.filter(function (Object) { return Object.FileName == FileObject_1.name; })[0];
913
- this.options.Value.ExistingFiles = this.options.Value.ExistingFiles.filter(function (Object) { return Object.FileName != FileObject_1.name; });
914
- this.multipleFileUploadModel.RemovedFiles.push(DeletedItemId);
928
+ var DeletedItem = this.multipleFileUploadModel.ExistingFiles.filter(function (Object) { return Object.NameWithExtension == FileObject_1.name; })[0];
929
+ this.multipleFileUploadModel.ExistingFiles = this.multipleFileUploadModel.ExistingFiles.filter(function (Object) { return Object.NameWithExtension != FileObject_1.name; });
930
+ this.deletedFiles.push(DeletedItem);
931
+ this.multipleFileUploadModel.RemovedFiles.push(DeletedItem.ID_GUID);
915
932
  }
916
933
  else {
917
934
  var FileObject_2 = item.file.rawFile;
918
- var deletedList = this.multipleFileUploadModel.RemovedFiles.filter(function (Object) { return Object.FileName == FileObject_2.name; });
935
+ var deletedList = this.deletedFiles.filter(function (Object) { return Object.NameWithExtension == FileObject_2.name; });
919
936
  if (deletedList.length == 0 || deletedList == undefined) {
920
- var DeletedItemId = this.options.Value.ExistingFiles.filter(function (Object) { return Object.FileName == FileObject_2.name; })[0];
921
- this.options.Value.ExistingFiles = this.options.Value.ExistingFiles.filter(function (Object) { return Object.FileName != FileObject_2.name; });
922
- this.multipleFileUploadModel.RemovedFiles.push(DeletedItemId);
937
+ var DeletedItem = this.multipleFileUploadModel.ExistingFiles.filter(function (Object) { return Object.NameWithExtension == FileObject_2.name; })[0];
938
+ this.multipleFileUploadModel.ExistingFiles = this.multipleFileUploadModel.ExistingFiles.filter(function (Object) { return Object.NameWithExtension != FileObject_2.name; });
939
+ this.deletedFiles.push(DeletedItem);
940
+ this.multipleFileUploadModel.RemovedFiles.push(DeletedItem.ID_GUID);
923
941
  }
924
942
  }
925
943
  }
926
944
  }
927
945
  else {
946
+ this.deletedFiles = [];
928
947
  this.multipleFileUploadModel.RemovedFiles = [];
929
948
  }
930
- var ItemList = this.group.get(this.options.Name).value.UploadedFiles;
931
- ItemList = ItemList.filter(function (Object) { return Object.FileName != item._file.name; });
932
- this.multipleFileUploadModel.UploadedFiles = ItemList;
933
- if ((ItemList == null || ItemList == []) && this.options.IsRequired) {
949
+ this.multipleFileUploadModel.UploadedFiles = this.multipleFileUploadModel.UploadedFiles.filter(function (Object) { return Object.NameWithExtension != item._file.name; });
950
+ if ((this.multipleFileUploadModel.UploadedFiles == null || this.multipleFileUploadModel.UploadedFiles == []) && this.options.IsRequired) {
934
951
  this.fileUploadFormControl.markAsTouched();
935
952
  this.fileUploadFormControl.invalid;
936
953
  }
@@ -944,7 +961,7 @@
944
961
  FileUploadComponent.decorators = [
945
962
  { type: i0.Component, args: [{
946
963
  selector: 'BBSF-FileUplaod',
947
- template: "\r\n<div class=\"b-control b-fileupload\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"col-form-label col-sm-12 mb-2\" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n \r\n <ejs-tooltip id=\"tooltip\" content='{{ValidationMessage}}' tipPointerPosition='Middle'\r\n *ngIf=\"(ValidationMessage!=null&&ValidationMessage!='')\">\r\n <i class=\"fa fa-info-circle\" data-plugin=\"tooltip\" data-html=\"true\">\r\n </i>\r\n </ejs-tooltip>\r\n \r\n \r\n </label>\r\n \r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n <div>\r\n \r\n <div ng2FileDrop *ngIf=\"(options.IsDropZone)&&(!((options.IsMultipleFile==false)&&(uploader.queue.length)>0))\" \r\n [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\" (onFileDrop)=\"onFileChange()\"\r\n (fileOver)=\"fileOverAnother($event)\" [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"well my-drop-zoneform-control bnsights-control {{options.ExtraClasses}}\"\r\n (change)=\"onFileChange()\" id=\"{{options.Name}}\" multiple=\"{{options.IsMultipleFile?'multiple':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\" formControlName=\"{{options.Name}}\"\r\n id=\"options.Name\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n \r\n \r\n <div class=\"dragndrop text-center\">\r\n <p class=\"drag-icon mb-3\">\r\n <i class=\"fas fa-cloud-download-alt\"></i> \r\n </p>\r\n <p>Drag and Drop File Here </p>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"(!options.IsDropZone)&&!((uploader.queue.length>0)&&(!options.IsMultipleFile))\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm file-fake-input mb-3\" (click)=\"fileInput.click();\">\r\n <i class=\"icon fa fa-cloud-upload-alt\" ></i>\r\n Upload\r\n </button>\r\n <input ng2FileSelect [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"fileSelector customFileUploadPlacment hidden v-required-multiplefiles d-none\" id=\"file\"\r\n multiple=\"{{options.IsMultipleFile?'multiple':''}}\" name=\"file\" type=\"file\" value=\"\"\r\n autocomplete=\"off\" (change)=\"onFileChange()\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n id=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\"\r\n formControlName=\"{{options.Name}}\" id=\"options.Name\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n </div>\r\n \r\n </div>\r\n \r\n <div *ngFor=\"let item of uploader.queue\">\r\n <div class=\"fileInfoContainer ui-file btn-group mb-3\" >\r\n <button type=\"button\"class=\"download-link btn btn-light btn-sm\">\r\n <span>\r\n <i class=\"icon fa fa-download\"></i>\r\n <span class=\"upload-file-info\">{{ item?.file?.name }}</span>\r\n </span>\r\n </button>\r\n <span class=\"removeUIFile remove-link btn btn-xs btn-danger d-flex align-items-center justify-content-center\"\r\n (click)=\"item.remove();removeFromControlValue(item)\">\r\n <i class=\"fa fa-times px-0\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n \r\n \r\n <div class=\"text-danger Required-text\" *ngIf=\"(fileUploadFormControl.invalid && fileUploadFormControl.touched)\">\r\n {{getErrorValidation(fileUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n \r\n \r\n \r\n <div class=\"col-md-9 col-sm-9\">\r\n \r\n <div><label>{{options.LabelDescription}}\r\n </label></div>\r\n \r\n \r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n</div>\r\n",
964
+ template: "\r\n<div class=\"b-control b-fileupload\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"col-form-label col-sm-12 mb-2\" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n\r\n <ejs-tooltip id=\"tooltip\" content='{{ValidationMessage}}' tipPointerPosition='Middle'\r\n *ngIf=\"(ValidationMessage!=null&&ValidationMessage!='')\">\r\n <i class=\"fa fa-info-circle\" data-plugin=\"tooltip\" data-html=\"true\">\r\n </i>\r\n </ejs-tooltip>\r\n\r\n\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <div>\r\n\r\n <div ng2FileDrop *ngIf=\"(options.IsDropZone)&&(!((options.IsMultipleFile==false)&&(uploader.queue.length)>0))\"\r\n [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\" (onFileDrop)=\"onFileChange()\"\r\n (fileOver)=\"fileOverAnother($event)\" [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"well my-drop-zoneform-control bnsights-control {{options.ExtraClasses}}\"\r\n (change)=\"onFileChange()\" id=\"{{options.Name}}\" multiple=\"{{options.IsMultipleFile?'multiple':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\" formControlName=\"{{options.Name}}\"\r\n id=\"options.Name\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n\r\n\r\n <div class=\"dragndrop text-center\">\r\n <p class=\"drag-icon mb-3\">\r\n <i class=\"fas fa-cloud-download-alt\"></i>\r\n </p>\r\n <p>\r\n {{UtilityService.getResourceValue(\"DragAndDropHere\")}}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(!options.IsDropZone)&&!((uploader.queue.length>0)&&(!options.IsMultipleFile))\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm file-fake-input mb-3\" (click)=\"fileInput.click();\">\r\n <i class=\"icon fa fa-cloud-upload-alt\"></i>\r\n {{UtilityService.getResourceValue(\"Upload\")}}\r\n </button>\r\n <input ng2FileSelect [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"fileSelector customFileUploadPlacment hidden v-required-multiplefiles d-none\" id=\"file\"\r\n multiple=\"{{options.IsMultipleFile?'multiple':''}}\" name=\"file\" type=\"file\" value=\"\"\r\n autocomplete=\"off\" (change)=\"onFileChange()\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n id=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\"\r\n formControlName=\"{{options.Name}}\" id=\"options.Name\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n </div>\r\n\r\n </div>\r\n\r\n <div *ngFor=\"let item of uploader.queue\">\r\n <div class=\"fileInfoContainer ui-file btn-group mb-3\">\r\n <a href=\"{{ item?._file?.url}}\" download>\r\n <button type=\"button\" class=\"download-link btn btn-light btn-sm\">\r\n <span>\r\n <i class=\"icon fa fa-download\"></i>\r\n <span class=\"upload-file-info\">{{ item?.file?.name }}</span>\r\n </span>\r\n </button>\r\n </a>\r\n <span class=\"removeUIFile remove-link btn btn-xs btn-danger d-flex align-items-center justify-content-center\"\r\n (click)=\"item.remove();removeFromControlValue(item)\">\r\n <i class=\"fa fa-times px-0\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"text-danger Required-text\" *ngIf=\"(fileUploadFormControl.invalid && fileUploadFormControl.touched)\">\r\n {{getErrorValidation(fileUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n\r\n\r\n <div class=\"col-md-9 col-sm-9\">\r\n\r\n <div>\r\n <label>\r\n {{options.LabelDescription}}\r\n </label>\r\n </div>\r\n\r\n\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
948
965
  styles: [".e-tip-content{background-color:#afafaf;color:#fff;padding-left:10px;padding-right:10px;padding-top:2px}.my-drop-zone{border:dotted 3px lightgray}.nv-file-over{border:dotted 3px red}.another-file-over-class{border:dotted 3px green}html,body{height:100%}\n"]
949
966
  },] }
950
967
  ];
@@ -1357,7 +1374,7 @@
1357
1374
  this.CurrentLanguage = translate.currentLang != undefined ? translate.currentLang : translate.defaultLang;
1358
1375
  }
1359
1376
  MultiLingualTextBoxComponent.prototype.getCustomErrorsMassages = function () {
1360
- this.ArabicLetterOnly = this.UtilityService.getResourceValue("VAL_ArabicIsRequiredAndOnly50CharactersEnglish");
1377
+ this.ArabicLetterOnly = this.UtilityService.getResourceValue("ArabicIsRequiredAndOnly50CharactersEnglish");
1361
1378
  this.EnglishLetterOnly = this.UtilityService.getResourceValue("EnglishLetterOnly");
1362
1379
  };
1363
1380
  MultiLingualTextBoxComponent.prototype.ngOnInit = function () {
@@ -1417,7 +1434,7 @@
1417
1434
  }
1418
1435
  this.showInputUsingLanguageMode();
1419
1436
  this.ArabicValidationRules.push(forms.Validators.compose([
1420
- this.controlUtility.arabicValidator({ ArabicLetterOnly: this.ArabicLetterOnly }),
1437
+ this.controlUtility.arabicValidator({ ArabicIsRequiredAndOnly50CharactersEnglish: this.ArabicLetterOnly }),
1421
1438
  ]));
1422
1439
  this.EnglishValidationRules.push(forms.Validators.compose([
1423
1440
  this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
@@ -1682,7 +1699,7 @@
1682
1699
  MultiLingualTextBoxComponent.decorators = [
1683
1700
  { type: i0.Component, args: [{
1684
1701
  selector: 'BBSF-MultiLingualTextBox',
1685
- template: "<div class=\"b-control b-multilangual-textbox\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguagegroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishTextBox\">\r\n <label class=\"b-label col-form-label col-sm-12\"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group align-items-center\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputEnglish>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showEnglishCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"EnglishFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextBox\">\r\n <label class=\"b-label col-form-label col-sm-12\"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group align-items-center\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showArabicCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"ArabicFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
1702
+ template: "<div class=\"b-control b-multilangual-textbox\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguagegroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishTextBox\">\r\n <label class=\"b-label col-form-label col-sm-12\"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group align-items-center\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\"\r\n #userinputEnglish>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showEnglishCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"EnglishFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextBox\">\r\n <label class=\"b-label col-form-label col-sm-12\"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group align-items-center\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showArabicCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"ArabicFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
1686
1703
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
1687
1704
  },] }
1688
1705
  ];
@@ -2733,9 +2750,6 @@
2733
2750
  this.SlideValue = this.options.Value == undefined ? false : this.options.Value;
2734
2751
  if (!this.options.ViewType)
2735
2752
  this.options.ViewType = this.globalSettings.ViewType;
2736
- if (this.options.IsDisabled) {
2737
- this.ToggleslideFormControl.disable();
2738
- }
2739
2753
  if (this.options.LabelKey != null && this.options.LabelKey != "")
2740
2754
  this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
2741
2755
  };
@@ -2773,7 +2787,7 @@
2773
2787
  ToggleslideComponent.decorators = [
2774
2788
  { type: i0.Component, args: [{
2775
2789
  selector: 'BBSF-Toggleslide',
2776
- template: "<div class=\"b-control b-toggle-slide\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n </label>\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\"\r\n (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n \r\n </div>\r\n</div>\r\n",
2790
+ template: "<div class=\"b-control b-toggle-slide\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n </label>\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" disabled=\"{{options.IsDisabled}}\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n \r\n </div>\r\n</div>\r\n",
2777
2791
  styles: [".mat-slide-toggle{padding-left:10px}.mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#e3f4fe}.mat-slide-toggle-thumb-container{width:25px;height:25px;top:1px;left:-2px}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.mat-slide-toggle-thumb{height:25px;width:25px;border-radius:50%}.mat-slide-toggle.mat-checked .mat-ripple-element{background-color:#009ef7}.mat-slide-toggle-bar{width:55px;height:30px;border-radius:3.25rem}\n"]
2778
2792
  },] }
2779
2793
  ];
@@ -4434,6 +4448,8 @@
4434
4448
  this.options.ViewType = this.globalSettings.ViewType;
4435
4449
  if (this.options.LabelKey != null && this.options.LabelKey != "")
4436
4450
  this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
4451
+ if (!this.options.NoResultText)
4452
+ this.options.NoResultText = this.UtilityService.getResourceValue("NoItemsMatch");
4437
4453
  // this.group.addControl(this.options.Name, new FormControl(''));
4438
4454
  // this.TagInputControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
4439
4455
  this.TagsFormControl.setValue(this.options.Value);
@@ -4490,6 +4506,8 @@
4490
4506
  };
4491
4507
  TagsInputComponent.prototype.searchFunctionFactory = function (Text) {
4492
4508
  var Url = this.options.ActionURL + "?" + this.options.QueryParamName + "=" + Text + "&" + this.options.SelectedItemsParamName + "=" + this.SelectedId;
4509
+ if (this.options.ExtraFilters)
4510
+ Url = Url + ("&" + this.options.ExtraFilters);
4493
4511
  var requestOptionsModel = new bbsfUtilities.RequestOptionsModel();
4494
4512
  requestOptionsModel.disableBlockUI = true;
4495
4513
  requestOptionsModel.disableSuccessNotification = true;
@@ -4782,6 +4800,7 @@
4782
4800
  _this.items = [];
4783
4801
  _this.Pages = Math.ceil((_this.totalRow / _this.options.PageSize));
4784
4802
  _this.items = Array(_this.totalRow);
4803
+ _this.setText(_this.Pages, _this.totalRow);
4785
4804
  }
4786
4805
  }, function (error) {
4787
4806
  if (error.status == 401)
@@ -4805,12 +4824,38 @@
4805
4824
  }
4806
4825
  return originalArray;
4807
4826
  };
4827
+ PagingComponent.prototype.setText = function (pagesNumber, itemsNumber) {
4828
+ if (this.utilityService.isCurrentLanguageArabic()) {
4829
+ //Set pages text
4830
+ if (pagesNumber < 3 || pagesNumber > 10)
4831
+ this.pagesText = this.utilityService.getResourceValue("Page");
4832
+ else
4833
+ this.pagesText = this.utilityService.getResourceValue("Pages");
4834
+ //Set items text
4835
+ if (itemsNumber < 3 || itemsNumber > 10)
4836
+ this.itemsText = this.utilityService.getResourceValue("Item");
4837
+ else
4838
+ this.itemsText = this.utilityService.getResourceValue("Items");
4839
+ }
4840
+ else {
4841
+ //Set pages text
4842
+ if (pagesNumber > 1)
4843
+ this.pagesText = this.utilityService.getResourceValue("Pages");
4844
+ else
4845
+ this.pagesText = this.utilityService.getResourceValue("Page");
4846
+ //Set items text
4847
+ if (itemsNumber > 1)
4848
+ this.itemsText = this.utilityService.getResourceValue("Items");
4849
+ else
4850
+ this.itemsText = this.utilityService.getResourceValue("Item");
4851
+ }
4852
+ };
4808
4853
  return PagingComponent;
4809
4854
  }());
4810
4855
  PagingComponent.decorators = [
4811
4856
  { type: i0.Component, args: [{
4812
4857
  selector: 'BBSF-Paging',
4813
- template: "<div class=\"b-control b-paging\" *ngIf=\"(result.length > 0)\">\r\n <div class=\"d-flex justify-content-between align-items-center\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <div class=\"b-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <div class=\"b-pages d-flex\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\" >\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"b-items ml-3\">\r\n <strong>{{totalRow}}</strong> {{utilityService.getResourceValue(\"ItemsIn\")}} <strong> {{Pages}}</strong> {{utilityService.getResourceValue(\"Pages\")}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row\" style=\"align-self:center; align-items: center; text-align: center;\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-info\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n",
4858
+ template: "<div class=\"b-control b-paging\" *ngIf=\"(result.length > 0)\">\r\n <div class=\"d-flex justify-content-between align-items-center\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <div class=\"b-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <div class=\"b-pages d-flex\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\" >\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"b-items ml-3\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"row\" style=\"align-self:center; align-items: center; text-align: center;\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-info\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n",
4814
4859
  styles: [".ngx-pager-container{text-align:center;padding:25px 0 0}.ngx-pager-container li{display:inline-block;margin:0 4px}.ngx-pager-container li a{display:block;width:26px;height:26px;border:1px solid #707070;text-align:center;color:#3e4e59;font-size:14px;line-height:24px;border-radius:5px;text-decoration:none}.ngx-pager-container li a:hover{color:#fff;background:#0a0e03}.ngx-pager-container li.invisible{display:none}.ngx-pager-container li.active{background:#0a0e03;border-radius:5px}.ngx-pager-container li.active a{border:none;color:#fff}\n"]
4815
4860
  },] }
4816
4861
  ];
@@ -5224,7 +5269,7 @@
5224
5269
  this.PasswordComplexityHasSmallLetter = this.UtilityService.getResourceValue("PasswordComplexityHasSmallLetter");
5225
5270
  this.PasswordComplexityHasSpecialLetter = this.UtilityService.getResourceValue("PasswordComplexityHasSpecialLetter");
5226
5271
  this.MaxWordCountValidationKey = this.UtilityService.getResourceValue("MaxWordCountValidationKey");
5227
- this.ArabicLetterOnly = this.UtilityService.getResourceValue("ArabicLetterOnly");
5272
+ this.ArabicLetterOnly = this.UtilityService.getResourceValue("ArabicIsRequiredAndOnly50CharactersEnglish");
5228
5273
  this.EnglishLetterOnly = this.UtilityService.getResourceValue("EnglishLetterOnly");
5229
5274
  };
5230
5275
  TextboxComponent.prototype.onTextChange = function () {
@@ -5797,10 +5842,21 @@
5797
5842
  this.modalService = modalService;
5798
5843
  this.ngbActiveModal = ngbActiveModal;
5799
5844
  this.router = router;
5845
+ this.isChange = null;
5846
+ this.OnChange = new i0.EventEmitter();
5800
5847
  }
5801
5848
  FormComponent.prototype.ngOnInit = function () {
5802
5849
  this.fromName = this.randomString(5);
5803
5850
  };
5851
+ FormComponent.prototype.ngAfterViewInit = function () {
5852
+ var _this = this;
5853
+ this.options.FormGroup.valueChanges.subscribe(function (es) {
5854
+ if (_this.isChange != null)
5855
+ _this.OnChange.emit(_this.isChange);
5856
+ else
5857
+ _this.isChange = true;
5858
+ });
5859
+ };
5804
5860
  FormComponent.prototype.submit = function () {
5805
5861
  var _this = this;
5806
5862
  this.options.FormGroup.markAllAsTouched();
@@ -5877,6 +5933,7 @@
5877
5933
  { type: router.Router }
5878
5934
  ]; };
5879
5935
  FormComponent.propDecorators = {
5936
+ OnChange: [{ type: i0.Output }],
5880
5937
  options: [{ type: i0.Input }]
5881
5938
  };
5882
5939
 
@@ -6186,6 +6243,7 @@
6186
6243
  DataType["CoverPhoto"] = "9CC8C0BB-C670-466F-A632-8632FF5C1296";
6187
6244
  DataType["InnovationLab"] = "4B914ED0-8B36-4E24-B85E-9A04C9F266BE";
6188
6245
  DataType["Country"] = "342AA701-76C7-4E5D-8056-407BFC86F888";
6246
+ DataType["AreaOfFocus"] = "06a4cfb7-216a-4a60-8388-7a859aab90b4";
6189
6247
  })(exports.DataType || (exports.DataType = {}));
6190
6248
 
6191
6249
  exports.ForceDirection = void 0;
@@ -6196,6 +6254,8 @@
6196
6254
 
6197
6255
  var ControlOptionsBase = /** @class */ (function () {
6198
6256
  function ControlOptionsBase() {
6257
+ /** Sets an attribute disable="disabled" */
6258
+ this.IsDisabled = false;
6199
6259
  /** to set type of view if Control is Vertical or Horizontal */
6200
6260
  this.ViewType = null;
6201
6261
  /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */
@@ -6210,6 +6270,8 @@
6210
6270
  var _this = _super.apply(this, __spreadArray([], __read(arguments))) || this;
6211
6271
  /**To set First Day Of Week to DatePicker */
6212
6272
  _this.FirstDayOfWeek = 1;
6273
+ /**To set Hour12Timer to DatePicker is 12 Hour or 24 Hour*/
6274
+ _this.Hour12Timer = true;
6213
6275
  /**To set PickerType to DatePicker is Calendar or Timer Or Both */
6214
6276
  _this.PickerType = exports.PickerType.Calendar;
6215
6277
  /**To set StartView to DatePicker is Year or Month Or Multi-Year */
@@ -6340,8 +6402,8 @@
6340
6402
  var _this = _super.apply(this, __spreadArray([], __read(arguments))) || this;
6341
6403
  /** set Range Number to Textbox with type number with From-Value and To-value*/
6342
6404
  _this.NumberRange = new RangeNumber();
6343
- /**Prevent AutoComplete of textbox*/
6344
- _this.AutoComplete = "off";
6405
+ /**Prevent AutoComplete of textbox default value is "on" available values "on" and "off"*/
6406
+ _this.AutoComplete = "on";
6345
6407
  /** to set Direction of textbox if textbox is Arabic or English */
6346
6408
  _this.ForceDirection = null;
6347
6409
  /** to set Language of textbox if textbox language is Arabic or English */
@@ -7483,6 +7545,8 @@
7483
7545
  _this.IconPositionAR = exports.IconPosition.right;
7484
7546
  /*multi control placement type*/
7485
7547
  _this.MultiControlPlacementType = null;
7548
+ /**Prevent AutoComplete of inputs default value is "on" available values "on" and "off"*/
7549
+ _this.AutoComplete = "on";
7486
7550
  return _this;
7487
7551
  }
7488
7552
  return MultiLingualTextBoxOptions;
@@ -7657,8 +7721,6 @@
7657
7721
  _this.DatasourceItemValue = "key";
7658
7722
  /**Text Of Tag That Will Show In Dropdown */
7659
7723
  _this.DatasourceItemText = "value";
7660
- /**Text Show when none of the given options match the entered text */
7661
- _this.NoResultText = "No Item Matches";
7662
7724
  /**Set Query Param Name By Default It's 'query'*/
7663
7725
  _this.QueryParamName = "query";
7664
7726
  /**Set Query Param Name By Default It's 'query'*/
@@ -8126,7 +8188,7 @@
8126
8188
  FileType["ZIP"] = "application/zip";
8127
8189
  FileType["RAR"] = "application/x-rar-compressed";
8128
8190
  FileType["VIDEO"] = "video/webm,video/ogg,video/mp4,video/quicktime,video/x-msvideo,video/x-ms-wmv";
8129
- FileType["License"] = "application/octet-stream";
8191
+ FileType["License"] = "application/BN";
8130
8192
  FileType["Xml"] = "text/xml";
8131
8193
  FileType["OctetSteam"] = "application/octet-stream";
8132
8194
  FileType["Txt"] = "text/plain";