@bnsights/bbsf-controls 1.0.25 → 1.0.28

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 (41) hide show
  1. package/README.md +7 -18
  2. package/bnsights-bbsf-controls-1.0.28.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +1152 -222
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Directives/template-name.directive.js +18 -0
  7. package/esm2015/lib/Shared/Enums/Enums.js +45 -0
  8. package/esm2015/lib/Shared/Models/RepeaterField.js +3 -0
  9. package/esm2015/lib/Shared/Models/RepeaterOptions.js +10 -0
  10. package/esm2015/lib/Shared/services/render-component-service.service.js +19 -0
  11. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +12 -12
  12. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +2 -2
  13. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +8 -3
  14. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +2 -2
  15. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +8 -5
  16. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +3 -3
  17. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +3 -3
  18. package/esm2015/lib/controls/Paging/Paging.component.js +2 -2
  19. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +112 -0
  20. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +704 -0
  21. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +20 -0
  22. package/esm2015/lib/controls/TextArea/TextArea.component.js +2 -2
  23. package/esm2015/lib/controls/TextBox/TextBox.component.js +2 -2
  24. package/esm2015/lib/controls/bbsf-controls.module.js +17 -9
  25. package/esm2015/public-api.js +9 -1
  26. package/fesm2015/bnsights-bbsf-controls.js +1114 -208
  27. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  28. package/lib/Shared/Directives/template-name.directive.d.ts +6 -0
  29. package/lib/Shared/Enums/Enums.d.ts +40 -0
  30. package/lib/Shared/Models/RepeaterField.d.ts +5 -0
  31. package/lib/Shared/Models/RepeaterOptions.d.ts +13 -0
  32. package/lib/Shared/services/render-component-service.service.d.ts +7 -0
  33. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -1
  34. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +1 -1
  35. package/lib/controls/Repeater/repeater/repeater.component.d.ts +25 -0
  36. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +17 -0
  37. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +8 -0
  38. package/package.json +2 -2
  39. package/public-api.d.ts +8 -0
  40. package/src/lib/assets/Style.css +0 -9
  41. package/bnsights-bbsf-controls-1.0.25.tgz +0 -0
@@ -4,7 +4,7 @@ import timeGridPlugin from '@fullcalendar/timegrid';
4
4
  import listPlugin from '@fullcalendar/list';
5
5
  import interactionPlugin from '@fullcalendar/interaction';
6
6
  import * as i0 from '@angular/core';
7
- import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
7
+ import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, Directive, TemplateRef, ViewChildren, ComponentFactoryResolver, ViewContainerRef, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
8
8
  import { BlockUIModule } from 'ng-block-ui';
9
9
  import { ControlContainer, Validators, FormControl, FormGroupDirective, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
10
10
  import { Http, HttpModule } from '@angular/http';
@@ -18,10 +18,10 @@ import { SearchCountryField, NgxIntlTelInputModule } from 'ngx-intl-tel-input';
18
18
  import { UtilityService, ControlValidationService, BBSFTranslateService, RequestOptionsModel, RequestHandlerService, BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';
19
19
  import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
20
20
  import { Subject, Observable, noop, of } from 'rxjs';
21
+ import { DateTimeAdapter, OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
21
22
  import { FileUploader, FileLikeObject, FileUploadModule } from 'ng2-file-upload';
22
23
  import { __decorate, __awaiter } from 'tslib';
23
24
  import { Expose, plainToClass } from 'class-transformer';
24
- import { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
25
25
  import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
26
26
  import { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';
27
27
  import { NgxSummernoteModule } from 'ngx-summernote';
@@ -96,22 +96,22 @@ class ErrorMassageValidation {
96
96
  result = this.utilityService.getResourceValue("NumberValidationKey");
97
97
  break;
98
98
  case "maxlength":
99
- result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + error.value.requiredLength;
99
+ result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + " " + error.value.requiredLength;
100
100
  break;
101
101
  case "minlength":
102
- result = this.utilityService.getResourceValue("MinLenghtValidationKey") + error.value.requiredLength;
102
+ result = this.utilityService.getResourceValue("MinLenghtValidationKey") + " " + error.value.requiredLength;
103
103
  break;
104
104
  case "min":
105
- result = this.utilityService.getResourceValue("MinValueValidationKey") + error.value.min;
105
+ result = this.utilityService.getResourceValue("MinValueValidationKey") + " " + error.value.min;
106
106
  break;
107
107
  case "max":
108
- result = this.utilityService.getResourceValue("MaxValueValidationKey") + error.value.max;
108
+ result = this.utilityService.getResourceValue("MaxValueValidationKey") + " " + error.value.max;
109
109
  break;
110
110
  case "validatePhoneNumber":
111
111
  result = this.utilityService.getResourceValue("PhoneNumberValidationKey");
112
112
  break;
113
113
  case "mask":
114
- result = this.utilityService.getResourceValue("MaskValidationKey") + error.value.requiredMask;
114
+ result = this.utilityService.getResourceValue("MaskValidationKey") + " " + error.value.requiredMask;
115
115
  break;
116
116
  case "PasswordComplexityHasNumber":
117
117
  result = this.utilityService.getResourceValue("PasswordComplexityHasNumber");
@@ -132,25 +132,25 @@ class ErrorMassageValidation {
132
132
  result = this.utilityService.getResourceValue("PasswordComplexityHasSpecialLetter");
133
133
  break;
134
134
  case "MaxWordCountValidationKey":
135
- result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + error.value;
135
+ result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + " " + error.value;
136
136
  break;
137
137
  case "NewSelectionValidationKey":
138
138
  result = this.utilityService.getResourceValue("NewSelectionValidationKey");
139
139
  break;
140
140
  case "MaxFileCountValidationKey":
141
- result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + error.value;
141
+ result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + " " + error.value;
142
142
  break;
143
143
  case "MinFileCountValidationKey":
144
- result = this.utilityService.getResourceValue("MinFileCountValidationKey") + error.value;
144
+ result = this.utilityService.getResourceValue("MinFileCountValidationKey") + " " + error.value;
145
145
  break;
146
146
  case "MaxSizeForAllFilesInMB":
147
- result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + error.value;
147
+ result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + " " + error.value;
148
148
  break;
149
149
  case "FileMaxSizeInMB":
150
- result = this.utilityService.getResourceValue("FileMaxSizeInMB") + error.value;
150
+ result = this.utilityService.getResourceValue("FileMaxSizeInMB") + " " + error.value;
151
151
  break;
152
152
  case "ToolTipTypeError":
153
- result = this.utilityService.getResourceValue("ToolTipTypeError") + error.value;
153
+ result = this.utilityService.getResourceValue("ToolTipTypeError") + " " + error.value;
154
154
  break;
155
155
  default:
156
156
  break;
@@ -341,7 +341,7 @@ OnPagingFiltersChangeService.decorators = [
341
341
 
342
342
  class DateInputComponent {
343
343
  // tslint:disable-next-line: max-line-length
344
- constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService) {
344
+ constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService, dateTimeAdapter) {
345
345
  this.datepipe = datepipe;
346
346
  this.onChangeService = onChangeService;
347
347
  this.ErrorHandler = ErrorHandler;
@@ -351,6 +351,7 @@ class DateInputComponent {
351
351
  this.UtilityService = UtilityService;
352
352
  this.translate = translate;
353
353
  this.controlValidationService = controlValidationService;
354
+ this.dateTimeAdapter = dateTimeAdapter;
354
355
  this.OnChange = new EventEmitter();
355
356
  this.markAllAsTouched = false;
356
357
  this.validationRules = [];
@@ -381,6 +382,8 @@ class DateInputComponent {
381
382
  DateInputComponent.controlContainerstatic = this.controlContainer;
382
383
  }
383
384
  ngOnInit() {
385
+ // Update the DateTimeAdapter Language with the current thread langauge
386
+ this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
384
387
  this.controlValidationService.isCreatedBefor = false;
385
388
  this.group.addControl(this.options.Name, new FormControl(''));
386
389
  this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
@@ -473,7 +476,8 @@ DateInputComponent.ctorParameters = () => [
473
476
  { type: FormGroupDirective },
474
477
  { type: UtilityService },
475
478
  { type: BBSFTranslateService },
476
- { type: ControlValidationService }
479
+ { type: ControlValidationService },
480
+ { type: DateTimeAdapter }
477
481
  ];
478
482
  DateInputComponent.propDecorators = {
479
483
  group: [{ type: Input }],
@@ -958,7 +962,7 @@ class MultiLingualTextBoxComponent {
958
962
  }
959
963
  this.showInputUsingLanguageMode();
960
964
  this.ArabicValidationRules.push(Validators.compose([
961
- this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
965
+ this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
962
966
  ]));
963
967
  this.EnglishValidationRules.push(Validators.compose([
964
968
  this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
@@ -1154,7 +1158,7 @@ MultiLingualTextBoxComponent.controlContainerstatic = null;
1154
1158
  MultiLingualTextBoxComponent.decorators = [
1155
1159
  { type: Component, args: [{
1156
1160
  selector: 'BBSF-MultiLingualTextBox',
1157
- 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)=\"showEnglishWordCount(true)\" (focusout)=\"showEnglishWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\"\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\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 class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} words</div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n\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 \r\n\r\n <!-- <div *ngIf=\"EnglishFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n\r\n <div class=\"row\" *ngIf=\"ShowArabicTextBox\">\r\n\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)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n\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)?'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)=\"showArabicWordCount(true)\" (focusout)=\"showArabicWordCount(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\"\r\n 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 class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n\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 \r\n \r\n\r\n <!-- <div *ngIf=\"ArabicFormControl.valid\">{{resetError()}}</div> -->\r\n \r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n\r\n </div>\r\n \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
1161
+ 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)=\"showEnglishWordCount(true)\" (focusout)=\"showEnglishWordCount(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\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)=\"showArabicWordCount(true)\" (focusout)=\"showArabicWordCount(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 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",
1158
1162
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
1159
1163
  },] }
1160
1164
  ];
@@ -1300,7 +1304,7 @@ TextAreaComponent.controlContainerstatic = null;
1300
1304
  TextAreaComponent.decorators = [
1301
1305
  { type: Component, args: [{
1302
1306
  selector: 'BBSF-TextArea',
1303
- template: "<div class=\"b-control b-textarea\">\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 *ngIf=\"!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)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"TextAreaFormControl.invalid && TextAreaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" rows=\"{{options.Rows}}\" (keyup)=\"onTextChange()\" cols=\"{{options.Cols}}\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc text-dark\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- <div *ngIf=\"TextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
1307
+ template: "<div class=\"b-control b-textarea\">\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 *ngIf=\"!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)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"TextAreaFormControl.invalid && TextAreaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" rows=\"{{options.Rows}}\" (keyup)=\"onTextChange()\" cols=\"{{options.Cols}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc text-dark\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- <div *ngIf=\"TextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
1304
1308
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
1305
1309
  },] }
1306
1310
  ];
@@ -1434,7 +1438,7 @@ class MultiLingualTextAreaComponent {
1434
1438
  }
1435
1439
  this.showInputUsingLanguageMode();
1436
1440
  this.ArabicValidationRules.push(Validators.compose([
1437
- this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
1441
+ this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
1438
1442
  ]));
1439
1443
  this.EnglishValidationRules.push(Validators.compose([
1440
1444
  this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
@@ -1620,7 +1624,7 @@ MultiLingualTextAreaComponent.controlContainerstatic = null;
1620
1624
  MultiLingualTextAreaComponent.decorators = [
1621
1625
  { type: Component, args: [{
1622
1626
  selector: 'BBSF-MultiLingualTextArea',
1623
- template: "<div class=\"b-control b-multilangual-textarea\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEngishTextArea\">\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+\"in English\"}}\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\">\r\n <textarea class=\"form-control bnsights-control\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"showEnglishWordCount(true)\" (focusout)=\"showEnglishWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.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 #userinputTextAreaEnglish>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n\r\n </div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\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\r\n <!-- <div *ngIf=\"EnglishTextAreaFormControl.valid\">{{resetError()}}</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 </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextArea\">\r\n\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.IsHideArabicLable\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\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 <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"showArabicWordCount(true)\" (focusout)=\"showArabicWordCount(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" maxlength=\"{{options.MaxLength}}\"\r\n minlength=\"{{options.MinLength}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}Words</div>\r\n\r\n </div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\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\r\n <!-- <div *ngIf=\"ArabicTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
1627
+ template: "<div class=\"b-control b-multilangual-textarea\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEngishTextArea\">\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+\"in English\"}}\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\">\r\n <textarea class=\"form-control bnsights-control\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"showEnglishWordCount(true)\" (focusout)=\"showEnglishWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n \r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\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\r\n <!-- <div *ngIf=\"EnglishTextAreaFormControl.valid\">{{resetError()}}</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 </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextArea\">\r\n\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.IsHideArabicLable\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\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 <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"showArabicWordCount(true)\" (focusout)=\"showArabicWordCount(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\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\"\r\n *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\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=\"ArabicTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
1624
1628
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
1625
1629
  },] }
1626
1630
  ];
@@ -1894,7 +1898,7 @@ DropdownListComponent.decorators = [
1894
1898
  { type: Component, args: [{
1895
1899
  // tslint:disable-next-line: component-selector
1896
1900
  selector: 'BBSF-DropdownList',
1897
- template: "<div class=\"b-control b-dropdown-list\">\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 <ng-select *ngIf=\"options.DisableBootstrapSelect==false\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"'No data found.'\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [searchable]=\"true\" [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n [selectableGroup]=\"true\" [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\"\r\n [(ngModel)]=\"SelectedList\" (change)=\"onItemSelect($event[options.ItemTempletkey])\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\"ks-cboxtags\">\r\n <input id=\"item-{{index}}\" type=\"checkbox\" [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\"\r\n class=\" \" /> <label class=\"ng-option-label mb-0\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"ng-option-label mb-0\" id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <select *ngIf=\"options.DisableBootstrapSelect\" class=\"form-control bnsights-control\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" (change)=\"onItemSelect($event.target.value)\"\r\n [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--select--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <!-- <div *ngIf=\"DropdownListFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n\r\n\r\n </div>\r\n </div>\r\n</div>",
1901
+ template: "<div class=\"b-control b-dropdown-list\">\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 <ng-select *ngIf=\"options.DisableBootstrapSelect==false\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"'No data found.'\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n [selectableGroup]=\"true\" [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\"\r\n [(ngModel)]=\"options.SelectedItems\" (change)=\"onItemSelect($event[options.ItemTempletkey])\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\"ks-cboxtags\">\r\n <input id=\"item-{{index}}\" type=\"checkbox\" [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\"\r\n class=\" \" /> <label class=\"ng-option-label mb-0\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"ng-option-label mb-0\" id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n\r\n </ng-select>\r\n\r\n <select *ngIf=\"options.DisableBootstrapSelect\" class=\"form-control bnsights-control\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" (change)=\"onItemSelect($event.target.value)\"\r\n [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--select--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <!-- <div *ngIf=\"DropdownListFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
1898
1902
  styles: [".cuppa-dropdown{background-color:#fff}.arrow-up,.arrow-down{border-left:none!important;border-right:none!important}.dropdown-list{padding-top:0!important}.c-token{background-color:#6495ed}.pure-checkbox .selected-item{background-color:#6495ed;color:#fff}\n"]
1899
1903
  },] }
1900
1904
  ];
@@ -2783,7 +2787,7 @@ class ImageUploaderComponent {
2783
2787
  this.FileLikeObject = new FileLikeObject({
2784
2788
  name: element.FileName,
2785
2789
  size: element.FileSizeInMB * 1000 * 1000,
2786
- type: element.FileType
2790
+ type: element.FileType,
2787
2791
  });
2788
2792
  this.uploader.addToQueue([this.FileLikeObject]);
2789
2793
  }
@@ -2798,15 +2802,17 @@ class ImageUploaderComponent {
2798
2802
  const TypeToolTipe = element.split('/')[1];
2799
2803
  this.ToolTipTypeArray.push(TypeToolTipe);
2800
2804
  }
2801
- this.ValidationMessage = this.ValidationMessage + ` Allowed extenstions (${this.ToolTipTypeArray}) `;
2805
+ this.ValidationMessage = this.ValidationMessage + this.UtilityService.getResourceValue("AllowedTypes") + ` (${this.ToolTipTypeArray}) `;
2802
2806
  }
2803
2807
  if (this.options.FileMaxSizeInMB > 0) {
2804
- this.ValidationMessage = this.ValidationMessage + ` <br />Max File Size ${this.options.FileMaxSizeInMB} MB`;
2808
+ this.ValidationMessage = this.ValidationMessage + ` <br /> ${this.UtilityService.getResourceValue("FileMaxSizeInMB")} ${this.options.FileMaxSizeInMB}`;
2805
2809
  }
2806
2810
  if (this.options.FileUploadAcceptsTypes != null && this.options.FileUploadAcceptsTypes.length > 0) {
2807
2811
  }
2808
2812
  this.group.addControl(this.options.Name, new FormControl(''));
2809
2813
  this.ImageUploadFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
2814
+ if (this.options.Value != null)
2815
+ this.group.get(this.options.Name).setValue(this.options.Value);
2810
2816
  if (this.options.LabelKey != null && this.options.LabelKey != "")
2811
2817
  this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
2812
2818
  if (this.options.CustomValidation.length > 0) {
@@ -2949,6 +2955,7 @@ class ImageUploaderComponent {
2949
2955
  FileType: this.EventFile.type,
2950
2956
  FileBase64: reader.result.toString().split(',')[1],
2951
2957
  FileSizeInMB: ((BlobFile.size / 1000) / 1000),
2958
+ NameWithExtension: this.EventFile.name
2952
2959
  };
2953
2960
  BlobFile.name = this.EventFile.name;
2954
2961
  FilesArray.push(FileObject);
@@ -2975,7 +2982,7 @@ ImageUploaderComponent.controlContainerstatic = null;
2975
2982
  ImageUploaderComponent.decorators = [
2976
2983
  { type: Component, args: [{
2977
2984
  selector: 'BBSF-ImageUpload',
2978
- template: "<div class=\"b-control b-image-upload\">\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'\" [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n\r\n <ejs-tooltip id=\"tooltip\" content='{{ValidationMessage}}' tipPointerPosition='Middle'>\r\n <i class=\"fa fa-info-circle\" data-plugin=\"tooltip\" data-html=\"true\">\r\n </i>\r\n </ejs-tooltip>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <div *ngIf=\"options.AllowDropZone\" style=\"max-width:200px !important; max-height: 200px !important;\" class=\"d-inline-flex h-auto w-auto overflow-hidden m-0 {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\" aria-describedby=\"email-error\" aria-invalid=\"true\" ngDefaultControl formControlName=\"{{options.Name}}\" [maxFileSize]=\"options.FileMaxSizeInMB\"\r\n id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"h-100 m-0\" style=\"max-width: 200px !important;\">\r\n <div class=\"h-100\">\r\n <img [src]=\"ImageSource\" class=\"h-100 w-100\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n\r\n\r\n <ngx-dropzone-image-preview style=\"max-width:200px !important; max-height: 200px !important;\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\" class=\"b-img-preview w-100 h-100 m-0\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n\r\n <div class=\"ImageUploadClassSelector\" *ngIf=\"!options.AllowDropZone\" >\r\n <ngx-dropzone-label class=\"h-100 m-0\" *ngIf=\"files.length==0\" >\r\n <div style=\"max-width:200px !important; max-height: 200px !important;\" class=\"h-100 file-fake-input\" #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"h-100 w-100\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n\r\n <div style=\"border: none !important; max-width:200px !important; max-height: 200px !important;\" class=\" fileSelector customImageUploadPlacment d-inline-flex h-auto w-auto overflow-hidden m-0 {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\" aria-describedby=\"email-error\" aria-invalid=\"true\" ngDefaultControl formControlName=\"{{options.Name}}\" [maxFileSize]=\"options.FileMaxSizeInMB\"\r\n id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n \r\n\r\n\r\n <ngx-dropzone-image-preview style=\"max-width:200px !important; max-height: 200px !important;\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\" class=\"b-img-preview w-100 h-100 m-0\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n </div>\r\n\r\n\r\n <div id=\"mdlSample\" class=\"modal fade\" role=\"dialog\" style=\"z-index: 11 !important ;\"\r\n [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n Crop Image\r\n </h4>\r\n </div>\r\n <div class=\"modal-body py-5\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div style=\"text-align:center;\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" data-method=\"zoom\" data-option=\"0.1\" title=\"Zoom In\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.zoom(0.1)\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" data-method=\"zoom\" data-option=\"-0.1\" title=\"Zoom Out\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.zoom(-0.1)\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"-10\" data-second-option=\"0\" title=\"Move Left\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(-10, 0)\" aria-describedby=\"tooltip631939\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"10\" data-second-option=\"0\" title=\"Move Right\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(10, 0)\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"0\" data-second-option=\"-10\" title=\"Move Up\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(0, -10)\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"0\" data-second-option=\"10\" title=\"Move Down\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(0, 10)\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" data-method=\"rotate\" data-option=\"-45\" title=\"Rotate Left\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.rotate(-45)\" aria-describedby=\"tooltip236044\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" data-method=\"rotate\" data-option=\"45\" title=\"Rotate Right\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.rotate(45)\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-default\" (click)=\"openModal(false)\">\r\n <i class=\"fa fa-times fa-fw\"></i> Cancel\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-success\">\r\n <i class=\"fa fa-check fa-fw\"></i>\r\n Crop\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </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 </div>\r\n\r\n </div>\r\n</div>\r\n",
2985
+ template: "<div class=\"b-control b-image-upload\">\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'\" [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">* </span>\r\n\r\n <ejs-tooltip id=\"tooltip\" content='{{ValidationMessage}}' tipPointerPosition='Middle'>\r\n <i class=\"fa fa-info-circle\" data-plugin=\"tooltip\" data-html=\"true\">\r\n </i>\r\n </ejs-tooltip>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <div *ngIf=\"options.AllowDropZone\" style=\"max-width:200px !important; max-height: 200px !important;\" class=\"d-inline-flex h-auto w-auto overflow-hidden m-0 {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\" aria-describedby=\"email-error\" aria-invalid=\"true\" ngDefaultControl formControlName=\"{{options.Name}}\" [maxFileSize]=\"options.FileMaxSizeInMB\"\r\n id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"h-100 m-0\" style=\"max-width: 200px !important;\">\r\n <div class=\"h-100\">\r\n <img [src]=\"ImageSource\" class=\"h-100 w-100\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n\r\n\r\n <ngx-dropzone-image-preview style=\"max-width:200px !important; max-height: 200px !important;\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\" class=\"b-img-preview w-100 h-100 m-0\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n\r\n <div class=\"ImageUploadClassSelector\" *ngIf=\"!options.AllowDropZone\">\r\n <ngx-dropzone-label class=\"h-100 m-0\" *ngIf=\"files.length==0\">\r\n <div style=\"max-width:200px !important; max-height: 200px !important;\" class=\"h-100 file-fake-input\" #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"h-100 w-100\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n\r\n <div style=\"border: none !important; max-width:200px !important; max-height: 200px !important;\" class=\" fileSelector customImageUploadPlacment d-inline-flex h-auto w-auto overflow-hidden m-0 {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\" aria-describedby=\"email-error\" aria-invalid=\"true\" ngDefaultControl formControlName=\"{{options.Name}}\" [maxFileSize]=\"options.FileMaxSizeInMB\"\r\n id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n\r\n\r\n\r\n <ngx-dropzone-image-preview style=\"max-width:200px !important; max-height: 200px !important;\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\" class=\"b-img-preview w-100 h-100 m-0\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n </div>\r\n\r\n\r\n <div id=\"mdlSample\" class=\"modal fade\" role=\"dialog\" style=\"z-index: 11 !important ;\"\r\n [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" aria-hidden=\"true\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body py-5\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div style=\"text-align:center;\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" data-method=\"zoom\" data-option=\"0.1\" title=\"Zoom In\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.zoom(0.1)\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" data-method=\"zoom\" data-option=\"-0.1\" title=\"Zoom Out\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.zoom(-0.1)\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"-10\" data-second-option=\"0\" title=\"Move Left\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(-10, 0)\" aria-describedby=\"tooltip631939\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"10\" data-second-option=\"0\" title=\"Move Right\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(10, 0)\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"0\" data-second-option=\"-10\" title=\"Move Up\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(0, -10)\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"0\" data-second-option=\"10\" title=\"Move Down\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(0, 10)\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" data-method=\"rotate\" data-option=\"-45\" title=\"Rotate Left\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.rotate(-45)\" aria-describedby=\"tooltip236044\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" data-method=\"rotate\" data-option=\"45\" title=\"Rotate Right\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.rotate(45)\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-default\" (click)=\"openModal(false)\">\r\n <i class=\"fa fa-times fa-fw\"></i> {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-success\">\r\n <i class=\"fa fa-check fa-fw\"></i>\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\" *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
2979
2986
  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%}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:#0006}.modal-content{position:relative;background-color:#fefefe;margin:auto;padding:0;border:1px solid #888;width:80%;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;-webkit-animation-name:animatetop;-webkit-animation-duration:.4s;animation-name:animatetop;animation-duration:.4s}@keyframes animatetop{0%{top:-300px;opacity:0}to{top:0;opacity:1}}.close{color:#fff;float:right;font-size:28px;font-weight:bold}.ImageUploadClassSelector img{cursor:pointer}.d-inline-flex.h-auto.m-0.overflow-hidden.w-auto.ng-untouched.ng-pristine.ng-valid{border-radius:40px;border-color:#c7c7c7}\n"]
2980
2987
  },] }
2981
2988
  ];
@@ -3998,7 +4005,7 @@ class PagingComponent {
3998
4005
  PagingComponent.decorators = [
3999
4006
  { type: Component, args: [{
4000
4007
  selector: 'BBSF-Paging',
4001
- 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-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\"> Load More </button>\r\n </div>\r\n</div>\r\n",
4008
+ 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",
4002
4009
  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"]
4003
4010
  },] }
4004
4011
  ];
@@ -4439,7 +4446,7 @@ TextboxComponent.controlContainerstatic = null;
4439
4446
  TextboxComponent.decorators = [
4440
4447
  { type: Component, args: [{
4441
4448
  selector: 'BBSF-TextBox',
4442
- template: "<div class=\"b-control b-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\" [ngClass]=\"(options.NoMargin==true)?'':'NoMargin'\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"*ngIf=\"!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)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern!=null&&MaskPattern!=''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern==null||MaskPattern==''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==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 {{options.ExtraClasses}} \"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</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 </div>\r\n </div>\r\n</div>\r\n",
4449
+ template: "<div class=\"b-control b-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\" [ngClass]=\"(options.NoMargin==true)?'':'NoMargin'\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" *ngIf=\"!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)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern!=null&&MaskPattern!=''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern==null||MaskPattern==''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==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 {{options.ExtraClasses}} \"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n",
4443
4450
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
4444
4451
  },] }
4445
4452
  ];
@@ -5061,7 +5068,7 @@ class ConfirmationModalComponent {
5061
5068
  showCancelButton: true,
5062
5069
  confirmButtonColor: this.btnColor,
5063
5070
  cancelButtonColor: '#f5f8fa',
5064
- cancelButtonText: this.utilityService.getResourceValue("Cancel"),
5071
+ cancelButtonText: this.utilityService.getResourceValue("CancelLabel"),
5065
5072
  confirmButtonText: this.options.SubmitButtonText,
5066
5073
  showCloseButton: true,
5067
5074
  }).then((result) => {
@@ -5148,6 +5155,1060 @@ ConfirmationModalComponent.propDecorators = {
5148
5155
  confirmationModal: [{ type: ViewChild, args: ['confirmationModal', { static: false },] }]
5149
5156
  };
5150
5157
 
5158
+ class NgTemplateNameDirective {
5159
+ constructor(template) {
5160
+ this.template = template;
5161
+ }
5162
+ }
5163
+ NgTemplateNameDirective.decorators = [
5164
+ { type: Directive, args: [{
5165
+ selector: 'ng-template[name]'
5166
+ },] }
5167
+ ];
5168
+ NgTemplateNameDirective.ctorParameters = () => [
5169
+ { type: TemplateRef }
5170
+ ];
5171
+ NgTemplateNameDirective.propDecorators = {
5172
+ name: [{ type: Input }]
5173
+ };
5174
+
5175
+ class RepeaterComponent {
5176
+ constructor() {
5177
+ this.templateRefs = [];
5178
+ this.items = [];
5179
+ this.repeaterContext = { index: 0, delete: null, elements: null };
5180
+ }
5181
+ ngOnInit() {
5182
+ this.currentTemplate = this.initialTemplate;
5183
+ this.repeaterGroup = new FormGroup({});
5184
+ this.group.addControl(this.options.Name, this.repeaterGroup);
5185
+ this.group.get(this.options.Name).setValue(this.options.RepeaterValue);
5186
+ for (let index = 0; index < this.options.MinRequiredItems; index++) {
5187
+ this.items.push(index);
5188
+ }
5189
+ this.repeaterGroup.valueChanges.subscribe((res) => {
5190
+ let result = [];
5191
+ let rowNumber = [];
5192
+ let addItems = [];
5193
+ for (const key in this.repeaterGroup.controls) {
5194
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
5195
+ const keySplitArr = key.split('.');
5196
+ let item = {
5197
+ [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
5198
+ };
5199
+ addItems.push(item);
5200
+ if (!rowNumber.includes(keySplitArr[1]))
5201
+ rowNumber.push(keySplitArr[1]);
5202
+ }
5203
+ }
5204
+ for (let index = 0; index < rowNumber.length; index++) {
5205
+ const row = rowNumber[index];
5206
+ let addObject = {};
5207
+ let filteredElements = addItems.filter(item => item[row]);
5208
+ for (let index = 0; index < filteredElements.length; index++) {
5209
+ const filteredElement = filteredElements[index];
5210
+ for (const key in filteredElement) {
5211
+ if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
5212
+ const element = filteredElement[key];
5213
+ for (const key in element) {
5214
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
5215
+ const value = element[key];
5216
+ addObject[key] = value;
5217
+ }
5218
+ }
5219
+ }
5220
+ }
5221
+ }
5222
+ result.push(addObject);
5223
+ }
5224
+ this.options.RepeaterValue = result;
5225
+ });
5226
+ }
5227
+ deleteItem(Index) {
5228
+ if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
5229
+ return;
5230
+ let deletedControls = [];
5231
+ let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
5232
+ for (const key in this.repeaterGroup.controls) {
5233
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
5234
+ for (let index = 0; index < controlNames.length; index++) {
5235
+ const element = controlNames[index];
5236
+ const keySplitArr = key.split('.');
5237
+ if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
5238
+ const element = this.repeaterGroup.controls[key];
5239
+ deletedControls.push({ [key]: element });
5240
+ }
5241
+ }
5242
+ }
5243
+ }
5244
+ for (let index = 0; index < deletedControls.length; index++) {
5245
+ const element = deletedControls[index];
5246
+ for (const key in element) {
5247
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
5248
+ this.repeaterGroup.removeControl(key);
5249
+ }
5250
+ }
5251
+ }
5252
+ let item = this.items[Index];
5253
+ this.items = this.items.filter((res) => res != item);
5254
+ }
5255
+ AddItem() {
5256
+ this.items.push(this.items.length + 1);
5257
+ }
5258
+ ngAfterViewInit() {
5259
+ let templateRefs = this._templates["_results"].map((item) => item["template"]);
5260
+ this.templateRefs = templateRefs;
5261
+ this.repeaterContext.elements = this.templateRefs;
5262
+ this.repeaterContext.delete = this.delete;
5263
+ }
5264
+ setCurrentIndex(i) {
5265
+ this.repeaterContext.index = i;
5266
+ }
5267
+ }
5268
+ RepeaterComponent.decorators = [
5269
+ { type: Component, args: [{
5270
+ selector: 'BBSF-repeater',
5271
+ template: "<div *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</div>\r\n\r\n<div>\r\n <ng-container *ngTemplateOutlet=\"add\">\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" \r\n let-Index=\"itemIndex\" let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\" [controlNumber]=\"control\"\r\n [group]=\"repeaterGroup\"></repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\"> <span [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\"\r\n (click)=\"AddItem()\"><span [innerHTML]=\"options.AddButtonText\"></span></button>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n<!-- <ng-template adHost></ng-template> -->",
5272
+ styles: [""]
5273
+ },] }
5274
+ ];
5275
+ RepeaterComponent.ctorParameters = () => [];
5276
+ RepeaterComponent.propDecorators = {
5277
+ group: [{ type: Input }],
5278
+ options: [{ type: Input }],
5279
+ initialTemplate: [{ type: Input }],
5280
+ _templates: [{ type: ViewChildren, args: [NgTemplateNameDirective,] }],
5281
+ delete: [{ type: ViewChild, args: ['delete', { static: false },] }]
5282
+ };
5283
+
5284
+ var PermissionSets;
5285
+ (function (PermissionSets) {
5286
+ PermissionSets[PermissionSets["Admin"] = 1] = "Admin";
5287
+ PermissionSets[PermissionSets["BusinessAdmin"] = 2] = "BusinessAdmin";
5288
+ PermissionSets[PermissionSets["Customer"] = 3] = "Customer";
5289
+ })(PermissionSets || (PermissionSets = {}));
5290
+ var PropertyLocation;
5291
+ (function (PropertyLocation) {
5292
+ PropertyLocation[PropertyLocation["InternalIdeas"] = 53001] = "InternalIdeas";
5293
+ PropertyLocation[PropertyLocation["EvaluationRequest"] = 53002] = "EvaluationRequest";
5294
+ PropertyLocation[PropertyLocation["IMOBusiness"] = 53003] = "IMOBusiness";
5295
+ PropertyLocation[PropertyLocation["PublicIdeas"] = 53004] = "PublicIdeas";
5296
+ })(PropertyLocation || (PropertyLocation = {}));
5297
+ var LanguageType;
5298
+ (function (LanguageType) {
5299
+ LanguageType[LanguageType["English"] = 54001] = "English";
5300
+ LanguageType[LanguageType["Arabic"] = 54002] = "Arabic";
5301
+ LanguageType[LanguageType["Any"] = 54003] = "Any";
5302
+ })(LanguageType || (LanguageType = {}));
5303
+ var DataType;
5304
+ (function (DataType) {
5305
+ DataType[DataType["Text"] = 52001] = "Text";
5306
+ DataType[DataType["Email"] = 52002] = "Email";
5307
+ DataType[DataType["Number"] = 52005] = "Number";
5308
+ DataType[DataType["Name"] = 52003] = "Name";
5309
+ DataType[DataType["Mobile"] = 52004] = "Mobile";
5310
+ DataType[DataType["MultilineText"] = 52006] = "MultilineText";
5311
+ DataType[DataType["HTML"] = 52007] = "HTML";
5312
+ DataType[DataType["Image"] = 52010] = "Image";
5313
+ DataType[DataType["File"] = 52011] = "File";
5314
+ DataType[DataType["MultiFile"] = 52012] = "MultiFile";
5315
+ DataType[DataType["Boolean"] = 52013] = "Boolean";
5316
+ DataType[DataType["Date"] = 52014] = "Date";
5317
+ DataType[DataType["DateTime"] = 52015] = "DateTime";
5318
+ DataType[DataType["Time"] = 52016] = "Time";
5319
+ DataType[DataType["Location"] = 52017] = "Location";
5320
+ DataType[DataType["SingleSelect"] = 52008] = "SingleSelect";
5321
+ DataType[DataType["MulipleSelect"] = 52009] = "MulipleSelect";
5322
+ DataType[DataType["Goal"] = 52018] = "Goal";
5323
+ DataType[DataType["Challenge"] = 52019] = "Challenge";
5324
+ DataType[DataType["CoverPhoto"] = 52020] = "CoverPhoto";
5325
+ DataType[DataType["InnovationLab"] = 52021] = "InnovationLab";
5326
+ DataType[DataType["Country"] = 52022] = "Country";
5327
+ })(DataType || (DataType = {}));
5328
+
5329
+ var ForceDirection;
5330
+ (function (ForceDirection) {
5331
+ ForceDirection[ForceDirection["English"] = 1] = "English";
5332
+ ForceDirection[ForceDirection["Arabic"] = 2] = "Arabic";
5333
+ })(ForceDirection || (ForceDirection = {}));
5334
+
5335
+ class DatePickerOptions {
5336
+ constructor() {
5337
+ /** to set type of view if DatePicker is Vertical or Horizontal */
5338
+ this.ViewType = ControlLayout.Vertical;
5339
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5340
+ */
5341
+ this.CustomValidation = [];
5342
+ /**To set First Day Of Week to DatePicker */
5343
+ this.FirstDayOfWeek = 1;
5344
+ /**To set PickerType to DatePicker is Calendar or Timer Or Both */
5345
+ this.PickerType = PickerType.Calendar;
5346
+ /**To set StartView to DatePicker is Year or Month Or Multi-Year */
5347
+ this.StartView = StartView.Month;
5348
+ /**To set SelectMode to DatePicker is Single or Range */
5349
+ this.SelectMode = SelectMode.Single;
5350
+ this.ForceDirection = ForceDirection.English;
5351
+ }
5352
+ }
5353
+
5354
+ class DropdownOptions {
5355
+ constructor() {
5356
+ /** Disable Bootstrap DropdownList */
5357
+ this.DisableBootstrapSelect = false;
5358
+ /** to set type of view if DropdownList is Vertical or Horizontal */
5359
+ this.ViewType = null;
5360
+ /** To Set Custom Validation*/
5361
+ this.CustomValidation = [];
5362
+ /** Set key for item in DropdownList */
5363
+ this.ItemTempletkey = "key";
5364
+ /** Set value for item in DropdownList */
5365
+ this.ItemTempletvalue = "value";
5366
+ this.ForceDirection = ForceDirection.English;
5367
+ }
5368
+ }
5369
+
5370
+ class FileUploadOptions {
5371
+ constructor() {
5372
+ /** Ability to set FileInput required */
5373
+ this.IsMultipleFile = false;
5374
+ /** Sets boolean Value to Show IsDropZone Or Not */
5375
+ this.IsDropZone = false;
5376
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5377
+ */
5378
+ this.CustomValidation = [];
5379
+ /** to set type of view if textbox is Vertical or Horizontal */
5380
+ this.ViewType = null;
5381
+ }
5382
+ }
5383
+
5384
+ class HtmlEditorOptions {
5385
+ constructor() {
5386
+ /** to set type of view if textbox is Vertical or Horizontal */
5387
+ this.ViewType = null;
5388
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5389
+ */
5390
+ this.CustomValidation = [];
5391
+ /** to set Direction of HtmlEditor if HtmlEditor is Arabic or English */
5392
+ this.ForceDirection = ForceDirection.English;
5393
+ /** Set Height For */
5394
+ this.Height = 150;
5395
+ }
5396
+ }
5397
+
5398
+ var ImageType;
5399
+ (function (ImageType) {
5400
+ ImageType["ImageTypes"] = "image/png,image/bmp,image/jpeg";
5401
+ ImageType["PNG"] = "image/png";
5402
+ ImageType["JPG"] = "image/jpeg";
5403
+ ImageType["JPEG"] = "image/jpeg";
5404
+ ImageType["SVG"] = "image/svg+xml";
5405
+ ImageType["None"] = "";
5406
+ })(ImageType || (ImageType = {}));
5407
+
5408
+ class ImageUploadOptions {
5409
+ constructor() {
5410
+ /** Allow to Upload Multiple File */
5411
+ this.IsMultiple = false;
5412
+ /** Allow to Use Drop Zone */
5413
+ this.AllowDropZone = false;
5414
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5415
+ */
5416
+ this.CustomValidation = [];
5417
+ /** to set type of view if FileInput is Vertical or Horizontal */
5418
+ this.ViewType = null;
5419
+ /** Set List of Custom Attribute to FileInput */
5420
+ this.FileUploadAcceptsTypes = [ImageType.ImageTypes];
5421
+ }
5422
+ }
5423
+
5424
+ class MapAutoCompleteOptions {
5425
+ constructor() {
5426
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5427
+ */
5428
+ this.CustomValidation = [];
5429
+ /** to set type of view if MapAutoComplete is Vertical or Horizontal */
5430
+ this.ViewType = null;
5431
+ }
5432
+ }
5433
+
5434
+ class PhoneOptions {
5435
+ constructor() {
5436
+ /**
5437
+ * Represent Css classes to Phonebox
5438
+ */
5439
+ this.ExtraClasses = "form-control bnsights-control";
5440
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5441
+ */
5442
+ this.CustomValidation = [];
5443
+ /**Set List Of Countries As Preferred Countries*/
5444
+ this.PreferredCountries = [];
5445
+ /** to set type of view if Phonebox is Vertical or Horizontal */
5446
+ this.ViewType = null;
5447
+ this.ForceDirection = ForceDirection.English;
5448
+ }
5449
+ }
5450
+
5451
+ class RangeNumber {
5452
+ }
5453
+
5454
+ class TextAreaOptions {
5455
+ constructor() {
5456
+ /** to set type of view if TextArea is Vertical or Horizontal */
5457
+ this.ViewType = null;
5458
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5459
+ */
5460
+ this.CustomValidation = [];
5461
+ /** to set Direction of TextArea if TextArea is Arabic or English */
5462
+ this.ForceDirection = ForceDirection.English;
5463
+ }
5464
+ }
5465
+
5466
+ var IconPosition;
5467
+ (function (IconPosition) {
5468
+ IconPosition[IconPosition["left"] = 1] = "left";
5469
+ IconPosition[IconPosition["right"] = 2] = "right";
5470
+ })(IconPosition || (IconPosition = {}));
5471
+
5472
+ class TextBoxOptions {
5473
+ constructor() {
5474
+ /** set Range Number to Textbox with type number with From-Value and To-value*/
5475
+ this.NumberRange = new RangeNumber();
5476
+ /**Prevent AutoComplete of textbox*/
5477
+ this.AutoComplete = "off";
5478
+ /** to set type of view if textbox is Vertical or Horizontal */
5479
+ this.ViewType = null;
5480
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5481
+ */
5482
+ this.CustomValidation = [];
5483
+ /** to set Direction of textbox if textbox is Arabic or English */
5484
+ this.ForceDirection = null;
5485
+ /** Set Type of TextBox ("text","password","email","number") */
5486
+ this.Type = InputType.Text;
5487
+ this.IconPosition = IconPosition.left;
5488
+ this.NoMargin = false;
5489
+ this.ValidationRules = [];
5490
+ }
5491
+ }
5492
+
5493
+ class ToggleSlideOptions {
5494
+ constructor() {
5495
+ this.ViewType = null;
5496
+ this.ForceDirection = ForceDirection.English;
5497
+ }
5498
+ }
5499
+
5500
+ class RenderComponentService {
5501
+ constructor(componentFactoryResolver) {
5502
+ this.componentFactoryResolver = componentFactoryResolver;
5503
+ }
5504
+ renderDynamicComponent(viewContainerRef, component, group, options) {
5505
+ let factory = this.componentFactoryResolver.resolveComponentFactory(component);
5506
+ const componentRef = viewContainerRef.createComponent(factory);
5507
+ componentRef.instance.group = group;
5508
+ componentRef.instance.options = options;
5509
+ }
5510
+ }
5511
+ RenderComponentService.decorators = [
5512
+ { type: Injectable }
5513
+ ];
5514
+ RenderComponentService.ctorParameters = () => [
5515
+ { type: ComponentFactoryResolver }
5516
+ ];
5517
+
5518
+ class RepeaterFieldBuilderComponent {
5519
+ constructor(renderComponentService, TextControlHost) {
5520
+ this.renderComponentService = renderComponentService;
5521
+ this.TextControlHost = TextControlHost;
5522
+ }
5523
+ ngOnInit() {
5524
+ }
5525
+ ngAfterViewInit() {
5526
+ setTimeout(() => {
5527
+ this.Item.clear();
5528
+ switch (this.RepeaterField.ControlType) {
5529
+ ///TextBox
5530
+ case DataType.Text:
5531
+ let Text = new TextBoxOptions();
5532
+ Text.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5533
+ Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5534
+ Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5535
+ Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5536
+ Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
5537
+ Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5538
+ Text.Type = InputType.Text;
5539
+ if (this.RepeaterField.ControlOptions.maxLength)
5540
+ Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5541
+ if (this.RepeaterField.ControlOptions.minLength)
5542
+ Text.MinLength = this.RepeaterField.ControlOptions.minLength;
5543
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
5544
+ break;
5545
+ case DataType.Name:
5546
+ let Name = new TextBoxOptions();
5547
+ Name.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5548
+ Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5549
+ Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5550
+ Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5551
+ Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
5552
+ Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5553
+ if (this.RepeaterField.ControlOptions.maxLength)
5554
+ Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5555
+ if (this.RepeaterField.ControlOptions.minLength)
5556
+ Name.MinLength = this.RepeaterField.ControlOptions.minLength;
5557
+ Name.Type = InputType.Text;
5558
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
5559
+ break;
5560
+ case DataType.Email:
5561
+ let Email = new TextBoxOptions();
5562
+ Email.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5563
+ Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5564
+ Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5565
+ Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5566
+ Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
5567
+ Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5568
+ Email.Type = InputType.Email;
5569
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
5570
+ break;
5571
+ case DataType.Number:
5572
+ let Number = new TextBoxOptions();
5573
+ Number.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5574
+ Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5575
+ Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5576
+ Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5577
+ Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
5578
+ Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5579
+ Number.Type = InputType.Number;
5580
+ let rangeNumber = new RangeNumber();
5581
+ rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
5582
+ rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
5583
+ Number.NumberRange = rangeNumber;
5584
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
5585
+ break;
5586
+ ///DateTime
5587
+ case DataType.Date:
5588
+ let Date = new DatePickerOptions();
5589
+ Date.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5590
+ Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5591
+ Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5592
+ Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5593
+ Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
5594
+ Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5595
+ Date.PickerType = PickerType.Calendar;
5596
+ Date.SelectMode = SelectMode.Single;
5597
+ Date.StartView = StartView.Month;
5598
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
5599
+ break;
5600
+ case DataType.DateTime:
5601
+ let DateTime = new DatePickerOptions();
5602
+ DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5603
+ DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5604
+ DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5605
+ DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5606
+ DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
5607
+ DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5608
+ DateTime.PickerType = PickerType.Both;
5609
+ DateTime.SelectMode = SelectMode.Single;
5610
+ DateTime.StartView = StartView.Month;
5611
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
5612
+ break;
5613
+ case DataType.Time:
5614
+ let Time = new DatePickerOptions();
5615
+ Time.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5616
+ Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5617
+ Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5618
+ Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5619
+ Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
5620
+ Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5621
+ Time.PickerType = PickerType.Timer;
5622
+ Time.SelectMode = SelectMode.Single;
5623
+ Time.StartView = StartView.Month;
5624
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
5625
+ break;
5626
+ //Dropdown
5627
+ case DataType.SingleSelect:
5628
+ let SingleSelect = new DropdownOptions();
5629
+ SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5630
+ SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5631
+ SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5632
+ SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5633
+ SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
5634
+ SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5635
+ SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
5636
+ SingleSelect.SingleSelection = true;
5637
+ SingleSelect.ShowCheckbox = false;
5638
+ SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5639
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
5640
+ break;
5641
+ case DataType.MulipleSelect:
5642
+ let MulipleSelect = new DropdownOptions();
5643
+ MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5644
+ MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5645
+ MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5646
+ MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5647
+ MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
5648
+ MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5649
+ MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
5650
+ MulipleSelect.SingleSelection = false;
5651
+ MulipleSelect.ShowCheckbox = false;
5652
+ MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5653
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
5654
+ break;
5655
+ case DataType.Goal:
5656
+ let Goal = new DropdownOptions();
5657
+ Goal.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5658
+ Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5659
+ Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5660
+ Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5661
+ Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
5662
+ Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5663
+ Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
5664
+ Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5665
+ Goal.ShowCheckbox = false;
5666
+ Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5667
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
5668
+ break;
5669
+ case DataType.Challenge:
5670
+ let Challenge = new DropdownOptions();
5671
+ Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5672
+ Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5673
+ Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5674
+ Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5675
+ Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
5676
+ Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5677
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
5678
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
5679
+ Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5680
+ Challenge.ShowCheckbox = false;
5681
+ Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5682
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
5683
+ break;
5684
+ case DataType.InnovationLab:
5685
+ let InnovationLab = new DropdownOptions();
5686
+ InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5687
+ InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5688
+ InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5689
+ InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5690
+ InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
5691
+ InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5692
+ InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
5693
+ InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5694
+ InnovationLab.ShowCheckbox = false;
5695
+ InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5696
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
5697
+ break;
5698
+ case DataType.Country:
5699
+ let Country = new DropdownOptions();
5700
+ Country.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5701
+ Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5702
+ Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5703
+ Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5704
+ Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
5705
+ Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5706
+ Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
5707
+ Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5708
+ Country.ShowCheckbox = false;
5709
+ Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5710
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
5711
+ break;
5712
+ //FileUpload
5713
+ case DataType.File:
5714
+ let File = new FileUploadOptions();
5715
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5716
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5717
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5718
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5719
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
5720
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5721
+ File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5722
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
5723
+ break;
5724
+ case DataType.MultiFile:
5725
+ let MultiFile = new FileUploadOptions();
5726
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5727
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5728
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5729
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5730
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
5731
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5732
+ MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5733
+ MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
5734
+ MultiFile.IsMultipleFile = true;
5735
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
5736
+ break;
5737
+ //ImageUpload
5738
+ case DataType.Image:
5739
+ let Image = new ImageUploadOptions();
5740
+ Image.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5741
+ Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5742
+ Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5743
+ Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5744
+ Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
5745
+ Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5746
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
5747
+ Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5748
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
5749
+ break;
5750
+ case DataType.CoverPhoto:
5751
+ let CoverPhoto = new ImageUploadOptions();
5752
+ CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5753
+ CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5754
+ CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5755
+ CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5756
+ CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
5757
+ CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5758
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
5759
+ CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5760
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
5761
+ break;
5762
+ //Mobile
5763
+ case DataType.Mobile:
5764
+ let Mobile = new PhoneOptions();
5765
+ Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5766
+ Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5767
+ Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5768
+ Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5769
+ Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
5770
+ Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5771
+ Mobile.AllowSearch = true;
5772
+ Mobile.PhoneValidation = true;
5773
+ Mobile.SelectFirstCountry = true;
5774
+ Mobile.EnablePlaceholder = true;
5775
+ this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
5776
+ break;
5777
+ //MultilineText
5778
+ case DataType.MultilineText:
5779
+ let MultilineText = new TextAreaOptions();
5780
+ MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5781
+ MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5782
+ MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5783
+ MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5784
+ MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
5785
+ MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5786
+ if (this.RepeaterField.ControlOptions.maxLength)
5787
+ MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5788
+ if (this.RepeaterField.ControlOptions.minLength)
5789
+ MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
5790
+ MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
5791
+ MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
5792
+ this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
5793
+ break;
5794
+ //HTML
5795
+ case DataType.HTML:
5796
+ let HTML = new HtmlEditorOptions();
5797
+ HTML.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5798
+ HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5799
+ HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5800
+ HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5801
+ HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
5802
+ HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5803
+ if (this.RepeaterField.ControlOptions.maxLength)
5804
+ HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5805
+ if (this.RepeaterField.ControlOptions.minLength)
5806
+ HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
5807
+ HTML.Height = this.RepeaterField.ControlOptions.rows;
5808
+ HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
5809
+ this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
5810
+ break;
5811
+ //Boolean
5812
+ case DataType.Boolean:
5813
+ let Boolean = new ToggleSlideOptions();
5814
+ Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5815
+ Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5816
+ Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5817
+ Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
5818
+ Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5819
+ this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
5820
+ break;
5821
+ //Location
5822
+ case DataType.Location:
5823
+ let Location = new MapAutoCompleteOptions();
5824
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + this.itemNumber.toString() + "." + this.controlNumber.toString();
5825
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5826
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5827
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5828
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
5829
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5830
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
5831
+ break;
5832
+ default:
5833
+ break;
5834
+ }
5835
+ }, 0);
5836
+ }
5837
+ ngOnChanges(changes) {
5838
+ if (changes.itemNumber.previousValue) {
5839
+ let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
5840
+ let value = this.group.controls[name].value;
5841
+ this.Item.clear();
5842
+ this.group.removeControl(name);
5843
+ switch (this.RepeaterField.ControlType) {
5844
+ ///TextBox
5845
+ case DataType.Text:
5846
+ let Text = new TextBoxOptions();
5847
+ Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5848
+ Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5849
+ Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5850
+ Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5851
+ Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
5852
+ Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5853
+ Text.Type = InputType.Text;
5854
+ if (this.RepeaterField.ControlOptions.maxLength)
5855
+ Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5856
+ if (this.RepeaterField.ControlOptions.minLength)
5857
+ Text.MinLength = this.RepeaterField.ControlOptions.minLength;
5858
+ Text.Value = value;
5859
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
5860
+ break;
5861
+ case DataType.Name:
5862
+ let Name = new TextBoxOptions();
5863
+ Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5864
+ Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5865
+ Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5866
+ Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5867
+ Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
5868
+ Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5869
+ if (this.RepeaterField.ControlOptions.maxLength)
5870
+ Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5871
+ if (this.RepeaterField.ControlOptions.minLength)
5872
+ Name.MinLength = this.RepeaterField.ControlOptions.minLength;
5873
+ Name.Type = InputType.Text;
5874
+ Name.Value = value;
5875
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
5876
+ break;
5877
+ case DataType.Email:
5878
+ let Email = new TextBoxOptions();
5879
+ Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5880
+ Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5881
+ Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5882
+ Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5883
+ Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
5884
+ Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5885
+ Email.Type = InputType.Email;
5886
+ Email.Value = value;
5887
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
5888
+ break;
5889
+ case DataType.Number:
5890
+ let Number = new TextBoxOptions();
5891
+ Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5892
+ Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5893
+ Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5894
+ Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5895
+ Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
5896
+ Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5897
+ Number.Type = InputType.Number;
5898
+ let rangeNumber = new RangeNumber();
5899
+ rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
5900
+ rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
5901
+ Number.NumberRange = rangeNumber;
5902
+ Number.Value = value;
5903
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
5904
+ break;
5905
+ ///DateTime
5906
+ case DataType.Date:
5907
+ let Date = new DatePickerOptions();
5908
+ Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5909
+ Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5910
+ Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5911
+ Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5912
+ Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
5913
+ Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5914
+ Date.PickerType = PickerType.Calendar;
5915
+ Date.SelectMode = SelectMode.Single;
5916
+ Date.StartView = StartView.Month;
5917
+ Date.Value = value;
5918
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
5919
+ break;
5920
+ case DataType.DateTime:
5921
+ let DateTime = new DatePickerOptions();
5922
+ DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5923
+ DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5924
+ DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5925
+ DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5926
+ DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
5927
+ DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5928
+ DateTime.PickerType = PickerType.Both;
5929
+ DateTime.SelectMode = SelectMode.Single;
5930
+ DateTime.StartView = StartView.Month;
5931
+ DateTime.Value = value;
5932
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
5933
+ break;
5934
+ case DataType.Time:
5935
+ let Time = new DatePickerOptions();
5936
+ Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5937
+ Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5938
+ Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5939
+ Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5940
+ Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
5941
+ Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5942
+ Time.PickerType = PickerType.Timer;
5943
+ Time.SelectMode = SelectMode.Single;
5944
+ Time.StartView = StartView.Month;
5945
+ Time.Value = value;
5946
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
5947
+ break;
5948
+ //Dropdown
5949
+ case DataType.SingleSelect:
5950
+ let SingleSelect = new DropdownOptions();
5951
+ SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5952
+ SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5953
+ SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5954
+ SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5955
+ SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
5956
+ SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5957
+ SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
5958
+ SingleSelect.SingleSelection = true;
5959
+ SingleSelect.ShowCheckbox = false;
5960
+ SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5961
+ SingleSelect.SelectedItems = value;
5962
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
5963
+ break;
5964
+ case DataType.MulipleSelect:
5965
+ let MulipleSelect = new DropdownOptions();
5966
+ MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5967
+ MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5968
+ MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5969
+ MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5970
+ MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
5971
+ MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5972
+ MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
5973
+ MulipleSelect.SingleSelection = false;
5974
+ MulipleSelect.ShowCheckbox = false;
5975
+ MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5976
+ MulipleSelect.SelectedItems = value;
5977
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
5978
+ break;
5979
+ case DataType.Goal:
5980
+ let Goal = new DropdownOptions();
5981
+ Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5982
+ Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5983
+ Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5984
+ Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5985
+ Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
5986
+ Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5987
+ Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
5988
+ Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5989
+ Goal.ShowCheckbox = false;
5990
+ Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5991
+ Goal.SelectedItems = value;
5992
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
5993
+ break;
5994
+ case DataType.Challenge:
5995
+ let Challenge = new DropdownOptions();
5996
+ Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5997
+ Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5998
+ Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5999
+ Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6000
+ Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
6001
+ Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6002
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6003
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6004
+ Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6005
+ Challenge.ShowCheckbox = false;
6006
+ Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6007
+ Challenge.SelectedItems = value;
6008
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
6009
+ break;
6010
+ case DataType.InnovationLab:
6011
+ let InnovationLab = new DropdownOptions();
6012
+ InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6013
+ InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6014
+ InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6015
+ InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6016
+ InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
6017
+ InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6018
+ InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
6019
+ InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6020
+ InnovationLab.ShowCheckbox = false;
6021
+ InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6022
+ InnovationLab.SelectedItems = value;
6023
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
6024
+ break;
6025
+ case DataType.Country:
6026
+ let Country = new DropdownOptions();
6027
+ Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6028
+ Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6029
+ Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6030
+ Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6031
+ Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
6032
+ Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6033
+ Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
6034
+ Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6035
+ Country.ShowCheckbox = false;
6036
+ Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6037
+ Country.SelectedItems = value;
6038
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
6039
+ break;
6040
+ //FileUpload
6041
+ case DataType.File:
6042
+ let File = new FileUploadOptions();
6043
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6044
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6045
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6046
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6047
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6048
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6049
+ File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6050
+ File.Value = value;
6051
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
6052
+ break;
6053
+ case DataType.MultiFile:
6054
+ let MultiFile = new FileUploadOptions();
6055
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6056
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6057
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6058
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6059
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6060
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6061
+ MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6062
+ MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
6063
+ MultiFile.IsMultipleFile = true;
6064
+ MultiFile.Value = value;
6065
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
6066
+ break;
6067
+ //ImageUpload
6068
+ case DataType.Image:
6069
+ let Image = new ImageUploadOptions();
6070
+ Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6071
+ Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6072
+ Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6073
+ Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6074
+ Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
6075
+ Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6076
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6077
+ Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6078
+ Image.Value = value;
6079
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
6080
+ break;
6081
+ case DataType.CoverPhoto:
6082
+ let CoverPhoto = new ImageUploadOptions();
6083
+ CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6084
+ CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6085
+ CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6086
+ CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6087
+ CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
6088
+ CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6089
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6090
+ CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6091
+ CoverPhoto.Value = value;
6092
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
6093
+ break;
6094
+ //Mobile
6095
+ case DataType.Mobile:
6096
+ let Mobile = new PhoneOptions();
6097
+ Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6098
+ Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6099
+ Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6100
+ Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6101
+ Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
6102
+ Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6103
+ Mobile.AllowSearch = true;
6104
+ Mobile.PhoneValidation = true;
6105
+ Mobile.SelectFirstCountry = true;
6106
+ Mobile.EnablePlaceholder = true;
6107
+ Mobile.Value = value;
6108
+ this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
6109
+ break;
6110
+ //MultilineText
6111
+ case DataType.MultilineText:
6112
+ let MultilineText = new TextAreaOptions();
6113
+ MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6114
+ MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6115
+ MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6116
+ MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6117
+ MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
6118
+ MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6119
+ if (this.RepeaterField.ControlOptions.maxLength)
6120
+ MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6121
+ if (this.RepeaterField.ControlOptions.minLength)
6122
+ MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
6123
+ MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
6124
+ MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6125
+ MultilineText.Value = value;
6126
+ this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
6127
+ break;
6128
+ //HTML
6129
+ case DataType.HTML:
6130
+ let HTML = new HtmlEditorOptions();
6131
+ HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6132
+ HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6133
+ HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6134
+ HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6135
+ HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
6136
+ HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6137
+ if (this.RepeaterField.ControlOptions.maxLength)
6138
+ HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6139
+ if (this.RepeaterField.ControlOptions.minLength)
6140
+ HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
6141
+ HTML.Height = this.RepeaterField.ControlOptions.rows;
6142
+ HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6143
+ HTML.Value = value;
6144
+ this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
6145
+ break;
6146
+ //Boolean
6147
+ case DataType.Boolean:
6148
+ let Boolean = new ToggleSlideOptions();
6149
+ Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6150
+ Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6151
+ Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6152
+ Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
6153
+ Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6154
+ Boolean.Value = value;
6155
+ this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
6156
+ break;
6157
+ //Location
6158
+ case DataType.Location:
6159
+ let Location = new MapAutoCompleteOptions();
6160
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6161
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6162
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6163
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6164
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
6165
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6166
+ Location.Value = value;
6167
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
6168
+ break;
6169
+ default:
6170
+ break;
6171
+ }
6172
+ }
6173
+ }
6174
+ }
6175
+ RepeaterFieldBuilderComponent.decorators = [
6176
+ { type: Component, args: [{
6177
+ selector: 'repeater-field-builder',
6178
+ template: "<ng-container #Item></ng-container>\r\n"
6179
+ },] }
6180
+ ];
6181
+ RepeaterFieldBuilderComponent.ctorParameters = () => [
6182
+ { type: RenderComponentService },
6183
+ { type: FormGroupDirective }
6184
+ ];
6185
+ RepeaterFieldBuilderComponent.propDecorators = {
6186
+ Item: [{ type: ViewChild, args: ["Item", { read: ViewContainerRef },] }],
6187
+ group: [{ type: Input }],
6188
+ itemNumber: [{ type: Input }],
6189
+ controlNumber: [{ type: Input }],
6190
+ RepeaterField: [{ type: Input }]
6191
+ };
6192
+
6193
+ class RepeaterItemFieldComponent {
6194
+ constructor() { }
6195
+ ngOnInit() {
6196
+ }
6197
+ }
6198
+ RepeaterItemFieldComponent.decorators = [
6199
+ { type: Component, args: [{
6200
+ selector: 'repeater-item-field',
6201
+ template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>",
6202
+ styles: [""]
6203
+ },] }
6204
+ ];
6205
+ RepeaterItemFieldComponent.ctorParameters = () => [];
6206
+ RepeaterItemFieldComponent.propDecorators = {
6207
+ templates: [{ type: Input }],
6208
+ filedIndex: [{ type: Input }],
6209
+ itemIndex: [{ type: Input }]
6210
+ };
6211
+
5151
6212
  let options;
5152
6213
  let AppInjector;
5153
6214
  FullCalendarModule.registerPlugins([
@@ -5190,7 +6251,11 @@ BBSFControlsModule.decorators = [
5190
6251
  JwPaginationComponent,
5191
6252
  RadioButtonComponent,
5192
6253
  FormComponent,
5193
- ConfirmationModalComponent
6254
+ ConfirmationModalComponent,
6255
+ RepeaterComponent,
6256
+ RepeaterFieldBuilderComponent,
6257
+ NgTemplateNameDirective,
6258
+ RepeaterItemFieldComponent,
5194
6259
  ],
5195
6260
  imports: [
5196
6261
  CommonModule,
@@ -5245,17 +6310,12 @@ BBSFControlsModule.decorators = [
5245
6310
  ErrorMassageValidation,
5246
6311
  ControlUtility,
5247
6312
  OnPagingFiltersChangeService,
5248
- // EnvironmentService,
5249
- // AuthService,
5250
- // RequestHandlerService,
5251
- // UtilityService,
5252
6313
  TranslateService,
5253
- // BBSFTranslateService,
5254
- // ControlValidationService,
5255
6314
  FormGroupDirective,
5256
6315
  NgbModal,
5257
6316
  NgbActiveModal,
5258
6317
  DatePipe,
6318
+ RenderComponentService,
5259
6319
  { provide: OWL_DATE_TIME_LOCALE, useValue: ɵ0 },
5260
6320
  ],
5261
6321
  schemas: [
@@ -5285,7 +6345,11 @@ BBSFControlsModule.decorators = [
5285
6345
  RadioButtonComponent,
5286
6346
  FormComponent,
5287
6347
  PagingComponent,
5288
- ConfirmationModalComponent
6348
+ ConfirmationModalComponent,
6349
+ RepeaterComponent,
6350
+ RepeaterFieldBuilderComponent,
6351
+ NgTemplateNameDirective,
6352
+ RepeaterItemFieldComponent,
5289
6353
  ]
5290
6354
  },] }
5291
6355
  ];
@@ -5320,75 +6384,6 @@ class CustomValidator {
5320
6384
  }
5321
6385
  }
5322
6386
 
5323
- var ForceDirection;
5324
- (function (ForceDirection) {
5325
- ForceDirection[ForceDirection["English"] = 1] = "English";
5326
- ForceDirection[ForceDirection["Arabic"] = 2] = "Arabic";
5327
- })(ForceDirection || (ForceDirection = {}));
5328
-
5329
- class DatePickerOptions {
5330
- constructor() {
5331
- /** to set type of view if DatePicker is Vertical or Horizontal */
5332
- this.ViewType = ControlLayout.Vertical;
5333
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5334
- */
5335
- this.CustomValidation = [];
5336
- /**To set First Day Of Week to DatePicker */
5337
- this.FirstDayOfWeek = 1;
5338
- /**To set PickerType to DatePicker is Calendar or Timer Or Both */
5339
- this.PickerType = PickerType.Calendar;
5340
- /**To set StartView to DatePicker is Year or Month Or Multi-Year */
5341
- this.StartView = StartView.Month;
5342
- /**To set SelectMode to DatePicker is Single or Range */
5343
- this.SelectMode = SelectMode.Single;
5344
- this.ForceDirection = ForceDirection.English;
5345
- }
5346
- }
5347
-
5348
- class RangeNumber {
5349
- }
5350
-
5351
- var IconPosition;
5352
- (function (IconPosition) {
5353
- IconPosition[IconPosition["left"] = 1] = "left";
5354
- IconPosition[IconPosition["right"] = 2] = "right";
5355
- })(IconPosition || (IconPosition = {}));
5356
-
5357
- class TextBoxOptions {
5358
- constructor() {
5359
- /** set Range Number to Textbox with type number with From-Value and To-value*/
5360
- this.NumberRange = new RangeNumber();
5361
- /**Prevent AutoComplete of textbox*/
5362
- this.AutoComplete = "off";
5363
- /** to set type of view if textbox is Vertical or Horizontal */
5364
- this.ViewType = null;
5365
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5366
- */
5367
- this.CustomValidation = [];
5368
- /** to set Direction of textbox if textbox is Arabic or English */
5369
- this.ForceDirection = null;
5370
- /** Set Type of TextBox ("text","password","email","number") */
5371
- this.Type = InputType.Text;
5372
- this.IconPosition = IconPosition.left;
5373
- this.NoMargin = false;
5374
- this.ValidationRules = [];
5375
- }
5376
- }
5377
-
5378
- class FileUploadOptions {
5379
- constructor() {
5380
- /** Ability to set FileInput required */
5381
- this.IsMultipleFile = false;
5382
- /** Sets boolean Value to Show IsDropZone Or Not */
5383
- this.IsDropZone = false;
5384
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5385
- */
5386
- this.CustomValidation = [];
5387
- /** to set type of view if textbox is Vertical or Horizontal */
5388
- this.ViewType = null;
5389
- }
5390
- }
5391
-
5392
6387
  class MultiLingualTextBoxOptions {
5393
6388
  constructor() {
5394
6389
  /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
@@ -5410,18 +6405,6 @@ class MultiLingualTextBoxOptions {
5410
6405
  class Attribute {
5411
6406
  }
5412
6407
 
5413
- class TextAreaOptions {
5414
- constructor() {
5415
- /** to set type of view if TextArea is Vertical or Horizontal */
5416
- this.ViewType = null;
5417
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5418
- */
5419
- this.CustomValidation = [];
5420
- /** to set Direction of TextArea if TextArea is Arabic or English */
5421
- this.ForceDirection = ForceDirection.English;
5422
- }
5423
- }
5424
-
5425
6408
  class MultiLingualTextAreaOptions {
5426
6409
  constructor() {
5427
6410
  /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
@@ -5452,60 +6435,6 @@ class CheckBoxOptions {
5452
6435
  class DropdownListItem {
5453
6436
  }
5454
6437
 
5455
- class DropdownOptions {
5456
- constructor() {
5457
- /** Disable Bootstrap DropdownList */
5458
- this.DisableBootstrapSelect = false;
5459
- /** to set type of view if DropdownList is Vertical or Horizontal */
5460
- this.ViewType = null;
5461
- /** To Set Custom Validation*/
5462
- this.CustomValidation = [];
5463
- /** Set key for item in DropdownList */
5464
- this.ItemTempletkey = "key";
5465
- /** Set value for item in DropdownList */
5466
- this.ItemTempletvalue = "value";
5467
- this.ForceDirection = ForceDirection.English;
5468
- }
5469
- }
5470
-
5471
- class PhoneOptions {
5472
- constructor() {
5473
- /**
5474
- * Represent Css classes to Phonebox
5475
- */
5476
- this.ExtraClasses = "form-control bnsights-control";
5477
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5478
- */
5479
- this.CustomValidation = [];
5480
- /**Set List Of Countries As Preferred Countries*/
5481
- this.PreferredCountries = [];
5482
- /** to set type of view if Phonebox is Vertical or Horizontal */
5483
- this.ViewType = null;
5484
- this.ForceDirection = ForceDirection.English;
5485
- }
5486
- }
5487
-
5488
- class ToggleSlideOptions {
5489
- constructor() {
5490
- this.ViewType = null;
5491
- this.ForceDirection = ForceDirection.English;
5492
- }
5493
- }
5494
-
5495
- class HtmlEditorOptions {
5496
- constructor() {
5497
- /** to set type of view if textbox is Vertical or Horizontal */
5498
- this.ViewType = null;
5499
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5500
- */
5501
- this.CustomValidation = [];
5502
- /** to set Direction of HtmlEditor if HtmlEditor is Arabic or English */
5503
- this.ForceDirection = ForceDirection.English;
5504
- /** Set Height For */
5505
- this.Height = 150;
5506
- }
5507
- }
5508
-
5509
6438
  class MultiLingualHtmlEditorOptions {
5510
6439
  constructor() {
5511
6440
  /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
@@ -5522,32 +6451,6 @@ class MultiLingualHtmlEditorOptions {
5522
6451
  }
5523
6452
  }
5524
6453
 
5525
- var ImageType;
5526
- (function (ImageType) {
5527
- ImageType["ImageTypes"] = "image/png,image/bmp,image/jpeg";
5528
- ImageType["PNG"] = "image/png";
5529
- ImageType["JPG"] = "image/jpeg";
5530
- ImageType["JPEG"] = "image/jpeg";
5531
- ImageType["SVG"] = "image/svg+xml";
5532
- ImageType["None"] = "";
5533
- })(ImageType || (ImageType = {}));
5534
-
5535
- class ImageUploadOptions {
5536
- constructor() {
5537
- /** Allow to Upload Multiple File */
5538
- this.IsMultiple = false;
5539
- /** Allow to Use Drop Zone */
5540
- this.AllowDropZone = false;
5541
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5542
- */
5543
- this.CustomValidation = [];
5544
- /** to set type of view if FileInput is Vertical or Horizontal */
5545
- this.ViewType = null;
5546
- /** Set List of Custom Attribute to FileInput */
5547
- this.FileUploadAcceptsTypes = [ImageType.ImageTypes];
5548
- }
5549
- }
5550
-
5551
6454
  class ProfileImageUploadOptions {
5552
6455
  constructor() {
5553
6456
  /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
@@ -5608,16 +6511,6 @@ class CalendarOptions {
5608
6511
  class CalendarEventDTO {
5609
6512
  }
5610
6513
 
5611
- class MapAutoCompleteOptions {
5612
- constructor() {
5613
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5614
- */
5615
- this.CustomValidation = [];
5616
- /** to set type of view if MapAutoComplete is Vertical or Horizontal */
5617
- this.ViewType = null;
5618
- }
5619
- }
5620
-
5621
6514
  class AutocompleteOptions {
5622
6515
  constructor() {
5623
6516
  /**
@@ -5815,6 +6708,19 @@ class ConfirmationModalOptions {
5815
6708
  }
5816
6709
  }
5817
6710
 
6711
+ class RepeaterField {
6712
+ }
6713
+
6714
+ class RepeaterOptions {
6715
+ constructor() {
6716
+ this.MinRequiredItems = 1;
6717
+ this.AddButtonText = "Add";
6718
+ this.DeleteButtonText = "Delete";
6719
+ this.RepeaterValue = [];
6720
+ this.RepeaterStructure = [];
6721
+ }
6722
+ }
6723
+
5818
6724
  var MenuListType;
5819
6725
  (function (MenuListType) {
5820
6726
  MenuListType[MenuListType["AdminType"] = 1] = "AdminType";
@@ -6138,5 +7044,5 @@ var FileType;
6138
7044
  * Generated bundle index. Do not edit.
6139
7045
  */
6140
7046
 
6141
- export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlUtility, Country, CustomValidation, CustomValidator, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultipleFileUploadModel, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
7047
+ export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageType, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, PropertyLocation, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
6142
7048
  //# sourceMappingURL=bnsights-bbsf-controls.js.map