@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
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/angular'), require('@fullcalendar/daygrid'), require('@fullcalendar/timegrid'), require('@fullcalendar/list'), require('@fullcalendar/interaction'), require('@angular/core'), require('ng-block-ui'), require('@angular/forms'), require('@angular/http'), require('@angular/router'), require('ngx-toastr'), require('ngx-permissions'), require('@angular/cdk/overlay'), require('@ngrx/store-devtools'), require('@angular/common'), require('ngx-intl-tel-input'), require('@bnsights/bbsf-utilities'), require('ngx-bootstrap/datepicker'), require('rxjs'), require('ng2-file-upload'), require('class-transformer'), require('ng-pick-datetime'), require('ng-multiselect-dropdown'), require('angular2-multiselect-dropdown'), require('ngx-summernote'), require('ngx-mask'), require('@syncfusion/ej2-angular-popups'), require('ngx-dropzone'), require('angular-cropperjs'), require('ngx-image-cropper'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-translate/core'), require('@angular/common/http'), require('ngx-typeahead'), require('rxjs/operators'), require('ngx-tags-input'), require('@ng-select/ng-select'), require('ngx-infinite-scroll'), require('@agm/core'), require('@angular-material-extensions/google-maps-autocomplete'), require('@fullcalendar/core/locales/en-gb'), require('@fullcalendar/core/locales/ar'), require('ngx-bootstrap/typeahead'), require('@angular/material/slide-toggle'), require('@kolkov/angular-editor'), require('angular-ng-autocomplete'), require('ng-inline-svg'), require('sweetalert2'), require('@sweetalert2/ngx-sweetalert2')) :
3
- typeof define === 'function' && define.amd ? define('@bnsights/bbsf-controls', ['exports', '@fullcalendar/angular', '@fullcalendar/daygrid', '@fullcalendar/timegrid', '@fullcalendar/list', '@fullcalendar/interaction', '@angular/core', 'ng-block-ui', '@angular/forms', '@angular/http', '@angular/router', 'ngx-toastr', 'ngx-permissions', '@angular/cdk/overlay', '@ngrx/store-devtools', '@angular/common', 'ngx-intl-tel-input', '@bnsights/bbsf-utilities', 'ngx-bootstrap/datepicker', 'rxjs', 'ng2-file-upload', 'class-transformer', 'ng-pick-datetime', 'ng-multiselect-dropdown', 'angular2-multiselect-dropdown', 'ngx-summernote', 'ngx-mask', '@syncfusion/ej2-angular-popups', 'ngx-dropzone', 'angular-cropperjs', 'ngx-image-cropper', '@ng-bootstrap/ng-bootstrap', '@ngx-translate/core', '@angular/common/http', 'ngx-typeahead', 'rxjs/operators', 'ngx-tags-input', '@ng-select/ng-select', 'ngx-infinite-scroll', '@agm/core', '@angular-material-extensions/google-maps-autocomplete', '@fullcalendar/core/locales/en-gb', '@fullcalendar/core/locales/ar', 'ngx-bootstrap/typeahead', '@angular/material/slide-toggle', '@kolkov/angular-editor', 'angular-ng-autocomplete', 'ng-inline-svg', 'sweetalert2', '@sweetalert2/ngx-sweetalert2'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.bnsights = global.bnsights || {}, global.bnsights["bbsf-controls"] = {}), global.angular, global.dayGridPlugin, global.timeGridPlugin, global.listPlugin, global.interactionPlugin, global.ng.core, global.ngBlockUi, global.ng.forms, global.ng.http, global.ng.router, global.ngxToastr, global.ngxPermissions, global.ng.cdk.overlay, global.storeDevtools, global.ng.common, global.ngxIntlTelInput, global.bbsfUtilities, global.datepicker, global.rxjs, global.ng2FileUpload, global.classTransformer, global.ngPickDatetime, global.ngMultiselectDropdown, global.angular2MultiselectDropdown, global.ngxSummernote, global.ngxMask, global.ej2AngularPopups, global.ngxDropzone, global.angularCropperjs, global.ngxImageCropper, global.ngBootstrap, global.core$1, global.ng.common.http, global.ngxTypeahead, global.rxjs.operators, global.ngxTagsInput, global.ngSelect, global.ngxInfiniteScroll, global.core, global.googleMapsAutocomplete, global.enGbLocale, global.ArLocale, global.typeahead, global.ng.material.slideToggle, global.angularEditor, global.angularNgAutocomplete, global.ngInlineSvg, global.Swal, global.ngxSweetalert2));
5
- })(this, (function (exports, angular, dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, i0, ngBlockUi, forms, http, router, ngxToastr, ngxPermissions, overlay, storeDevtools, common, ngxIntlTelInput, bbsfUtilities, datepicker, rxjs, ng2FileUpload, classTransformer, ngPickDatetime, ngMultiselectDropdown, angular2MultiselectDropdown, ngxSummernote, ngxMask, ej2AngularPopups, ngxDropzone, angularCropperjs, ngxImageCropper, ngBootstrap, core$1, http$1, ngxTypeahead, operators, ngxTagsInput, ngSelect, ngxInfiniteScroll, core, googleMapsAutocomplete, enGbLocale, ArLocale, typeahead, slideToggle, angularEditor, angularNgAutocomplete, ngInlineSvg, Swal, ngxSweetalert2) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/angular'), require('@fullcalendar/daygrid'), require('@fullcalendar/timegrid'), require('@fullcalendar/list'), require('@fullcalendar/interaction'), require('@angular/core'), require('ng-block-ui'), require('@angular/forms'), require('@angular/http'), require('@angular/router'), require('ngx-toastr'), require('ngx-permissions'), require('@angular/cdk/overlay'), require('@ngrx/store-devtools'), require('@angular/common'), require('ngx-intl-tel-input'), require('@bnsights/bbsf-utilities'), require('ngx-bootstrap/datepicker'), require('rxjs'), require('ng-pick-datetime'), require('ng2-file-upload'), require('class-transformer'), require('ng-multiselect-dropdown'), require('angular2-multiselect-dropdown'), require('ngx-summernote'), require('ngx-mask'), require('@syncfusion/ej2-angular-popups'), require('ngx-dropzone'), require('angular-cropperjs'), require('ngx-image-cropper'), require('@ng-bootstrap/ng-bootstrap'), require('@ngx-translate/core'), require('@angular/common/http'), require('ngx-typeahead'), require('rxjs/operators'), require('ngx-tags-input'), require('@ng-select/ng-select'), require('ngx-infinite-scroll'), require('@agm/core'), require('@angular-material-extensions/google-maps-autocomplete'), require('@fullcalendar/core/locales/en-gb'), require('@fullcalendar/core/locales/ar'), require('ngx-bootstrap/typeahead'), require('@angular/material/slide-toggle'), require('@kolkov/angular-editor'), require('angular-ng-autocomplete'), require('ng-inline-svg'), require('sweetalert2'), require('@sweetalert2/ngx-sweetalert2')) :
3
+ typeof define === 'function' && define.amd ? define('@bnsights/bbsf-controls', ['exports', '@fullcalendar/angular', '@fullcalendar/daygrid', '@fullcalendar/timegrid', '@fullcalendar/list', '@fullcalendar/interaction', '@angular/core', 'ng-block-ui', '@angular/forms', '@angular/http', '@angular/router', 'ngx-toastr', 'ngx-permissions', '@angular/cdk/overlay', '@ngrx/store-devtools', '@angular/common', 'ngx-intl-tel-input', '@bnsights/bbsf-utilities', 'ngx-bootstrap/datepicker', 'rxjs', 'ng-pick-datetime', 'ng2-file-upload', 'class-transformer', 'ng-multiselect-dropdown', 'angular2-multiselect-dropdown', 'ngx-summernote', 'ngx-mask', '@syncfusion/ej2-angular-popups', 'ngx-dropzone', 'angular-cropperjs', 'ngx-image-cropper', '@ng-bootstrap/ng-bootstrap', '@ngx-translate/core', '@angular/common/http', 'ngx-typeahead', 'rxjs/operators', 'ngx-tags-input', '@ng-select/ng-select', 'ngx-infinite-scroll', '@agm/core', '@angular-material-extensions/google-maps-autocomplete', '@fullcalendar/core/locales/en-gb', '@fullcalendar/core/locales/ar', 'ngx-bootstrap/typeahead', '@angular/material/slide-toggle', '@kolkov/angular-editor', 'angular-ng-autocomplete', 'ng-inline-svg', 'sweetalert2', '@sweetalert2/ngx-sweetalert2'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.bnsights = global.bnsights || {}, global.bnsights["bbsf-controls"] = {}), global.angular, global.dayGridPlugin, global.timeGridPlugin, global.listPlugin, global.interactionPlugin, global.ng.core, global.ngBlockUi, global.ng.forms, global.ng.http, global.ng.router, global.ngxToastr, global.ngxPermissions, global.ng.cdk.overlay, global.storeDevtools, global.ng.common, global.ngxIntlTelInput, global.bbsfUtilities, global.datepicker, global.rxjs, global.ngPickDatetime, global.ng2FileUpload, global.classTransformer, global.ngMultiselectDropdown, global.angular2MultiselectDropdown, global.ngxSummernote, global.ngxMask, global.ej2AngularPopups, global.ngxDropzone, global.angularCropperjs, global.ngxImageCropper, global.ngBootstrap, global.core$1, global.ng.common.http, global.ngxTypeahead, global.rxjs.operators, global.ngxTagsInput, global.ngSelect, global.ngxInfiniteScroll, global.core, global.googleMapsAutocomplete, global.enGbLocale, global.ArLocale, global.typeahead, global.ng.material.slideToggle, global.angularEditor, global.angularNgAutocomplete, global.ngInlineSvg, global.Swal, global.ngxSweetalert2));
5
+ })(this, (function (exports, angular, dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin, i0, ngBlockUi, forms, http, router, ngxToastr, ngxPermissions, overlay, storeDevtools, common, ngxIntlTelInput, bbsfUtilities, datepicker, rxjs, ngPickDatetime, ng2FileUpload, classTransformer, ngMultiselectDropdown, angular2MultiselectDropdown, ngxSummernote, ngxMask, ej2AngularPopups, ngxDropzone, angularCropperjs, ngxImageCropper, ngBootstrap, core$1, http$1, ngxTypeahead, operators, ngxTagsInput, ngSelect, ngxInfiniteScroll, core, googleMapsAutocomplete, enGbLocale, ArLocale, typeahead, slideToggle, angularEditor, angularNgAutocomplete, ngInlineSvg, Swal, ngxSweetalert2) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -79,22 +79,22 @@
79
79
  result = this.utilityService.getResourceValue("NumberValidationKey");
80
80
  break;
81
81
  case "maxlength":
82
- result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + error.value.requiredLength;
82
+ result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + " " + error.value.requiredLength;
83
83
  break;
84
84
  case "minlength":
85
- result = this.utilityService.getResourceValue("MinLenghtValidationKey") + error.value.requiredLength;
85
+ result = this.utilityService.getResourceValue("MinLenghtValidationKey") + " " + error.value.requiredLength;
86
86
  break;
87
87
  case "min":
88
- result = this.utilityService.getResourceValue("MinValueValidationKey") + error.value.min;
88
+ result = this.utilityService.getResourceValue("MinValueValidationKey") + " " + error.value.min;
89
89
  break;
90
90
  case "max":
91
- result = this.utilityService.getResourceValue("MaxValueValidationKey") + error.value.max;
91
+ result = this.utilityService.getResourceValue("MaxValueValidationKey") + " " + error.value.max;
92
92
  break;
93
93
  case "validatePhoneNumber":
94
94
  result = this.utilityService.getResourceValue("PhoneNumberValidationKey");
95
95
  break;
96
96
  case "mask":
97
- result = this.utilityService.getResourceValue("MaskValidationKey") + error.value.requiredMask;
97
+ result = this.utilityService.getResourceValue("MaskValidationKey") + " " + error.value.requiredMask;
98
98
  break;
99
99
  case "PasswordComplexityHasNumber":
100
100
  result = this.utilityService.getResourceValue("PasswordComplexityHasNumber");
@@ -115,25 +115,25 @@
115
115
  result = this.utilityService.getResourceValue("PasswordComplexityHasSpecialLetter");
116
116
  break;
117
117
  case "MaxWordCountValidationKey":
118
- result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + error.value;
118
+ result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + " " + error.value;
119
119
  break;
120
120
  case "NewSelectionValidationKey":
121
121
  result = this.utilityService.getResourceValue("NewSelectionValidationKey");
122
122
  break;
123
123
  case "MaxFileCountValidationKey":
124
- result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + error.value;
124
+ result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + " " + error.value;
125
125
  break;
126
126
  case "MinFileCountValidationKey":
127
- result = this.utilityService.getResourceValue("MinFileCountValidationKey") + error.value;
127
+ result = this.utilityService.getResourceValue("MinFileCountValidationKey") + " " + error.value;
128
128
  break;
129
129
  case "MaxSizeForAllFilesInMB":
130
- result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + error.value;
130
+ result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + " " + error.value;
131
131
  break;
132
132
  case "FileMaxSizeInMB":
133
- result = this.utilityService.getResourceValue("FileMaxSizeInMB") + error.value;
133
+ result = this.utilityService.getResourceValue("FileMaxSizeInMB") + " " + error.value;
134
134
  break;
135
135
  case "ToolTipTypeError":
136
- result = this.utilityService.getResourceValue("ToolTipTypeError") + error.value;
136
+ result = this.utilityService.getResourceValue("ToolTipTypeError") + " " + error.value;
137
137
  break;
138
138
  default:
139
139
  break;
@@ -328,7 +328,7 @@
328
328
 
329
329
  var DateInputComponent = /** @class */ (function () {
330
330
  // tslint:disable-next-line: max-line-length
331
- function DateInputComponent(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService) {
331
+ function DateInputComponent(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService, dateTimeAdapter) {
332
332
  var _this = this;
333
333
  this.datepipe = datepipe;
334
334
  this.onChangeService = onChangeService;
@@ -339,6 +339,7 @@
339
339
  this.UtilityService = UtilityService;
340
340
  this.translate = translate;
341
341
  this.controlValidationService = controlValidationService;
342
+ this.dateTimeAdapter = dateTimeAdapter;
342
343
  this.OnChange = new i0.EventEmitter();
343
344
  this.markAllAsTouched = false;
344
345
  this.validationRules = [];
@@ -370,6 +371,8 @@
370
371
  }
371
372
  DateInputComponent.prototype.ngOnInit = function () {
372
373
  var _this = this;
374
+ // Update the DateTimeAdapter Language with the current thread langauge
375
+ this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
373
376
  this.controlValidationService.isCreatedBefor = false;
374
377
  this.group.addControl(this.options.Name, new forms.FormControl(''));
375
378
  this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
@@ -463,7 +466,8 @@
463
466
  { type: forms.FormGroupDirective },
464
467
  { type: bbsfUtilities.UtilityService },
465
468
  { type: bbsfUtilities.BBSFTranslateService },
466
- { type: bbsfUtilities.ControlValidationService }
469
+ { type: bbsfUtilities.ControlValidationService },
470
+ { type: ngPickDatetime.DateTimeAdapter }
467
471
  ]; };
468
472
  DateInputComponent.propDecorators = {
469
473
  group: [{ type: i0.Input }],
@@ -1293,7 +1297,7 @@
1293
1297
  }
1294
1298
  this.showInputUsingLanguageMode();
1295
1299
  this.ArabicValidationRules.push(forms.Validators.compose([
1296
- this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
1300
+ this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
1297
1301
  ]));
1298
1302
  this.EnglishValidationRules.push(forms.Validators.compose([
1299
1303
  this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
@@ -1494,7 +1498,7 @@
1494
1498
  MultiLingualTextBoxComponent.decorators = [
1495
1499
  { type: i0.Component, args: [{
1496
1500
  selector: 'BBSF-MultiLingualTextBox',
1497
- 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",
1501
+ 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",
1498
1502
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
1499
1503
  },] }
1500
1504
  ];
@@ -1643,7 +1647,7 @@
1643
1647
  TextAreaComponent.decorators = [
1644
1648
  { type: i0.Component, args: [{
1645
1649
  selector: 'BBSF-TextArea',
1646
- 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",
1650
+ 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",
1647
1651
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
1648
1652
  },] }
1649
1653
  ];
@@ -1786,7 +1790,7 @@
1786
1790
  }
1787
1791
  this.showInputUsingLanguageMode();
1788
1792
  this.ArabicValidationRules.push(forms.Validators.compose([
1789
- this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
1793
+ this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
1790
1794
  ]));
1791
1795
  this.EnglishValidationRules.push(forms.Validators.compose([
1792
1796
  this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
@@ -1976,7 +1980,7 @@
1976
1980
  MultiLingualTextAreaComponent.decorators = [
1977
1981
  { type: i0.Component, args: [{
1978
1982
  selector: 'BBSF-MultiLingualTextArea',
1979
- 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",
1983
+ 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",
1980
1984
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
1981
1985
  },] }
1982
1986
  ];
@@ -3182,10 +3186,10 @@
3182
3186
  var TypeToolTipe = element.split('/')[1];
3183
3187
  this.ToolTipTypeArray.push(TypeToolTipe);
3184
3188
  }
3185
- this.ValidationMessage = this.ValidationMessage + (" Allowed extenstions (" + this.ToolTipTypeArray + ") ");
3189
+ this.ValidationMessage = this.ValidationMessage + this.UtilityService.getResourceValue("AllowedTypes") + (" (" + this.ToolTipTypeArray + ") ");
3186
3190
  }
3187
3191
  if (this.options.FileMaxSizeInMB > 0) {
3188
- this.ValidationMessage = this.ValidationMessage + (" <br />Max File Size " + this.options.FileMaxSizeInMB + " MB");
3192
+ this.ValidationMessage = this.ValidationMessage + (" <br /> " + this.UtilityService.getResourceValue("FileMaxSizeInMB") + " " + this.options.FileMaxSizeInMB);
3189
3193
  }
3190
3194
  if (this.options.FileUploadAcceptsTypes != null && this.options.FileUploadAcceptsTypes.length > 0) {
3191
3195
  }
@@ -3373,7 +3377,7 @@
3373
3377
  ImageUploaderComponent.decorators = [
3374
3378
  { type: i0.Component, args: [{
3375
3379
  selector: 'BBSF-ImageUpload',
3376
- 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",
3380
+ 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",
3377
3381
  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"]
3378
3382
  },] }
3379
3383
  ];
@@ -4672,6 +4676,12 @@
4672
4676
  OnChange: [{ type: i0.Output }]
4673
4677
  };
4674
4678
 
4679
+ exports.LanguageValidation = void 0;
4680
+ (function (LanguageValidation) {
4681
+ LanguageValidation[LanguageValidation["English"] = 1] = "English";
4682
+ LanguageValidation[LanguageValidation["Arabic"] = 2] = "Arabic";
4683
+ })(exports.LanguageValidation || (exports.LanguageValidation = {}));
4684
+
4675
4685
  var TextboxComponent = /** @class */ (function () {
4676
4686
  // tslint:disable-next-line: max-line-length
4677
4687
  function TextboxComponent(controlUtility, controlContainer, TextControlHost, UtilityService, controlValidationService, globalSettings) {
@@ -4773,18 +4783,18 @@
4773
4783
  }
4774
4784
  break;
4775
4785
  }
4776
- // if (this.options.ForceDirection==ForceDirection.Arabic)
4777
- // {
4778
- // this.validationRules.push(Validators.compose([
4779
- // this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
4780
- // ]));
4781
- // }
4782
- // else if (this.options.ForceDirection==ForceDirection.English)
4783
- // {
4784
- // this.validationRules.push(Validators.compose([
4785
- // this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
4786
- // ]));
4787
- // }
4786
+ if (this.options.LanguageValidation) {
4787
+ if (this.options.LanguageValidation == exports.LanguageValidation.Arabic) {
4788
+ this.validationRules.push(forms.Validators.compose([
4789
+ this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
4790
+ ]));
4791
+ }
4792
+ else if (this.options.LanguageValidation == exports.LanguageValidation.English) {
4793
+ this.validationRules.push(forms.Validators.compose([
4794
+ this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
4795
+ ]));
4796
+ }
4797
+ }
4788
4798
  if (this.options.CustomValidation.length > 0) {
4789
4799
  var Validations = this.options.CustomValidation;
4790
4800
  for (var index = 0; index < Validations.length; index++) {
@@ -4875,7 +4885,7 @@
4875
4885
  TextboxComponent.decorators = [
4876
4886
  { type: i0.Component, args: [{
4877
4887
  selector: 'BBSF-TextBox',
4878
- 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",
4888
+ 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",
4879
4889
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
4880
4890
  },] }
4881
4891
  ];
@@ -5523,7 +5533,7 @@
5523
5533
  showCancelButton: true,
5524
5534
  confirmButtonColor: this.btnColor,
5525
5535
  cancelButtonColor: '#f5f8fa',
5526
- cancelButtonText: this.utilityService.getResourceValue("Cancel"),
5536
+ cancelButtonText: this.utilityService.getResourceValue("CancelLabel"),
5527
5537
  confirmButtonText: this.options.SubmitButtonText,
5528
5538
  showCloseButton: true,
5529
5539
  }).then(function (result) {
@@ -5634,6 +5644,7 @@
5634
5644
  function RepeaterComponent() {
5635
5645
  this.templateRefs = [];
5636
5646
  this.items = [];
5647
+ this.originalItems = [];
5637
5648
  this.repeaterContext = { index: 0, delete: null, elements: null };
5638
5649
  }
5639
5650
  RepeaterComponent.prototype.ngOnInit = function () {
@@ -5641,10 +5652,16 @@
5641
5652
  this.currentTemplate = this.initialTemplate;
5642
5653
  this.repeaterGroup = new forms.FormGroup({});
5643
5654
  this.group.addControl(this.options.Name, this.repeaterGroup);
5644
- this.group.get(this.options.Name).setValue(this.options.RepeaterValue);
5645
- for (var index = 0; index < this.options.MinRequiredItems; index++) {
5646
- this.items.push(index);
5655
+ if (this.options.RepeaterValue.length > 0) {
5656
+ this.originalItems = this.options.RepeaterValue;
5657
+ for (var index = 0; index < this.options.RepeaterValue.length; index++) {
5658
+ this.items.push(index + 1);
5659
+ }
5647
5660
  }
5661
+ else
5662
+ for (var index = 0; index < this.options.MinRequiredItems; index++) {
5663
+ this.items.push(index);
5664
+ }
5648
5665
  this.repeaterGroup.valueChanges.subscribe(function (res) {
5649
5666
  var _a, _b;
5650
5667
  var result = [];
@@ -5689,6 +5706,7 @@
5689
5706
  };
5690
5707
  RepeaterComponent.prototype.deleteItem = function (Index) {
5691
5708
  var _a;
5709
+ var _this = this;
5692
5710
  if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
5693
5711
  return;
5694
5712
  var deletedControls = [];
@@ -5713,11 +5731,10 @@
5713
5731
  }
5714
5732
  }
5715
5733
  }
5716
- var item = this.items[Index];
5717
- this.items = this.items.filter(function (res) { return res != item; });
5734
+ this.items = this.items.filter(function (res) { return res != _this.items[Index]; });
5718
5735
  };
5719
- RepeaterComponent.prototype.AddItem = function () {
5720
- this.items.push(this.items.length + 1);
5736
+ RepeaterComponent.prototype.addItem = function () {
5737
+ this.items.push(this.items[this.items.length - 1] + 1);
5721
5738
  };
5722
5739
  RepeaterComponent.prototype.ngAfterViewInit = function () {
5723
5740
  var templateRefs = this._templates["_results"].map(function (item) { return item["template"]; });
@@ -5733,7 +5750,7 @@
5733
5750
  RepeaterComponent.decorators = [
5734
5751
  { type: i0.Component, args: [{
5735
5752
  selector: 'BBSF-repeater',
5736
- 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> -->",
5753
+ 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",
5737
5754
  styles: [""]
5738
5755
  },] }
5739
5756
  ];
@@ -5958,6 +5975,8 @@
5958
5975
  this.CustomValidation = [];
5959
5976
  /** to set Direction of textbox if textbox is Arabic or English */
5960
5977
  this.ForceDirection = null;
5978
+ /** to set Language of textbox if textbox language is Arabic or English */
5979
+ this.LanguageValidation = null;
5961
5980
  /** Set Type of TextBox ("text","password","email","number") */
5962
5981
  this.Type = exports.InputType.Text;
5963
5982
  this.IconPosition = exports.IconPosition.left;
@@ -5998,12 +6017,24 @@
5998
6017
  function RepeaterFieldBuilderComponent(renderComponentService, TextControlHost) {
5999
6018
  this.renderComponentService = renderComponentService;
6000
6019
  this.TextControlHost = TextControlHost;
6020
+ this.itemsValue = [];
6021
+ this.itemValue = null;
6001
6022
  }
6002
6023
  RepeaterFieldBuilderComponent.prototype.ngOnInit = function () {
6003
6024
  };
6004
6025
  RepeaterFieldBuilderComponent.prototype.ngAfterViewInit = function () {
6005
6026
  var _this = this;
6006
6027
  setTimeout(function () {
6028
+ if (_this.itemsValue.length > 0)
6029
+ _this.itemValue = _this.itemsValue[_this.itemNumber];
6030
+ if (_this.itemValue) {
6031
+ for (var key in _this.itemValue) {
6032
+ if (Object.prototype.hasOwnProperty.call(_this.itemValue, key) && key == _this.RepeaterField.ControlOptions.Name) {
6033
+ var element = _this.itemValue[key];
6034
+ _this.value = element;
6035
+ }
6036
+ }
6037
+ }
6007
6038
  _this.Item.clear();
6008
6039
  switch (_this.RepeaterField.ControlType) {
6009
6040
  ///TextBox
@@ -6016,10 +6047,12 @@
6016
6047
  Text.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6017
6048
  Text.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6018
6049
  Text.Type = exports.InputType.Text;
6050
+ Text.LanguageValidation = _this.RepeaterField.ControlOptions.LanguageValidation;
6019
6051
  if (_this.RepeaterField.ControlOptions.maxLength)
6020
6052
  Text.MaxLength = _this.RepeaterField.ControlOptions.maxLength;
6021
6053
  if (_this.RepeaterField.ControlOptions.minLength)
6022
6054
  Text.MinLength = _this.RepeaterField.ControlOptions.minLength;
6055
+ Text.Value = _this.value;
6023
6056
  _this.renderComponentService.renderDynamicComponent(_this.Item, TextboxComponent, _this.group, Text);
6024
6057
  break;
6025
6058
  case exports.DataType.Name:
@@ -6029,12 +6062,14 @@
6029
6062
  Name.LabelKey = _this.RepeaterField.ControlOptions.LabelKey;
6030
6063
  Name.IsRequired = _this.RepeaterField.ControlOptions.IsRequired;
6031
6064
  Name.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6065
+ Name.LanguageValidation = _this.RepeaterField.ControlOptions.LanguageValidation;
6032
6066
  Name.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6033
6067
  if (_this.RepeaterField.ControlOptions.maxLength)
6034
6068
  Name.MaxLength = _this.RepeaterField.ControlOptions.maxLength;
6035
6069
  if (_this.RepeaterField.ControlOptions.minLength)
6036
6070
  Name.MinLength = _this.RepeaterField.ControlOptions.minLength;
6037
6071
  Name.Type = exports.InputType.Text;
6072
+ Name.Value = _this.value;
6038
6073
  _this.renderComponentService.renderDynamicComponent(_this.Item, TextboxComponent, _this.group, Name);
6039
6074
  break;
6040
6075
  case exports.DataType.Email:
@@ -6044,8 +6079,10 @@
6044
6079
  Email.LabelKey = _this.RepeaterField.ControlOptions.LabelKey;
6045
6080
  Email.IsRequired = _this.RepeaterField.ControlOptions.IsRequired;
6046
6081
  Email.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6082
+ Email.LanguageValidation = _this.RepeaterField.ControlOptions.LanguageValidation;
6047
6083
  Email.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6048
6084
  Email.Type = exports.InputType.Email;
6085
+ Email.Value = _this.value;
6049
6086
  _this.renderComponentService.renderDynamicComponent(_this.Item, TextboxComponent, _this.group, Email);
6050
6087
  break;
6051
6088
  case exports.DataType.Number:
@@ -6055,12 +6092,14 @@
6055
6092
  Number.LabelKey = _this.RepeaterField.ControlOptions.LabelKey;
6056
6093
  Number.IsRequired = _this.RepeaterField.ControlOptions.IsRequired;
6057
6094
  Number.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6095
+ Number.LanguageValidation = _this.RepeaterField.ControlOptions.LanguageValidation;
6058
6096
  Number.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6059
6097
  Number.Type = exports.InputType.Number;
6060
6098
  var rangeNumber = new RangeNumber();
6061
6099
  rangeNumber.To = _this.RepeaterField.ControlOptions.maxLength;
6062
6100
  rangeNumber.From = _this.RepeaterField.ControlOptions.minLength;
6063
6101
  Number.NumberRange = rangeNumber;
6102
+ Number.Value = _this.value;
6064
6103
  _this.renderComponentService.renderDynamicComponent(_this.Item, TextboxComponent, _this.group, Number);
6065
6104
  break;
6066
6105
  ///DateTime
@@ -6075,6 +6114,7 @@
6075
6114
  Date.PickerType = exports.PickerType.Calendar;
6076
6115
  Date.SelectMode = exports.SelectMode.Single;
6077
6116
  Date.StartView = exports.StartView.Month;
6117
+ Date.Value = _this.value;
6078
6118
  _this.renderComponentService.renderDynamicComponent(_this.Item, DateInputComponent, _this.group, Date);
6079
6119
  break;
6080
6120
  case exports.DataType.DateTime:
@@ -6088,6 +6128,7 @@
6088
6128
  DateTime.PickerType = exports.PickerType.Both;
6089
6129
  DateTime.SelectMode = exports.SelectMode.Single;
6090
6130
  DateTime.StartView = exports.StartView.Month;
6131
+ DateTime.Value = _this.value;
6091
6132
  _this.renderComponentService.renderDynamicComponent(_this.Item, DateInputComponent, _this.group, DateTime);
6092
6133
  break;
6093
6134
  case exports.DataType.Time:
@@ -6101,6 +6142,7 @@
6101
6142
  Time.PickerType = exports.PickerType.Timer;
6102
6143
  Time.SelectMode = exports.SelectMode.Single;
6103
6144
  Time.StartView = exports.StartView.Month;
6145
+ Time.Value = _this.value;
6104
6146
  _this.renderComponentService.renderDynamicComponent(_this.Item, DateInputComponent, _this.group, Time);
6105
6147
  break;
6106
6148
  //Dropdown
@@ -6116,6 +6158,7 @@
6116
6158
  SingleSelect.SingleSelection = true;
6117
6159
  SingleSelect.ShowCheckbox = false;
6118
6160
  SingleSelect.AllowSearchFilter = _this.RepeaterField.ControlOptions.hasSearch;
6161
+ SingleSelect.SelectedItems = _this.value;
6119
6162
  _this.renderComponentService.renderDynamicComponent(_this.Item, DropdownListComponent, _this.group, SingleSelect);
6120
6163
  break;
6121
6164
  case exports.DataType.MulipleSelect:
@@ -6130,6 +6173,7 @@
6130
6173
  MulipleSelect.SingleSelection = false;
6131
6174
  MulipleSelect.ShowCheckbox = false;
6132
6175
  MulipleSelect.AllowSearchFilter = _this.RepeaterField.ControlOptions.hasSearch;
6176
+ MulipleSelect.SelectedItems = _this.value;
6133
6177
  _this.renderComponentService.renderDynamicComponent(_this.Item, DropdownListComponent, _this.group, MulipleSelect);
6134
6178
  break;
6135
6179
  case exports.DataType.Goal:
@@ -6144,6 +6188,7 @@
6144
6188
  Goal.SingleSelection = !_this.RepeaterField.ControlOptions.isMultiple;
6145
6189
  Goal.ShowCheckbox = false;
6146
6190
  Goal.AllowSearchFilter = _this.RepeaterField.ControlOptions.hasSearch;
6191
+ Goal.SelectedItems = _this.value;
6147
6192
  _this.renderComponentService.renderDynamicComponent(_this.Item, DropdownListComponent, _this.group, Goal);
6148
6193
  break;
6149
6194
  case exports.DataType.Challenge:
@@ -6159,6 +6204,7 @@
6159
6204
  Challenge.SingleSelection = !_this.RepeaterField.ControlOptions.isMultiple;
6160
6205
  Challenge.ShowCheckbox = false;
6161
6206
  Challenge.AllowSearchFilter = _this.RepeaterField.ControlOptions.hasSearch;
6207
+ Challenge.SelectedItems = _this.value;
6162
6208
  _this.renderComponentService.renderDynamicComponent(_this.Item, DropdownListComponent, _this.group, Challenge);
6163
6209
  break;
6164
6210
  case exports.DataType.InnovationLab:
@@ -6173,6 +6219,7 @@
6173
6219
  InnovationLab.SingleSelection = !_this.RepeaterField.ControlOptions.isMultiple;
6174
6220
  InnovationLab.ShowCheckbox = false;
6175
6221
  InnovationLab.AllowSearchFilter = _this.RepeaterField.ControlOptions.hasSearch;
6222
+ InnovationLab.SelectedItems = _this.value;
6176
6223
  _this.renderComponentService.renderDynamicComponent(_this.Item, DropdownListComponent, _this.group, InnovationLab);
6177
6224
  break;
6178
6225
  case exports.DataType.Country:
@@ -6187,6 +6234,7 @@
6187
6234
  Country.SingleSelection = !_this.RepeaterField.ControlOptions.isMultiple;
6188
6235
  Country.ShowCheckbox = false;
6189
6236
  Country.AllowSearchFilter = _this.RepeaterField.ControlOptions.hasSearch;
6237
+ Country.SelectedItems = _this.value;
6190
6238
  _this.renderComponentService.renderDynamicComponent(_this.Item, DropdownListComponent, _this.group, Country);
6191
6239
  break;
6192
6240
  //FileUpload
@@ -6199,6 +6247,7 @@
6199
6247
  File.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6200
6248
  File.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6201
6249
  File.FileMaxSizeInMB = _this.RepeaterField.ControlOptions.maxFileSizeInMB;
6250
+ File.Value = _this.value;
6202
6251
  _this.renderComponentService.renderDynamicComponent(_this.Item, FileUploadComponent, _this.group, File);
6203
6252
  break;
6204
6253
  case exports.DataType.MultiFile:
@@ -6212,6 +6261,7 @@
6212
6261
  MultiFile.MaxSizeForAllFilesInMB = _this.RepeaterField.ControlOptions.maxFileSizeInMB;
6213
6262
  MultiFile.MaxNoOfFiles = _this.RepeaterField.ControlOptions.maxFileCount;
6214
6263
  MultiFile.IsMultipleFile = true;
6264
+ MultiFile.Value = _this.value;
6215
6265
  _this.renderComponentService.renderDynamicComponent(_this.Item, FileUploadComponent, _this.group, MultiFile);
6216
6266
  break;
6217
6267
  //ImageUpload
@@ -6225,6 +6275,7 @@
6225
6275
  Image.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6226
6276
  if (_this.RepeaterField.ControlOptions.maxFileSizeInMB)
6227
6277
  Image.FileMaxSizeInMB = _this.RepeaterField.ControlOptions.maxFileSizeInMB;
6278
+ Image.Value = _this.value;
6228
6279
  _this.renderComponentService.renderDynamicComponent(_this.Item, ImageUploaderComponent, _this.group, Image);
6229
6280
  break;
6230
6281
  case exports.DataType.CoverPhoto:
@@ -6237,6 +6288,7 @@
6237
6288
  CoverPhoto.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6238
6289
  if (_this.RepeaterField.ControlOptions.maxFileSizeInMB)
6239
6290
  CoverPhoto.FileMaxSizeInMB = _this.RepeaterField.ControlOptions.maxFileSizeInMB;
6291
+ CoverPhoto.Value = _this.value;
6240
6292
  _this.renderComponentService.renderDynamicComponent(_this.Item, ImageUploaderComponent, _this.group, CoverPhoto);
6241
6293
  break;
6242
6294
  //Mobile
@@ -6252,6 +6304,7 @@
6252
6304
  Mobile.PhoneValidation = true;
6253
6305
  Mobile.SelectFirstCountry = true;
6254
6306
  Mobile.EnablePlaceholder = true;
6307
+ Mobile.Value = _this.value;
6255
6308
  _this.renderComponentService.renderDynamicComponent(_this.Item, PhoneComponent, _this.group, Mobile);
6256
6309
  break;
6257
6310
  //MultilineText
@@ -6269,6 +6322,7 @@
6269
6322
  MultilineText.MinLength = _this.RepeaterField.ControlOptions.minLength;
6270
6323
  MultilineText.Rows = _this.RepeaterField.ControlOptions.rows;
6271
6324
  MultilineText.ForceDirection = _this.RepeaterField.ControlOptions.ForceDirection;
6325
+ MultilineText.Value = _this.value;
6272
6326
  _this.renderComponentService.renderDynamicComponent(_this.Item, TextAreaComponent, _this.group, MultilineText);
6273
6327
  break;
6274
6328
  //HTML
@@ -6286,6 +6340,7 @@
6286
6340
  HTML.MinLength = _this.RepeaterField.ControlOptions.minLength;
6287
6341
  HTML.Height = _this.RepeaterField.ControlOptions.rows;
6288
6342
  HTML.ForceDirection = _this.RepeaterField.ControlOptions.ForceDirection;
6343
+ HTML.Value = _this.value;
6289
6344
  _this.renderComponentService.renderDynamicComponent(_this.Item, HtmlEditorComponent, _this.group, HTML);
6290
6345
  break;
6291
6346
  //Boolean
@@ -6295,6 +6350,7 @@
6295
6350
  Boolean.HideLabel = _this.RepeaterField.ControlOptions.HideLabel;
6296
6351
  Boolean.LabelKey = _this.RepeaterField.ControlOptions.LabelKey;
6297
6352
  Boolean.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6353
+ Boolean.Value = _this.value;
6298
6354
  Boolean.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6299
6355
  _this.renderComponentService.renderDynamicComponent(_this.Item, ToggleslideComponent, _this.group, Boolean);
6300
6356
  break;
@@ -6306,6 +6362,7 @@
6306
6362
  Location.LabelKey = _this.RepeaterField.ControlOptions.LabelKey;
6307
6363
  Location.IsRequired = _this.RepeaterField.ControlOptions.IsRequired;
6308
6364
  Location.ViewType = _this.RepeaterField.ControlOptions.ViewType;
6365
+ Location.Value = _this.value;
6309
6366
  Location.LabelDescription = _this.RepeaterField.ControlOptions.LabelDescription ? _this.RepeaterField.ControlOptions.LabelDescription : "";
6310
6367
  _this.renderComponentService.renderDynamicComponent(_this.Item, MapAutoCompleteComponent, _this.group, Location);
6311
6368
  break;
@@ -6315,341 +6372,342 @@
6315
6372
  }, 0);
6316
6373
  };
6317
6374
  RepeaterFieldBuilderComponent.prototype.ngOnChanges = function (changes) {
6318
- if (changes.itemNumber.previousValue) {
6319
- var name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
6320
- var value = this.group.controls[name].value;
6321
- this.Item.clear();
6322
- this.group.removeControl(name);
6323
- switch (this.RepeaterField.ControlType) {
6324
- ///TextBox
6325
- case exports.DataType.Text:
6326
- var Text = new TextBoxOptions();
6327
- Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6328
- Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6329
- Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6330
- Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6331
- Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
6332
- Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6333
- Text.Type = exports.InputType.Text;
6334
- if (this.RepeaterField.ControlOptions.maxLength)
6335
- Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6336
- if (this.RepeaterField.ControlOptions.minLength)
6337
- Text.MinLength = this.RepeaterField.ControlOptions.minLength;
6338
- Text.Value = value;
6339
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
6340
- break;
6341
- case exports.DataType.Name:
6342
- var Name = new TextBoxOptions();
6343
- Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6344
- Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6345
- Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6346
- Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6347
- Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
6348
- Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6349
- if (this.RepeaterField.ControlOptions.maxLength)
6350
- Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6351
- if (this.RepeaterField.ControlOptions.minLength)
6352
- Name.MinLength = this.RepeaterField.ControlOptions.minLength;
6353
- Name.Type = exports.InputType.Text;
6354
- Name.Value = value;
6355
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
6356
- break;
6357
- case exports.DataType.Email:
6358
- var Email = new TextBoxOptions();
6359
- Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6360
- Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6361
- Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6362
- Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6363
- Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
6364
- Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6365
- Email.Type = exports.InputType.Email;
6366
- Email.Value = value;
6367
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
6368
- break;
6369
- case exports.DataType.Number:
6370
- var Number = new TextBoxOptions();
6371
- Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6372
- Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6373
- Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6374
- Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6375
- Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
6376
- Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6377
- Number.Type = exports.InputType.Number;
6378
- var rangeNumber = new RangeNumber();
6379
- rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
6380
- rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
6381
- Number.NumberRange = rangeNumber;
6382
- Number.Value = value;
6383
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
6384
- break;
6385
- ///DateTime
6386
- case exports.DataType.Date:
6387
- var Date = new DatePickerOptions();
6388
- Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6389
- Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6390
- Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6391
- Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6392
- Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
6393
- Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6394
- Date.PickerType = exports.PickerType.Calendar;
6395
- Date.SelectMode = exports.SelectMode.Single;
6396
- Date.StartView = exports.StartView.Month;
6397
- Date.Value = value;
6398
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
6399
- break;
6400
- case exports.DataType.DateTime:
6401
- var DateTime = new DatePickerOptions();
6402
- DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6403
- DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6404
- DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6405
- DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6406
- DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
6407
- DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6408
- DateTime.PickerType = exports.PickerType.Both;
6409
- DateTime.SelectMode = exports.SelectMode.Single;
6410
- DateTime.StartView = exports.StartView.Month;
6411
- DateTime.Value = value;
6412
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
6413
- break;
6414
- case exports.DataType.Time:
6415
- var Time = new DatePickerOptions();
6416
- Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6417
- Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6418
- Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6419
- Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6420
- Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
6421
- Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6422
- Time.PickerType = exports.PickerType.Timer;
6423
- Time.SelectMode = exports.SelectMode.Single;
6424
- Time.StartView = exports.StartView.Month;
6425
- Time.Value = value;
6426
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
6427
- break;
6428
- //Dropdown
6429
- case exports.DataType.SingleSelect:
6430
- var SingleSelect = new DropdownOptions();
6431
- SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6432
- SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6433
- SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6434
- SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6435
- SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
6436
- SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6437
- SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
6438
- SingleSelect.SingleSelection = true;
6439
- SingleSelect.ShowCheckbox = false;
6440
- SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6441
- SingleSelect.SelectedItems = value;
6442
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
6443
- break;
6444
- case exports.DataType.MulipleSelect:
6445
- var MulipleSelect = new DropdownOptions();
6446
- MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6447
- MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6448
- MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6449
- MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6450
- MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
6451
- MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6452
- MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
6453
- MulipleSelect.SingleSelection = false;
6454
- MulipleSelect.ShowCheckbox = false;
6455
- MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6456
- MulipleSelect.SelectedItems = value;
6457
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
6458
- break;
6459
- case exports.DataType.Goal:
6460
- var Goal = new DropdownOptions();
6461
- Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6462
- Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6463
- Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6464
- Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6465
- Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
6466
- Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6467
- Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
6468
- Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6469
- Goal.ShowCheckbox = false;
6470
- Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6471
- Goal.SelectedItems = value;
6472
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
6473
- break;
6474
- case exports.DataType.Challenge:
6475
- var Challenge = new DropdownOptions();
6476
- Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6477
- Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6478
- Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6479
- Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6480
- Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
6481
- Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6482
- Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6483
- Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6484
- Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6485
- Challenge.ShowCheckbox = false;
6486
- Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6487
- Challenge.SelectedItems = value;
6488
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
6489
- break;
6490
- case exports.DataType.InnovationLab:
6491
- var InnovationLab = new DropdownOptions();
6492
- InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6493
- InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6494
- InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6495
- InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6496
- InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
6497
- InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6498
- InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
6499
- InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6500
- InnovationLab.ShowCheckbox = false;
6501
- InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6502
- InnovationLab.SelectedItems = value;
6503
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
6504
- break;
6505
- case exports.DataType.Country:
6506
- var Country = new DropdownOptions();
6507
- Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6508
- Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6509
- Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6510
- Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6511
- Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
6512
- Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6513
- Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
6514
- Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6515
- Country.ShowCheckbox = false;
6516
- Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6517
- Country.SelectedItems = value;
6518
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
6519
- break;
6520
- //FileUpload
6521
- case exports.DataType.File:
6522
- var File = new FileUploadOptions();
6523
- File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6524
- File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6525
- File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6526
- File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6527
- File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6528
- File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6529
- File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6530
- File.Value = value;
6531
- this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
6532
- break;
6533
- case exports.DataType.MultiFile:
6534
- var MultiFile = new FileUploadOptions();
6535
- File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6536
- File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6537
- File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6538
- File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6539
- File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6540
- File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6541
- MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6542
- MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
6543
- MultiFile.IsMultipleFile = true;
6544
- MultiFile.Value = value;
6545
- this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
6546
- break;
6547
- //ImageUpload
6548
- case exports.DataType.Image:
6549
- var Image = new ImageUploadOptions();
6550
- Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6551
- Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6552
- Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6553
- Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6554
- Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
6555
- Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6556
- if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6557
- Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6558
- Image.Value = value;
6559
- this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
6560
- break;
6561
- case exports.DataType.CoverPhoto:
6562
- var CoverPhoto = new ImageUploadOptions();
6563
- CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6564
- CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6565
- CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6566
- CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6567
- CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
6568
- CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6569
- if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6570
- CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6571
- CoverPhoto.Value = value;
6572
- this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
6573
- break;
6574
- //Mobile
6575
- case exports.DataType.Mobile:
6576
- var Mobile = new PhoneOptions();
6577
- Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6578
- Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6579
- Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6580
- Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6581
- Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
6582
- Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6583
- Mobile.AllowSearch = true;
6584
- Mobile.PhoneValidation = true;
6585
- Mobile.SelectFirstCountry = true;
6586
- Mobile.EnablePlaceholder = true;
6587
- Mobile.Value = value;
6588
- this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
6589
- break;
6590
- //MultilineText
6591
- case exports.DataType.MultilineText:
6592
- var MultilineText = new TextAreaOptions();
6593
- MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6594
- MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6595
- MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6596
- MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6597
- MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
6598
- MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6599
- if (this.RepeaterField.ControlOptions.maxLength)
6600
- MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6601
- if (this.RepeaterField.ControlOptions.minLength)
6602
- MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
6603
- MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
6604
- MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6605
- MultilineText.Value = value;
6606
- this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
6607
- break;
6608
- //HTML
6609
- case exports.DataType.HTML:
6610
- var HTML = new HtmlEditorOptions();
6611
- HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6612
- HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6613
- HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6614
- HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6615
- HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
6616
- HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6617
- if (this.RepeaterField.ControlOptions.maxLength)
6618
- HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6619
- if (this.RepeaterField.ControlOptions.minLength)
6620
- HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
6621
- HTML.Height = this.RepeaterField.ControlOptions.rows;
6622
- HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6623
- HTML.Value = value;
6624
- this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
6625
- break;
6626
- //Boolean
6627
- case exports.DataType.Boolean:
6628
- var Boolean = new ToggleSlideOptions();
6629
- Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6630
- Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6631
- Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6632
- Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
6633
- Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6634
- Boolean.Value = value;
6635
- this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
6636
- break;
6637
- //Location
6638
- case exports.DataType.Location:
6639
- var Location = new MapAutoCompleteOptions();
6640
- Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6641
- Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6642
- Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6643
- Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6644
- Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
6645
- Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6646
- Location.Value = value;
6647
- this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
6648
- break;
6649
- default:
6650
- break;
6375
+ if (changes.itemNumber)
6376
+ if (changes.itemNumber.previousValue) {
6377
+ var name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
6378
+ var value = this.group.controls[name].value;
6379
+ this.Item.clear();
6380
+ this.group.removeControl(name);
6381
+ switch (this.RepeaterField.ControlType) {
6382
+ ///TextBox
6383
+ case exports.DataType.Text:
6384
+ var Text = new TextBoxOptions();
6385
+ Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6386
+ Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6387
+ Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6388
+ Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6389
+ Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
6390
+ Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6391
+ Text.Type = exports.InputType.Text;
6392
+ if (this.RepeaterField.ControlOptions.maxLength)
6393
+ Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6394
+ if (this.RepeaterField.ControlOptions.minLength)
6395
+ Text.MinLength = this.RepeaterField.ControlOptions.minLength;
6396
+ Text.Value = value;
6397
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
6398
+ break;
6399
+ case exports.DataType.Name:
6400
+ var Name = new TextBoxOptions();
6401
+ Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6402
+ Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6403
+ Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6404
+ Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6405
+ Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
6406
+ Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6407
+ if (this.RepeaterField.ControlOptions.maxLength)
6408
+ Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6409
+ if (this.RepeaterField.ControlOptions.minLength)
6410
+ Name.MinLength = this.RepeaterField.ControlOptions.minLength;
6411
+ Name.Type = exports.InputType.Text;
6412
+ Name.Value = value;
6413
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
6414
+ break;
6415
+ case exports.DataType.Email:
6416
+ var Email = new TextBoxOptions();
6417
+ Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6418
+ Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6419
+ Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6420
+ Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6421
+ Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
6422
+ Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6423
+ Email.Type = exports.InputType.Email;
6424
+ Email.Value = value;
6425
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
6426
+ break;
6427
+ case exports.DataType.Number:
6428
+ var Number = new TextBoxOptions();
6429
+ Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6430
+ Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6431
+ Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6432
+ Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6433
+ Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
6434
+ Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6435
+ Number.Type = exports.InputType.Number;
6436
+ var rangeNumber = new RangeNumber();
6437
+ rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
6438
+ rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
6439
+ Number.NumberRange = rangeNumber;
6440
+ Number.Value = value;
6441
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
6442
+ break;
6443
+ ///DateTime
6444
+ case exports.DataType.Date:
6445
+ var Date = new DatePickerOptions();
6446
+ Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6447
+ Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6448
+ Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6449
+ Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6450
+ Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
6451
+ Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6452
+ Date.PickerType = exports.PickerType.Calendar;
6453
+ Date.SelectMode = exports.SelectMode.Single;
6454
+ Date.StartView = exports.StartView.Month;
6455
+ Date.Value = value;
6456
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
6457
+ break;
6458
+ case exports.DataType.DateTime:
6459
+ var DateTime = new DatePickerOptions();
6460
+ DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6461
+ DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6462
+ DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6463
+ DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6464
+ DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
6465
+ DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6466
+ DateTime.PickerType = exports.PickerType.Both;
6467
+ DateTime.SelectMode = exports.SelectMode.Single;
6468
+ DateTime.StartView = exports.StartView.Month;
6469
+ DateTime.Value = value;
6470
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
6471
+ break;
6472
+ case exports.DataType.Time:
6473
+ var Time = new DatePickerOptions();
6474
+ Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6475
+ Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6476
+ Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6477
+ Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6478
+ Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
6479
+ Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6480
+ Time.PickerType = exports.PickerType.Timer;
6481
+ Time.SelectMode = exports.SelectMode.Single;
6482
+ Time.StartView = exports.StartView.Month;
6483
+ Time.Value = value;
6484
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
6485
+ break;
6486
+ //Dropdown
6487
+ case exports.DataType.SingleSelect:
6488
+ var SingleSelect = new DropdownOptions();
6489
+ SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6490
+ SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6491
+ SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6492
+ SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6493
+ SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
6494
+ SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6495
+ SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
6496
+ SingleSelect.SingleSelection = true;
6497
+ SingleSelect.ShowCheckbox = false;
6498
+ SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6499
+ SingleSelect.SelectedItems = value;
6500
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
6501
+ break;
6502
+ case exports.DataType.MulipleSelect:
6503
+ var MulipleSelect = new DropdownOptions();
6504
+ MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6505
+ MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6506
+ MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6507
+ MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6508
+ MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
6509
+ MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6510
+ MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
6511
+ MulipleSelect.SingleSelection = false;
6512
+ MulipleSelect.ShowCheckbox = false;
6513
+ MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6514
+ MulipleSelect.SelectedItems = value;
6515
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
6516
+ break;
6517
+ case exports.DataType.Goal:
6518
+ var Goal = new DropdownOptions();
6519
+ Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6520
+ Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6521
+ Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6522
+ Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6523
+ Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
6524
+ Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6525
+ Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
6526
+ Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6527
+ Goal.ShowCheckbox = false;
6528
+ Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6529
+ Goal.SelectedItems = value;
6530
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
6531
+ break;
6532
+ case exports.DataType.Challenge:
6533
+ var Challenge = new DropdownOptions();
6534
+ Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6535
+ Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6536
+ Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6537
+ Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6538
+ Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
6539
+ Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6540
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6541
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
6542
+ Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6543
+ Challenge.ShowCheckbox = false;
6544
+ Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6545
+ Challenge.SelectedItems = value;
6546
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
6547
+ break;
6548
+ case exports.DataType.InnovationLab:
6549
+ var InnovationLab = new DropdownOptions();
6550
+ InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6551
+ InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6552
+ InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6553
+ InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6554
+ InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
6555
+ InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6556
+ InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
6557
+ InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6558
+ InnovationLab.ShowCheckbox = false;
6559
+ InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6560
+ InnovationLab.SelectedItems = value;
6561
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
6562
+ break;
6563
+ case exports.DataType.Country:
6564
+ var Country = new DropdownOptions();
6565
+ Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6566
+ Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6567
+ Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6568
+ Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6569
+ Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
6570
+ Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6571
+ Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
6572
+ Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
6573
+ Country.ShowCheckbox = false;
6574
+ Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
6575
+ Country.SelectedItems = value;
6576
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
6577
+ break;
6578
+ //FileUpload
6579
+ case exports.DataType.File:
6580
+ var File = new FileUploadOptions();
6581
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6582
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6583
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6584
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6585
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6586
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6587
+ File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6588
+ File.Value = value;
6589
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
6590
+ break;
6591
+ case exports.DataType.MultiFile:
6592
+ var MultiFile = new FileUploadOptions();
6593
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6594
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6595
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6596
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6597
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
6598
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6599
+ MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6600
+ MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
6601
+ MultiFile.IsMultipleFile = true;
6602
+ MultiFile.Value = value;
6603
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
6604
+ break;
6605
+ //ImageUpload
6606
+ case exports.DataType.Image:
6607
+ var Image = new ImageUploadOptions();
6608
+ Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6609
+ Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6610
+ Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6611
+ Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6612
+ Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
6613
+ Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6614
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6615
+ Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6616
+ Image.Value = value;
6617
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
6618
+ break;
6619
+ case exports.DataType.CoverPhoto:
6620
+ var CoverPhoto = new ImageUploadOptions();
6621
+ CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6622
+ CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6623
+ CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6624
+ CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6625
+ CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
6626
+ CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6627
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
6628
+ CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
6629
+ CoverPhoto.Value = value;
6630
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
6631
+ break;
6632
+ //Mobile
6633
+ case exports.DataType.Mobile:
6634
+ var Mobile = new PhoneOptions();
6635
+ Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6636
+ Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6637
+ Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6638
+ Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6639
+ Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
6640
+ Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6641
+ Mobile.AllowSearch = true;
6642
+ Mobile.PhoneValidation = true;
6643
+ Mobile.SelectFirstCountry = true;
6644
+ Mobile.EnablePlaceholder = true;
6645
+ Mobile.Value = value;
6646
+ this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
6647
+ break;
6648
+ //MultilineText
6649
+ case exports.DataType.MultilineText:
6650
+ var MultilineText = new TextAreaOptions();
6651
+ MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6652
+ MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6653
+ MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6654
+ MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6655
+ MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
6656
+ MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6657
+ if (this.RepeaterField.ControlOptions.maxLength)
6658
+ MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6659
+ if (this.RepeaterField.ControlOptions.minLength)
6660
+ MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
6661
+ MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
6662
+ MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6663
+ MultilineText.Value = value;
6664
+ this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
6665
+ break;
6666
+ //HTML
6667
+ case exports.DataType.HTML:
6668
+ var HTML = new HtmlEditorOptions();
6669
+ HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6670
+ HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6671
+ HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6672
+ HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6673
+ HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
6674
+ HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6675
+ if (this.RepeaterField.ControlOptions.maxLength)
6676
+ HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
6677
+ if (this.RepeaterField.ControlOptions.minLength)
6678
+ HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
6679
+ HTML.Height = this.RepeaterField.ControlOptions.rows;
6680
+ HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
6681
+ HTML.Value = value;
6682
+ this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
6683
+ break;
6684
+ //Boolean
6685
+ case exports.DataType.Boolean:
6686
+ var Boolean = new ToggleSlideOptions();
6687
+ Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6688
+ Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6689
+ Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6690
+ Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
6691
+ Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6692
+ Boolean.Value = value;
6693
+ this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
6694
+ break;
6695
+ //Location
6696
+ case exports.DataType.Location:
6697
+ var Location = new MapAutoCompleteOptions();
6698
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
6699
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
6700
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
6701
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
6702
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
6703
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
6704
+ Location.Value = value;
6705
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
6706
+ break;
6707
+ default:
6708
+ break;
6709
+ }
6651
6710
  }
6652
- }
6653
6711
  };
6654
6712
  return RepeaterFieldBuilderComponent;
6655
6713
  }());
@@ -6668,7 +6726,8 @@
6668
6726
  group: [{ type: i0.Input }],
6669
6727
  itemNumber: [{ type: i0.Input }],
6670
6728
  controlNumber: [{ type: i0.Input }],
6671
- RepeaterField: [{ type: i0.Input }]
6729
+ RepeaterField: [{ type: i0.Input }],
6730
+ itemsValue: [{ type: i0.Input }]
6672
6731
  };
6673
6732
 
6674
6733
  var RepeaterItemFieldComponent = /** @class */ (function () {
@@ -6692,6 +6751,116 @@
6692
6751
  itemIndex: [{ type: i0.Input }]
6693
6752
  };
6694
6753
 
6754
+ var RepeaterTableComponent = /** @class */ (function () {
6755
+ function RepeaterTableComponent(utilityService) {
6756
+ this.utilityService = utilityService;
6757
+ this.items = [];
6758
+ this.originalItems = [];
6759
+ }
6760
+ RepeaterTableComponent.prototype.ngOnInit = function () {
6761
+ var _this = this;
6762
+ this.repeaterGroup = new forms.FormGroup({});
6763
+ this.group.addControl(this.options.Name, this.repeaterGroup);
6764
+ if (this.options.RepeaterValue.length > 0) {
6765
+ this.originalItems = this.options.RepeaterValue;
6766
+ for (var index = 0; index < this.options.RepeaterValue.length; index++) {
6767
+ this.items.push(index + 1);
6768
+ }
6769
+ }
6770
+ else
6771
+ for (var index = 0; index < this.options.MinRequiredItems; index++) {
6772
+ this.items.push(index);
6773
+ }
6774
+ this.repeaterGroup.valueChanges.subscribe(function (res) {
6775
+ var _a, _b;
6776
+ var result = [];
6777
+ var rowNumber = [];
6778
+ var addItems = [];
6779
+ for (var key in _this.repeaterGroup.controls) {
6780
+ if (Object.prototype.hasOwnProperty.call(_this.repeaterGroup.controls, key)) {
6781
+ var keySplitArr = key.split('.');
6782
+ var item = (_a = {},
6783
+ _a[keySplitArr[1]] = (_b = {}, _b[keySplitArr[0]] = _this.group.controls[_this.options.Name].value[key], _b),
6784
+ _a);
6785
+ addItems.push(item);
6786
+ if (!rowNumber.includes(keySplitArr[1]))
6787
+ rowNumber.push(keySplitArr[1]);
6788
+ }
6789
+ }
6790
+ var _loop_1 = function (index) {
6791
+ var row = rowNumber[index];
6792
+ var addObject = {};
6793
+ var filteredElements = addItems.filter(function (item) { return item[row]; });
6794
+ for (var index_1 = 0; index_1 < filteredElements.length; index_1++) {
6795
+ var filteredElement = filteredElements[index_1];
6796
+ for (var key in filteredElement) {
6797
+ if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
6798
+ var element = filteredElement[key];
6799
+ for (var key_1 in element) {
6800
+ if (Object.prototype.hasOwnProperty.call(element, key_1)) {
6801
+ var value = element[key_1];
6802
+ addObject[key_1] = value;
6803
+ }
6804
+ }
6805
+ }
6806
+ }
6807
+ }
6808
+ result.push(addObject);
6809
+ };
6810
+ for (var index = 0; index < rowNumber.length; index++) {
6811
+ _loop_1(index);
6812
+ }
6813
+ _this.options.RepeaterValue = result;
6814
+ });
6815
+ };
6816
+ RepeaterTableComponent.prototype.deleteItem = function (Index) {
6817
+ var _a;
6818
+ var _this = this;
6819
+ if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
6820
+ return;
6821
+ var deletedControls = [];
6822
+ var controlNames = this.options.RepeaterStructure.map(function (e) { return e.ControlOptions.Name; });
6823
+ for (var key in this.repeaterGroup.controls) {
6824
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
6825
+ for (var index = 0; index < controlNames.length; index++) {
6826
+ var element = controlNames[index];
6827
+ var keySplitArr = key.split('.');
6828
+ if (keySplitArr[0] + keySplitArr[1] == "" + element + Index) {
6829
+ var element_1 = this.repeaterGroup.controls[key];
6830
+ deletedControls.push((_a = {}, _a[key] = element_1, _a));
6831
+ }
6832
+ }
6833
+ }
6834
+ }
6835
+ for (var index = 0; index < deletedControls.length; index++) {
6836
+ var element = deletedControls[index];
6837
+ for (var key in element) {
6838
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
6839
+ this.repeaterGroup.removeControl(key);
6840
+ }
6841
+ }
6842
+ }
6843
+ this.items = this.items.filter(function (res) { return res != _this.items[Index]; });
6844
+ };
6845
+ RepeaterTableComponent.prototype.addItem = function () {
6846
+ this.items.push(this.items[this.items.length - 1] + 1);
6847
+ };
6848
+ return RepeaterTableComponent;
6849
+ }());
6850
+ RepeaterTableComponent.decorators = [
6851
+ { type: i0.Component, args: [{
6852
+ selector: 'BBSF-repeater-table',
6853
+ 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>"
6854
+ },] }
6855
+ ];
6856
+ RepeaterTableComponent.ctorParameters = function () { return [
6857
+ { type: bbsfUtilities.UtilityService }
6858
+ ]; };
6859
+ RepeaterTableComponent.propDecorators = {
6860
+ group: [{ type: i0.Input }],
6861
+ options: [{ type: i0.Input }]
6862
+ };
6863
+
6695
6864
  var options;
6696
6865
  exports.AppInjector = void 0;
6697
6866
  angular.FullCalendarModule.registerPlugins([
@@ -6740,6 +6909,7 @@
6740
6909
  RepeaterFieldBuilderComponent,
6741
6910
  NgTemplateNameDirective,
6742
6911
  RepeaterItemFieldComponent,
6912
+ RepeaterTableComponent
6743
6913
  ],
6744
6914
  imports: [
6745
6915
  common.CommonModule,
@@ -6834,6 +7004,7 @@
6834
7004
  RepeaterFieldBuilderComponent,
6835
7005
  NgTemplateNameDirective,
6836
7006
  RepeaterItemFieldComponent,
7007
+ RepeaterTableComponent
6837
7008
  ]
6838
7009
  },] }
6839
7010
  ];
@@ -7239,6 +7410,7 @@
7239
7410
  var RepeaterOptions = /** @class */ (function () {
7240
7411
  function RepeaterOptions() {
7241
7412
  this.MinRequiredItems = 1;
7413
+ this.ActionLabelKey = "";
7242
7414
  this.AddButtonText = "Add";
7243
7415
  this.DeleteButtonText = "Delete";
7244
7416
  this.RepeaterValue = [];
@@ -7636,6 +7808,7 @@
7636
7808
  exports.RepeaterFieldBuilderComponent = RepeaterFieldBuilderComponent;
7637
7809
  exports.RepeaterItemFieldComponent = RepeaterItemFieldComponent;
7638
7810
  exports.RepeaterOptions = RepeaterOptions;
7811
+ exports.RepeaterTableComponent = RepeaterTableComponent;
7639
7812
  exports.SaveDTO = SaveDTO;
7640
7813
  exports.TagsInputComponent = TagsInputComponent;
7641
7814
  exports.TagsInputDTO = TagsInputDTO;