@bnsights/bbsf-controls 1.0.27 → 1.0.30

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 (37) hide show
  1. package/README.md +7 -18
  2. package/bnsights-bbsf-controls-1.0.30.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +555 -382
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Enums/LanguageValidation.js +6 -0
  7. package/esm2015/lib/Shared/Models/RepeaterField.js +1 -1
  8. package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
  9. package/esm2015/lib/Shared/Models/TextBoxOptions.js +3 -1
  10. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +12 -12
  11. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +2 -2
  12. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +8 -3
  13. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +4 -4
  14. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +3 -3
  15. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +3 -3
  16. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +15 -9
  17. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +376 -336
  18. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +105 -0
  19. package/esm2015/lib/controls/TextArea/TextArea.component.js +2 -2
  20. package/esm2015/lib/controls/TextBox/TextBox.component.js +15 -14
  21. package/esm2015/lib/controls/bbsf-controls.module.js +4 -1
  22. package/esm2015/public-api.js +3 -1
  23. package/fesm2015/bnsights-bbsf-controls.js +543 -380
  24. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  25. package/lib/Shared/Enums/LanguageValidation.d.ts +4 -0
  26. package/lib/Shared/Models/RepeaterField.d.ts +1 -0
  27. package/lib/Shared/Models/RepeaterOptions.d.ts +3 -0
  28. package/lib/Shared/Models/TextBoxOptions.d.ts +3 -0
  29. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -1
  30. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +1 -1
  31. package/lib/controls/Repeater/repeater/repeater.component.d.ts +2 -1
  32. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  33. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +16 -0
  34. package/package.json +2 -2
  35. package/public-api.d.ts +2 -0
  36. package/src/lib/assets/Style.css +0 -9
  37. package/bnsights-bbsf-controls-1.0.27.tgz +0 -0
@@ -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
  ];
@@ -2798,10 +2802,10 @@ 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
  }
@@ -2978,7 +2982,7 @@ ImageUploaderComponent.controlContainerstatic = null;
2978
2982
  ImageUploaderComponent.decorators = [
2979
2983
  { type: Component, args: [{
2980
2984
  selector: 'BBSF-ImageUpload',
2981
- 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",
2982
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"]
2983
2987
  },] }
2984
2988
  ];
@@ -4242,6 +4246,12 @@ RadioButtonComponent.propDecorators = {
4242
4246
  OnChange: [{ type: Output }]
4243
4247
  };
4244
4248
 
4249
+ var LanguageValidation;
4250
+ (function (LanguageValidation) {
4251
+ LanguageValidation[LanguageValidation["English"] = 1] = "English";
4252
+ LanguageValidation[LanguageValidation["Arabic"] = 2] = "Arabic";
4253
+ })(LanguageValidation || (LanguageValidation = {}));
4254
+
4245
4255
  class TextboxComponent {
4246
4256
  // tslint:disable-next-line: max-line-length
4247
4257
  constructor(controlUtility, controlContainer, TextControlHost, UtilityService, controlValidationService, globalSettings) {
@@ -4341,18 +4351,18 @@ class TextboxComponent {
4341
4351
  }
4342
4352
  break;
4343
4353
  }
4344
- // if (this.options.ForceDirection==ForceDirection.Arabic)
4345
- // {
4346
- // this.validationRules.push(Validators.compose([
4347
- // this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
4348
- // ]));
4349
- // }
4350
- // else if (this.options.ForceDirection==ForceDirection.English)
4351
- // {
4352
- // this.validationRules.push(Validators.compose([
4353
- // this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
4354
- // ]));
4355
- // }
4354
+ if (this.options.LanguageValidation) {
4355
+ if (this.options.LanguageValidation == LanguageValidation.Arabic) {
4356
+ this.validationRules.push(Validators.compose([
4357
+ this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
4358
+ ]));
4359
+ }
4360
+ else if (this.options.LanguageValidation == LanguageValidation.English) {
4361
+ this.validationRules.push(Validators.compose([
4362
+ this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
4363
+ ]));
4364
+ }
4365
+ }
4356
4366
  if (this.options.CustomValidation.length > 0) {
4357
4367
  let Validations = this.options.CustomValidation;
4358
4368
  for (let index = 0; index < Validations.length; index++) {
@@ -4442,7 +4452,7 @@ TextboxComponent.controlContainerstatic = null;
4442
4452
  TextboxComponent.decorators = [
4443
4453
  { type: Component, args: [{
4444
4454
  selector: 'BBSF-TextBox',
4445
- 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",
4455
+ 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",
4446
4456
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
4447
4457
  },] }
4448
4458
  ];
@@ -5064,7 +5074,7 @@ class ConfirmationModalComponent {
5064
5074
  showCancelButton: true,
5065
5075
  confirmButtonColor: this.btnColor,
5066
5076
  cancelButtonColor: '#f5f8fa',
5067
- cancelButtonText: this.utilityService.getResourceValue("Cancel"),
5077
+ cancelButtonText: this.utilityService.getResourceValue("CancelLabel"),
5068
5078
  confirmButtonText: this.options.SubmitButtonText,
5069
5079
  showCloseButton: true,
5070
5080
  }).then((result) => {
@@ -5172,16 +5182,23 @@ class RepeaterComponent {
5172
5182
  constructor() {
5173
5183
  this.templateRefs = [];
5174
5184
  this.items = [];
5185
+ this.originalItems = [];
5175
5186
  this.repeaterContext = { index: 0, delete: null, elements: null };
5176
5187
  }
5177
5188
  ngOnInit() {
5178
5189
  this.currentTemplate = this.initialTemplate;
5179
5190
  this.repeaterGroup = new FormGroup({});
5180
5191
  this.group.addControl(this.options.Name, this.repeaterGroup);
5181
- this.group.get(this.options.Name).setValue(this.options.RepeaterValue);
5182
- for (let index = 0; index < this.options.MinRequiredItems; index++) {
5183
- this.items.push(index);
5192
+ if (this.options.RepeaterValue.length > 0) {
5193
+ this.originalItems = this.options.RepeaterValue;
5194
+ for (let index = 0; index < this.options.RepeaterValue.length; index++) {
5195
+ this.items.push(index + 1);
5196
+ }
5184
5197
  }
5198
+ else
5199
+ for (let index = 0; index < this.options.MinRequiredItems; index++) {
5200
+ this.items.push(index);
5201
+ }
5185
5202
  this.repeaterGroup.valueChanges.subscribe((res) => {
5186
5203
  let result = [];
5187
5204
  let rowNumber = [];
@@ -5245,11 +5262,10 @@ class RepeaterComponent {
5245
5262
  }
5246
5263
  }
5247
5264
  }
5248
- let item = this.items[Index];
5249
- this.items = this.items.filter((res) => res != item);
5265
+ this.items = this.items.filter((res) => res != this.items[Index]);
5250
5266
  }
5251
- AddItem() {
5252
- this.items.push(this.items.length + 1);
5267
+ addItem() {
5268
+ this.items.push(this.items[this.items.length - 1] + 1);
5253
5269
  }
5254
5270
  ngAfterViewInit() {
5255
5271
  let templateRefs = this._templates["_results"].map((item) => item["template"]);
@@ -5264,7 +5280,7 @@ class RepeaterComponent {
5264
5280
  RepeaterComponent.decorators = [
5265
5281
  { type: Component, args: [{
5266
5282
  selector: 'BBSF-repeater',
5267
- 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> -->",
5283
+ template: "<ng-container *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</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </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\r\n [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\"><span\r\n [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> -->\r\n",
5268
5284
  styles: [""]
5269
5285
  },] }
5270
5286
  ];
@@ -5478,6 +5494,8 @@ class TextBoxOptions {
5478
5494
  this.CustomValidation = [];
5479
5495
  /** to set Direction of textbox if textbox is Arabic or English */
5480
5496
  this.ForceDirection = null;
5497
+ /** to set Language of textbox if textbox language is Arabic or English */
5498
+ this.LanguageValidation = null;
5481
5499
  /** Set Type of TextBox ("text","password","email","number") */
5482
5500
  this.Type = InputType.Text;
5483
5501
  this.IconPosition = IconPosition.left;
@@ -5515,11 +5533,23 @@ class RepeaterFieldBuilderComponent {
5515
5533
  constructor(renderComponentService, TextControlHost) {
5516
5534
  this.renderComponentService = renderComponentService;
5517
5535
  this.TextControlHost = TextControlHost;
5536
+ this.itemsValue = [];
5537
+ this.itemValue = null;
5518
5538
  }
5519
5539
  ngOnInit() {
5520
5540
  }
5521
5541
  ngAfterViewInit() {
5522
5542
  setTimeout(() => {
5543
+ if (this.itemsValue.length > 0)
5544
+ this.itemValue = this.itemsValue[this.itemNumber];
5545
+ if (this.itemValue) {
5546
+ for (const key in this.itemValue) {
5547
+ if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.RepeaterField.ControlOptions.Name) {
5548
+ const element = this.itemValue[key];
5549
+ this.value = element;
5550
+ }
5551
+ }
5552
+ }
5523
5553
  this.Item.clear();
5524
5554
  switch (this.RepeaterField.ControlType) {
5525
5555
  ///TextBox
@@ -5532,10 +5562,12 @@ class RepeaterFieldBuilderComponent {
5532
5562
  Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
5533
5563
  Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5534
5564
  Text.Type = InputType.Text;
5565
+ Text.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
5535
5566
  if (this.RepeaterField.ControlOptions.maxLength)
5536
5567
  Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5537
5568
  if (this.RepeaterField.ControlOptions.minLength)
5538
5569
  Text.MinLength = this.RepeaterField.ControlOptions.minLength;
5570
+ Text.Value = this.value;
5539
5571
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
5540
5572
  break;
5541
5573
  case DataType.Name:
@@ -5545,12 +5577,14 @@ class RepeaterFieldBuilderComponent {
5545
5577
  Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5546
5578
  Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5547
5579
  Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
5580
+ Name.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
5548
5581
  Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5549
5582
  if (this.RepeaterField.ControlOptions.maxLength)
5550
5583
  Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5551
5584
  if (this.RepeaterField.ControlOptions.minLength)
5552
5585
  Name.MinLength = this.RepeaterField.ControlOptions.minLength;
5553
5586
  Name.Type = InputType.Text;
5587
+ Name.Value = this.value;
5554
5588
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
5555
5589
  break;
5556
5590
  case DataType.Email:
@@ -5560,8 +5594,10 @@ class RepeaterFieldBuilderComponent {
5560
5594
  Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5561
5595
  Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5562
5596
  Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
5597
+ Email.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
5563
5598
  Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5564
5599
  Email.Type = InputType.Email;
5600
+ Email.Value = this.value;
5565
5601
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
5566
5602
  break;
5567
5603
  case DataType.Number:
@@ -5571,12 +5607,14 @@ class RepeaterFieldBuilderComponent {
5571
5607
  Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5572
5608
  Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5573
5609
  Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
5610
+ Number.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
5574
5611
  Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5575
5612
  Number.Type = InputType.Number;
5576
5613
  let rangeNumber = new RangeNumber();
5577
5614
  rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
5578
5615
  rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
5579
5616
  Number.NumberRange = rangeNumber;
5617
+ Number.Value = this.value;
5580
5618
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
5581
5619
  break;
5582
5620
  ///DateTime
@@ -5591,6 +5629,7 @@ class RepeaterFieldBuilderComponent {
5591
5629
  Date.PickerType = PickerType.Calendar;
5592
5630
  Date.SelectMode = SelectMode.Single;
5593
5631
  Date.StartView = StartView.Month;
5632
+ Date.Value = this.value;
5594
5633
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
5595
5634
  break;
5596
5635
  case DataType.DateTime:
@@ -5604,6 +5643,7 @@ class RepeaterFieldBuilderComponent {
5604
5643
  DateTime.PickerType = PickerType.Both;
5605
5644
  DateTime.SelectMode = SelectMode.Single;
5606
5645
  DateTime.StartView = StartView.Month;
5646
+ DateTime.Value = this.value;
5607
5647
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
5608
5648
  break;
5609
5649
  case DataType.Time:
@@ -5617,6 +5657,7 @@ class RepeaterFieldBuilderComponent {
5617
5657
  Time.PickerType = PickerType.Timer;
5618
5658
  Time.SelectMode = SelectMode.Single;
5619
5659
  Time.StartView = StartView.Month;
5660
+ Time.Value = this.value;
5620
5661
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
5621
5662
  break;
5622
5663
  //Dropdown
@@ -5632,6 +5673,7 @@ class RepeaterFieldBuilderComponent {
5632
5673
  SingleSelect.SingleSelection = true;
5633
5674
  SingleSelect.ShowCheckbox = false;
5634
5675
  SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5676
+ SingleSelect.SelectedItems = this.value;
5635
5677
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
5636
5678
  break;
5637
5679
  case DataType.MulipleSelect:
@@ -5646,6 +5688,7 @@ class RepeaterFieldBuilderComponent {
5646
5688
  MulipleSelect.SingleSelection = false;
5647
5689
  MulipleSelect.ShowCheckbox = false;
5648
5690
  MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5691
+ MulipleSelect.SelectedItems = this.value;
5649
5692
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
5650
5693
  break;
5651
5694
  case DataType.Goal:
@@ -5660,6 +5703,7 @@ class RepeaterFieldBuilderComponent {
5660
5703
  Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5661
5704
  Goal.ShowCheckbox = false;
5662
5705
  Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5706
+ Goal.SelectedItems = this.value;
5663
5707
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
5664
5708
  break;
5665
5709
  case DataType.Challenge:
@@ -5675,6 +5719,7 @@ class RepeaterFieldBuilderComponent {
5675
5719
  Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5676
5720
  Challenge.ShowCheckbox = false;
5677
5721
  Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5722
+ Challenge.SelectedItems = this.value;
5678
5723
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
5679
5724
  break;
5680
5725
  case DataType.InnovationLab:
@@ -5689,6 +5734,7 @@ class RepeaterFieldBuilderComponent {
5689
5734
  InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5690
5735
  InnovationLab.ShowCheckbox = false;
5691
5736
  InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5737
+ InnovationLab.SelectedItems = this.value;
5692
5738
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
5693
5739
  break;
5694
5740
  case DataType.Country:
@@ -5703,6 +5749,7 @@ class RepeaterFieldBuilderComponent {
5703
5749
  Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5704
5750
  Country.ShowCheckbox = false;
5705
5751
  Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5752
+ Country.SelectedItems = this.value;
5706
5753
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
5707
5754
  break;
5708
5755
  //FileUpload
@@ -5715,6 +5762,7 @@ class RepeaterFieldBuilderComponent {
5715
5762
  File.ViewType = this.RepeaterField.ControlOptions.ViewType;
5716
5763
  File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5717
5764
  File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5765
+ File.Value = this.value;
5718
5766
  this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
5719
5767
  break;
5720
5768
  case DataType.MultiFile:
@@ -5728,6 +5776,7 @@ class RepeaterFieldBuilderComponent {
5728
5776
  MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5729
5777
  MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
5730
5778
  MultiFile.IsMultipleFile = true;
5779
+ MultiFile.Value = this.value;
5731
5780
  this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
5732
5781
  break;
5733
5782
  //ImageUpload
@@ -5741,6 +5790,7 @@ class RepeaterFieldBuilderComponent {
5741
5790
  Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5742
5791
  if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
5743
5792
  Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5793
+ Image.Value = this.value;
5744
5794
  this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
5745
5795
  break;
5746
5796
  case DataType.CoverPhoto:
@@ -5753,6 +5803,7 @@ class RepeaterFieldBuilderComponent {
5753
5803
  CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5754
5804
  if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
5755
5805
  CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
5806
+ CoverPhoto.Value = this.value;
5756
5807
  this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
5757
5808
  break;
5758
5809
  //Mobile
@@ -5768,6 +5819,7 @@ class RepeaterFieldBuilderComponent {
5768
5819
  Mobile.PhoneValidation = true;
5769
5820
  Mobile.SelectFirstCountry = true;
5770
5821
  Mobile.EnablePlaceholder = true;
5822
+ Mobile.Value = this.value;
5771
5823
  this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
5772
5824
  break;
5773
5825
  //MultilineText
@@ -5785,6 +5837,7 @@ class RepeaterFieldBuilderComponent {
5785
5837
  MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
5786
5838
  MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
5787
5839
  MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
5840
+ MultilineText.Value = this.value;
5788
5841
  this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
5789
5842
  break;
5790
5843
  //HTML
@@ -5802,6 +5855,7 @@ class RepeaterFieldBuilderComponent {
5802
5855
  HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
5803
5856
  HTML.Height = this.RepeaterField.ControlOptions.rows;
5804
5857
  HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
5858
+ HTML.Value = this.value;
5805
5859
  this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
5806
5860
  break;
5807
5861
  //Boolean
@@ -5811,6 +5865,7 @@ class RepeaterFieldBuilderComponent {
5811
5865
  Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5812
5866
  Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5813
5867
  Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
5868
+ Boolean.Value = this.value;
5814
5869
  Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5815
5870
  this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
5816
5871
  break;
@@ -5822,6 +5877,7 @@ class RepeaterFieldBuilderComponent {
5822
5877
  Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5823
5878
  Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5824
5879
  Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
5880
+ Location.Value = this.value;
5825
5881
  Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5826
5882
  this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
5827
5883
  break;
@@ -5831,341 +5887,342 @@ class RepeaterFieldBuilderComponent {
5831
5887
  }, 0);
5832
5888
  }
5833
5889
  ngOnChanges(changes) {
5834
- if (changes.itemNumber.previousValue) {
5835
- let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
5836
- let value = this.group.controls[name].value;
5837
- this.Item.clear();
5838
- this.group.removeControl(name);
5839
- switch (this.RepeaterField.ControlType) {
5840
- ///TextBox
5841
- case DataType.Text:
5842
- let Text = new TextBoxOptions();
5843
- Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5844
- Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5845
- Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5846
- Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5847
- Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
5848
- Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5849
- Text.Type = InputType.Text;
5850
- if (this.RepeaterField.ControlOptions.maxLength)
5851
- Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5852
- if (this.RepeaterField.ControlOptions.minLength)
5853
- Text.MinLength = this.RepeaterField.ControlOptions.minLength;
5854
- Text.Value = value;
5855
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
5856
- break;
5857
- case DataType.Name:
5858
- let Name = new TextBoxOptions();
5859
- Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5860
- Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5861
- Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5862
- Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5863
- Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
5864
- Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5865
- if (this.RepeaterField.ControlOptions.maxLength)
5866
- Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5867
- if (this.RepeaterField.ControlOptions.minLength)
5868
- Name.MinLength = this.RepeaterField.ControlOptions.minLength;
5869
- Name.Type = InputType.Text;
5870
- Name.Value = value;
5871
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
5872
- break;
5873
- case DataType.Email:
5874
- let Email = new TextBoxOptions();
5875
- Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5876
- Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5877
- Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5878
- Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5879
- Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
5880
- Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5881
- Email.Type = InputType.Email;
5882
- Email.Value = value;
5883
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
5884
- break;
5885
- case DataType.Number:
5886
- let Number = new TextBoxOptions();
5887
- Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5888
- Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5889
- Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5890
- Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5891
- Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
5892
- Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5893
- Number.Type = InputType.Number;
5894
- let rangeNumber = new RangeNumber();
5895
- rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
5896
- rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
5897
- Number.NumberRange = rangeNumber;
5898
- Number.Value = value;
5899
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
5900
- break;
5901
- ///DateTime
5902
- case DataType.Date:
5903
- let Date = new DatePickerOptions();
5904
- Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5905
- Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5906
- Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5907
- Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5908
- Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
5909
- Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5910
- Date.PickerType = PickerType.Calendar;
5911
- Date.SelectMode = SelectMode.Single;
5912
- Date.StartView = StartView.Month;
5913
- Date.Value = value;
5914
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
5915
- break;
5916
- case DataType.DateTime:
5917
- let DateTime = new DatePickerOptions();
5918
- DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5919
- DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5920
- DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5921
- DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5922
- DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
5923
- DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5924
- DateTime.PickerType = PickerType.Both;
5925
- DateTime.SelectMode = SelectMode.Single;
5926
- DateTime.StartView = StartView.Month;
5927
- DateTime.Value = value;
5928
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
5929
- break;
5930
- case DataType.Time:
5931
- let Time = new DatePickerOptions();
5932
- Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5933
- Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5934
- Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5935
- Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5936
- Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
5937
- Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5938
- Time.PickerType = PickerType.Timer;
5939
- Time.SelectMode = SelectMode.Single;
5940
- Time.StartView = StartView.Month;
5941
- Time.Value = value;
5942
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
5943
- break;
5944
- //Dropdown
5945
- case DataType.SingleSelect:
5946
- let SingleSelect = new DropdownOptions();
5947
- SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5948
- SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5949
- SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5950
- SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5951
- SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
5952
- SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5953
- SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
5954
- SingleSelect.SingleSelection = true;
5955
- SingleSelect.ShowCheckbox = false;
5956
- SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5957
- SingleSelect.SelectedItems = value;
5958
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
5959
- break;
5960
- case DataType.MulipleSelect:
5961
- let MulipleSelect = new DropdownOptions();
5962
- MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5963
- MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5964
- MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5965
- MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5966
- MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
5967
- MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5968
- MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
5969
- MulipleSelect.SingleSelection = false;
5970
- MulipleSelect.ShowCheckbox = false;
5971
- MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5972
- MulipleSelect.SelectedItems = value;
5973
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
5974
- break;
5975
- case DataType.Goal:
5976
- let Goal = new DropdownOptions();
5977
- Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5978
- Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5979
- Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5980
- Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5981
- Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
5982
- Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5983
- Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
5984
- Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
5985
- Goal.ShowCheckbox = false;
5986
- Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
5987
- Goal.SelectedItems = value;
5988
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
5989
- break;
5990
- case DataType.Challenge:
5991
- let Challenge = new DropdownOptions();
5992
- Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5993
- Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5994
- Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5995
- Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5996
- Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
5997
- Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5998
- Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
5999
- Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6000
- Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6001
- Challenge.ShowCheckbox = false;
6002
- Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6003
- Challenge.SelectedItems = value;
6004
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
6005
- break;
6006
- case DataType.InnovationLab:
6007
- let InnovationLab = new DropdownOptions();
6008
- InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6009
- InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6010
- InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6011
- InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6012
- InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
6013
- InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6014
- InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
6015
- InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6016
- InnovationLab.ShowCheckbox = false;
6017
- InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6018
- InnovationLab.SelectedItems = value;
6019
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
6020
- break;
6021
- case DataType.Country:
6022
- let Country = new DropdownOptions();
6023
- Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6024
- Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6025
- Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6026
- Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6027
- Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
6028
- Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6029
- Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
6030
- Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6031
- Country.ShowCheckbox = false;
6032
- Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6033
- Country.SelectedItems = value;
6034
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
6035
- break;
6036
- //FileUpload
6037
- case DataType.File:
6038
- let File = new FileUploadOptions();
6039
- File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6040
- File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6041
- File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6042
- File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6043
- File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6044
- File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6045
- File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6046
- File.Value = value;
6047
- this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
6048
- break;
6049
- case DataType.MultiFile:
6050
- let MultiFile = new FileUploadOptions();
6051
- File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6052
- File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6053
- File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6054
- File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6055
- File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6056
- File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6057
- MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6058
- MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
6059
- MultiFile.IsMultipleFile = true;
6060
- MultiFile.Value = value;
6061
- this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
6062
- break;
6063
- //ImageUpload
6064
- case DataType.Image:
6065
- let Image = new ImageUploadOptions();
6066
- Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6067
- Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6068
- Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6069
- Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6070
- Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
6071
- Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6072
- if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6073
- Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6074
- Image.Value = value;
6075
- this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
6076
- break;
6077
- case DataType.CoverPhoto:
6078
- let CoverPhoto = new ImageUploadOptions();
6079
- CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6080
- CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6081
- CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6082
- CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6083
- CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
6084
- CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6085
- if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6086
- CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6087
- CoverPhoto.Value = value;
6088
- this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
6089
- break;
6090
- //Mobile
6091
- case DataType.Mobile:
6092
- let Mobile = new PhoneOptions();
6093
- Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6094
- Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6095
- Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6096
- Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6097
- Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
6098
- Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6099
- Mobile.AllowSearch = true;
6100
- Mobile.PhoneValidation = true;
6101
- Mobile.SelectFirstCountry = true;
6102
- Mobile.EnablePlaceholder = true;
6103
- Mobile.Value = value;
6104
- this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
6105
- break;
6106
- //MultilineText
6107
- case DataType.MultilineText:
6108
- let MultilineText = new TextAreaOptions();
6109
- MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6110
- MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6111
- MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6112
- MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6113
- MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
6114
- MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6115
- if (this.RepeaterField.ControlOptions.maxLength)
6116
- MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6117
- if (this.RepeaterField.ControlOptions.minLength)
6118
- MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
6119
- MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
6120
- MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6121
- MultilineText.Value = value;
6122
- this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
6123
- break;
6124
- //HTML
6125
- case DataType.HTML:
6126
- let HTML = new HtmlEditorOptions();
6127
- HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6128
- HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6129
- HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6130
- HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6131
- HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
6132
- HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6133
- if (this.RepeaterField.ControlOptions.maxLength)
6134
- HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6135
- if (this.RepeaterField.ControlOptions.minLength)
6136
- HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
6137
- HTML.Height = this.RepeaterField.ControlOptions.rows;
6138
- HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6139
- HTML.Value = value;
6140
- this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
6141
- break;
6142
- //Boolean
6143
- case DataType.Boolean:
6144
- let Boolean = new ToggleSlideOptions();
6145
- Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6146
- Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6147
- Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6148
- Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
6149
- Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6150
- Boolean.Value = value;
6151
- this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
6152
- break;
6153
- //Location
6154
- case DataType.Location:
6155
- let Location = new MapAutoCompleteOptions();
6156
- Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6157
- Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6158
- Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6159
- Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6160
- Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
6161
- Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6162
- Location.Value = value;
6163
- this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
6164
- break;
6165
- default:
6166
- break;
5890
+ if (changes.itemNumber)
5891
+ if (changes.itemNumber.previousValue) {
5892
+ let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
5893
+ let value = this.group.controls[name].value;
5894
+ this.Item.clear();
5895
+ this.group.removeControl(name);
5896
+ switch (this.RepeaterField.ControlType) {
5897
+ ///TextBox
5898
+ case DataType.Text:
5899
+ let Text = new TextBoxOptions();
5900
+ Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5901
+ Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5902
+ Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5903
+ Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5904
+ Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
5905
+ Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5906
+ Text.Type = InputType.Text;
5907
+ if (this.RepeaterField.ControlOptions.maxLength)
5908
+ Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5909
+ if (this.RepeaterField.ControlOptions.minLength)
5910
+ Text.MinLength = this.RepeaterField.ControlOptions.minLength;
5911
+ Text.Value = value;
5912
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
5913
+ break;
5914
+ case DataType.Name:
5915
+ let Name = new TextBoxOptions();
5916
+ Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5917
+ Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5918
+ Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5919
+ Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5920
+ Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
5921
+ Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5922
+ if (this.RepeaterField.ControlOptions.maxLength)
5923
+ Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
5924
+ if (this.RepeaterField.ControlOptions.minLength)
5925
+ Name.MinLength = this.RepeaterField.ControlOptions.minLength;
5926
+ Name.Type = InputType.Text;
5927
+ Name.Value = value;
5928
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
5929
+ break;
5930
+ case DataType.Email:
5931
+ let Email = new TextBoxOptions();
5932
+ Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5933
+ Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5934
+ Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5935
+ Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5936
+ Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
5937
+ Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5938
+ Email.Type = InputType.Email;
5939
+ Email.Value = value;
5940
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
5941
+ break;
5942
+ case DataType.Number:
5943
+ let Number = new TextBoxOptions();
5944
+ Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5945
+ Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5946
+ Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5947
+ Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5948
+ Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
5949
+ Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5950
+ Number.Type = InputType.Number;
5951
+ let rangeNumber = new RangeNumber();
5952
+ rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
5953
+ rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
5954
+ Number.NumberRange = rangeNumber;
5955
+ Number.Value = value;
5956
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
5957
+ break;
5958
+ ///DateTime
5959
+ case DataType.Date:
5960
+ let Date = new DatePickerOptions();
5961
+ Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5962
+ Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5963
+ Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5964
+ Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5965
+ Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
5966
+ Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5967
+ Date.PickerType = PickerType.Calendar;
5968
+ Date.SelectMode = SelectMode.Single;
5969
+ Date.StartView = StartView.Month;
5970
+ Date.Value = value;
5971
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
5972
+ break;
5973
+ case DataType.DateTime:
5974
+ let DateTime = new DatePickerOptions();
5975
+ DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5976
+ DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5977
+ DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5978
+ DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5979
+ DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
5980
+ DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5981
+ DateTime.PickerType = PickerType.Both;
5982
+ DateTime.SelectMode = SelectMode.Single;
5983
+ DateTime.StartView = StartView.Month;
5984
+ DateTime.Value = value;
5985
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
5986
+ break;
5987
+ case DataType.Time:
5988
+ let Time = new DatePickerOptions();
5989
+ Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
5990
+ Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
5991
+ Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
5992
+ Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
5993
+ Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
5994
+ Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
5995
+ Time.PickerType = PickerType.Timer;
5996
+ Time.SelectMode = SelectMode.Single;
5997
+ Time.StartView = StartView.Month;
5998
+ Time.Value = value;
5999
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
6000
+ break;
6001
+ //Dropdown
6002
+ case DataType.SingleSelect:
6003
+ let SingleSelect = new DropdownOptions();
6004
+ SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6005
+ SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6006
+ SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6007
+ SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6008
+ SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
6009
+ SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6010
+ SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
6011
+ SingleSelect.SingleSelection = true;
6012
+ SingleSelect.ShowCheckbox = false;
6013
+ SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6014
+ SingleSelect.SelectedItems = value;
6015
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
6016
+ break;
6017
+ case DataType.MulipleSelect:
6018
+ let MulipleSelect = new DropdownOptions();
6019
+ MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6020
+ MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6021
+ MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6022
+ MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6023
+ MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
6024
+ MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6025
+ MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
6026
+ MulipleSelect.SingleSelection = false;
6027
+ MulipleSelect.ShowCheckbox = false;
6028
+ MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6029
+ MulipleSelect.SelectedItems = value;
6030
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
6031
+ break;
6032
+ case DataType.Goal:
6033
+ let Goal = new DropdownOptions();
6034
+ Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6035
+ Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6036
+ Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6037
+ Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6038
+ Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
6039
+ Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6040
+ Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
6041
+ Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6042
+ Goal.ShowCheckbox = false;
6043
+ Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6044
+ Goal.SelectedItems = value;
6045
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
6046
+ break;
6047
+ case DataType.Challenge:
6048
+ let Challenge = new DropdownOptions();
6049
+ Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6050
+ Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6051
+ Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6052
+ Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6053
+ Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
6054
+ Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6055
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6056
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6057
+ Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6058
+ Challenge.ShowCheckbox = false;
6059
+ Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6060
+ Challenge.SelectedItems = value;
6061
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
6062
+ break;
6063
+ case DataType.InnovationLab:
6064
+ let InnovationLab = new DropdownOptions();
6065
+ InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6066
+ InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6067
+ InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6068
+ InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6069
+ InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
6070
+ InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6071
+ InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
6072
+ InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6073
+ InnovationLab.ShowCheckbox = false;
6074
+ InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6075
+ InnovationLab.SelectedItems = value;
6076
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
6077
+ break;
6078
+ case DataType.Country:
6079
+ let Country = new DropdownOptions();
6080
+ Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6081
+ Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6082
+ Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6083
+ Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6084
+ Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
6085
+ Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6086
+ Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
6087
+ Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6088
+ Country.ShowCheckbox = false;
6089
+ Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6090
+ Country.SelectedItems = value;
6091
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
6092
+ break;
6093
+ //FileUpload
6094
+ case DataType.File:
6095
+ let File = new FileUploadOptions();
6096
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6097
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6098
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6099
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6100
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6101
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6102
+ File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6103
+ File.Value = value;
6104
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
6105
+ break;
6106
+ case DataType.MultiFile:
6107
+ let MultiFile = new FileUploadOptions();
6108
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6109
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6110
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6111
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6112
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6113
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6114
+ MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6115
+ MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
6116
+ MultiFile.IsMultipleFile = true;
6117
+ MultiFile.Value = value;
6118
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
6119
+ break;
6120
+ //ImageUpload
6121
+ case DataType.Image:
6122
+ let Image = new ImageUploadOptions();
6123
+ Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6124
+ Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6125
+ Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6126
+ Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6127
+ Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
6128
+ Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6129
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6130
+ Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6131
+ Image.Value = value;
6132
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
6133
+ break;
6134
+ case DataType.CoverPhoto:
6135
+ let CoverPhoto = new ImageUploadOptions();
6136
+ CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6137
+ CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6138
+ CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6139
+ CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6140
+ CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
6141
+ CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6142
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6143
+ CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6144
+ CoverPhoto.Value = value;
6145
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
6146
+ break;
6147
+ //Mobile
6148
+ case DataType.Mobile:
6149
+ let Mobile = new PhoneOptions();
6150
+ Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6151
+ Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6152
+ Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6153
+ Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6154
+ Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
6155
+ Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6156
+ Mobile.AllowSearch = true;
6157
+ Mobile.PhoneValidation = true;
6158
+ Mobile.SelectFirstCountry = true;
6159
+ Mobile.EnablePlaceholder = true;
6160
+ Mobile.Value = value;
6161
+ this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
6162
+ break;
6163
+ //MultilineText
6164
+ case DataType.MultilineText:
6165
+ let MultilineText = new TextAreaOptions();
6166
+ MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6167
+ MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6168
+ MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6169
+ MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6170
+ MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
6171
+ MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6172
+ if (this.RepeaterField.ControlOptions.maxLength)
6173
+ MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6174
+ if (this.RepeaterField.ControlOptions.minLength)
6175
+ MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
6176
+ MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
6177
+ MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6178
+ MultilineText.Value = value;
6179
+ this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
6180
+ break;
6181
+ //HTML
6182
+ case DataType.HTML:
6183
+ let HTML = new HtmlEditorOptions();
6184
+ HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6185
+ HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6186
+ HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6187
+ HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6188
+ HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
6189
+ HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6190
+ if (this.RepeaterField.ControlOptions.maxLength)
6191
+ HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6192
+ if (this.RepeaterField.ControlOptions.minLength)
6193
+ HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
6194
+ HTML.Height = this.RepeaterField.ControlOptions.rows;
6195
+ HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6196
+ HTML.Value = value;
6197
+ this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
6198
+ break;
6199
+ //Boolean
6200
+ case DataType.Boolean:
6201
+ let Boolean = new ToggleSlideOptions();
6202
+ Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6203
+ Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6204
+ Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6205
+ Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
6206
+ Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6207
+ Boolean.Value = value;
6208
+ this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
6209
+ break;
6210
+ //Location
6211
+ case DataType.Location:
6212
+ let Location = new MapAutoCompleteOptions();
6213
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6214
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6215
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6216
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6217
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
6218
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6219
+ Location.Value = value;
6220
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
6221
+ break;
6222
+ default:
6223
+ break;
6224
+ }
6167
6225
  }
6168
- }
6169
6226
  }
6170
6227
  }
6171
6228
  RepeaterFieldBuilderComponent.decorators = [
@@ -6183,7 +6240,8 @@ RepeaterFieldBuilderComponent.propDecorators = {
6183
6240
  group: [{ type: Input }],
6184
6241
  itemNumber: [{ type: Input }],
6185
6242
  controlNumber: [{ type: Input }],
6186
- RepeaterField: [{ type: Input }]
6243
+ RepeaterField: [{ type: Input }],
6244
+ itemsValue: [{ type: Input }]
6187
6245
  };
6188
6246
 
6189
6247
  class RepeaterItemFieldComponent {
@@ -6205,6 +6263,108 @@ RepeaterItemFieldComponent.propDecorators = {
6205
6263
  itemIndex: [{ type: Input }]
6206
6264
  };
6207
6265
 
6266
+ class RepeaterTableComponent {
6267
+ constructor(utilityService) {
6268
+ this.utilityService = utilityService;
6269
+ this.items = [];
6270
+ this.originalItems = [];
6271
+ }
6272
+ ngOnInit() {
6273
+ this.repeaterGroup = new FormGroup({});
6274
+ this.group.addControl(this.options.Name, this.repeaterGroup);
6275
+ if (this.options.RepeaterValue.length > 0) {
6276
+ this.originalItems = this.options.RepeaterValue;
6277
+ for (let index = 0; index < this.options.RepeaterValue.length; index++) {
6278
+ this.items.push(index + 1);
6279
+ }
6280
+ }
6281
+ else
6282
+ for (let index = 0; index < this.options.MinRequiredItems; index++) {
6283
+ this.items.push(index);
6284
+ }
6285
+ this.repeaterGroup.valueChanges.subscribe((res) => {
6286
+ let result = [];
6287
+ let rowNumber = [];
6288
+ let addItems = [];
6289
+ for (const key in this.repeaterGroup.controls) {
6290
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
6291
+ const keySplitArr = key.split('.');
6292
+ let item = {
6293
+ [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
6294
+ };
6295
+ addItems.push(item);
6296
+ if (!rowNumber.includes(keySplitArr[1]))
6297
+ rowNumber.push(keySplitArr[1]);
6298
+ }
6299
+ }
6300
+ for (let index = 0; index < rowNumber.length; index++) {
6301
+ const row = rowNumber[index];
6302
+ let addObject = {};
6303
+ let filteredElements = addItems.filter(item => item[row]);
6304
+ for (let index = 0; index < filteredElements.length; index++) {
6305
+ const filteredElement = filteredElements[index];
6306
+ for (const key in filteredElement) {
6307
+ if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
6308
+ const element = filteredElement[key];
6309
+ for (const key in element) {
6310
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
6311
+ const value = element[key];
6312
+ addObject[key] = value;
6313
+ }
6314
+ }
6315
+ }
6316
+ }
6317
+ }
6318
+ result.push(addObject);
6319
+ }
6320
+ this.options.RepeaterValue = result;
6321
+ });
6322
+ }
6323
+ deleteItem(Index) {
6324
+ if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
6325
+ return;
6326
+ let deletedControls = [];
6327
+ let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
6328
+ for (const key in this.repeaterGroup.controls) {
6329
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
6330
+ for (let index = 0; index < controlNames.length; index++) {
6331
+ const element = controlNames[index];
6332
+ const keySplitArr = key.split('.');
6333
+ if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
6334
+ const element = this.repeaterGroup.controls[key];
6335
+ deletedControls.push({ [key]: element });
6336
+ }
6337
+ }
6338
+ }
6339
+ }
6340
+ for (let index = 0; index < deletedControls.length; index++) {
6341
+ const element = deletedControls[index];
6342
+ for (const key in element) {
6343
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
6344
+ this.repeaterGroup.removeControl(key);
6345
+ }
6346
+ }
6347
+ }
6348
+ this.items = this.items.filter((res) => res != this.items[Index]);
6349
+ }
6350
+ addItem() {
6351
+ this.items.push(this.items[this.items.length - 1] + 1);
6352
+ }
6353
+ }
6354
+ RepeaterTableComponent.decorators = [
6355
+ { type: Component, args: [{
6356
+ selector: 'BBSF-repeater-table',
6357
+ template: "<div class=\"b-control b-repeater-table\">\r\n <table class=\"{{options.RepeaterTableExtraClasses}}\">\r\n <thead>\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" class=\"min-w-150px\">{{item.HeaderTitle}}</th>\r\n <th>{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td>\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired) ||(originalItems.length-1>=i)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <tr>\r\n <td colspan=\"3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 d-grid gap-2\"> \r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\"><span\r\n [innerHTML]=\"options.AddButtonText\"></span></button>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tfoot>\r\n </table>\r\n</div>"
6358
+ },] }
6359
+ ];
6360
+ RepeaterTableComponent.ctorParameters = () => [
6361
+ { type: UtilityService }
6362
+ ];
6363
+ RepeaterTableComponent.propDecorators = {
6364
+ group: [{ type: Input }],
6365
+ options: [{ type: Input }]
6366
+ };
6367
+
6208
6368
  let options;
6209
6369
  let AppInjector;
6210
6370
  FullCalendarModule.registerPlugins([
@@ -6252,6 +6412,7 @@ BBSFControlsModule.decorators = [
6252
6412
  RepeaterFieldBuilderComponent,
6253
6413
  NgTemplateNameDirective,
6254
6414
  RepeaterItemFieldComponent,
6415
+ RepeaterTableComponent
6255
6416
  ],
6256
6417
  imports: [
6257
6418
  CommonModule,
@@ -6346,6 +6507,7 @@ BBSFControlsModule.decorators = [
6346
6507
  RepeaterFieldBuilderComponent,
6347
6508
  NgTemplateNameDirective,
6348
6509
  RepeaterItemFieldComponent,
6510
+ RepeaterTableComponent
6349
6511
  ]
6350
6512
  },] }
6351
6513
  ];
@@ -6710,6 +6872,7 @@ class RepeaterField {
6710
6872
  class RepeaterOptions {
6711
6873
  constructor() {
6712
6874
  this.MinRequiredItems = 1;
6875
+ this.ActionLabelKey = "";
6713
6876
  this.AddButtonText = "Add";
6714
6877
  this.DeleteButtonText = "Delete";
6715
6878
  this.RepeaterValue = [];
@@ -7040,5 +7203,5 @@ var FileType;
7040
7203
  * Generated bundle index. Do not edit.
7041
7204
  */
7042
7205
 
7043
- 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 };
7206
+ 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, LanguageValidation, 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, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
7044
7207
  //# sourceMappingURL=bnsights-bbsf-controls.js.map