@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.
- package/README.md +7 -18
- package/bnsights-bbsf-controls-1.0.30.tgz +0 -0
- package/bnsights-bbsf-controls.metadata.json +1 -1
- package/bundles/bnsights-bbsf-controls.umd.js +555 -382
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/lib/Shared/Enums/LanguageValidation.js +6 -0
- package/esm2015/lib/Shared/Models/RepeaterField.js +1 -1
- package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
- package/esm2015/lib/Shared/Models/TextBoxOptions.js +3 -1
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +12 -12
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +2 -2
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +8 -3
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +4 -4
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +3 -3
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +3 -3
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +15 -9
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +376 -336
- package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +105 -0
- package/esm2015/lib/controls/TextArea/TextArea.component.js +2 -2
- package/esm2015/lib/controls/TextBox/TextBox.component.js +15 -14
- package/esm2015/lib/controls/bbsf-controls.module.js +4 -1
- package/esm2015/public-api.js +3 -1
- package/fesm2015/bnsights-bbsf-controls.js +543 -380
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/lib/Shared/Enums/LanguageValidation.d.ts +4 -0
- package/lib/Shared/Models/RepeaterField.d.ts +1 -0
- package/lib/Shared/Models/RepeaterOptions.d.ts +3 -0
- package/lib/Shared/Models/TextBoxOptions.d.ts +3 -0
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -1
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +1 -1
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +2 -1
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +16 -0
- package/package.json +2 -2
- package/public-api.d.ts +2 -0
- package/src/lib/assets/Style.css +0 -9
- package/bnsights-bbsf-controls-1.0.27.tgz +0 -0
|
@@ -18,10 +18,10 @@ import { SearchCountryField, NgxIntlTelInputModule } from 'ngx-intl-tel-input';
|
|
|
18
18
|
import { UtilityService, ControlValidationService, BBSFTranslateService, RequestOptionsModel, RequestHandlerService, BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';
|
|
19
19
|
import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
|
|
20
20
|
import { Subject, Observable, noop, of } from 'rxjs';
|
|
21
|
+
import { DateTimeAdapter, OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
|
|
21
22
|
import { FileUploader, FileLikeObject, FileUploadModule } from 'ng2-file-upload';
|
|
22
23
|
import { __decorate, __awaiter } from 'tslib';
|
|
23
24
|
import { Expose, plainToClass } from 'class-transformer';
|
|
24
|
-
import { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
|
|
25
25
|
import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
|
|
26
26
|
import { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';
|
|
27
27
|
import { NgxSummernoteModule } from 'ngx-summernote';
|
|
@@ -96,22 +96,22 @@ class ErrorMassageValidation {
|
|
|
96
96
|
result = this.utilityService.getResourceValue("NumberValidationKey");
|
|
97
97
|
break;
|
|
98
98
|
case "maxlength":
|
|
99
|
-
result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + error.value.requiredLength;
|
|
99
|
+
result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + " " + error.value.requiredLength;
|
|
100
100
|
break;
|
|
101
101
|
case "minlength":
|
|
102
|
-
result = this.utilityService.getResourceValue("MinLenghtValidationKey") + error.value.requiredLength;
|
|
102
|
+
result = this.utilityService.getResourceValue("MinLenghtValidationKey") + " " + error.value.requiredLength;
|
|
103
103
|
break;
|
|
104
104
|
case "min":
|
|
105
|
-
result = this.utilityService.getResourceValue("MinValueValidationKey") + error.value.min;
|
|
105
|
+
result = this.utilityService.getResourceValue("MinValueValidationKey") + " " + error.value.min;
|
|
106
106
|
break;
|
|
107
107
|
case "max":
|
|
108
|
-
result = this.utilityService.getResourceValue("MaxValueValidationKey") + error.value.max;
|
|
108
|
+
result = this.utilityService.getResourceValue("MaxValueValidationKey") + " " + error.value.max;
|
|
109
109
|
break;
|
|
110
110
|
case "validatePhoneNumber":
|
|
111
111
|
result = this.utilityService.getResourceValue("PhoneNumberValidationKey");
|
|
112
112
|
break;
|
|
113
113
|
case "mask":
|
|
114
|
-
result = this.utilityService.getResourceValue("MaskValidationKey") + error.value.requiredMask;
|
|
114
|
+
result = this.utilityService.getResourceValue("MaskValidationKey") + " " + error.value.requiredMask;
|
|
115
115
|
break;
|
|
116
116
|
case "PasswordComplexityHasNumber":
|
|
117
117
|
result = this.utilityService.getResourceValue("PasswordComplexityHasNumber");
|
|
@@ -132,25 +132,25 @@ class ErrorMassageValidation {
|
|
|
132
132
|
result = this.utilityService.getResourceValue("PasswordComplexityHasSpecialLetter");
|
|
133
133
|
break;
|
|
134
134
|
case "MaxWordCountValidationKey":
|
|
135
|
-
result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + error.value;
|
|
135
|
+
result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + " " + error.value;
|
|
136
136
|
break;
|
|
137
137
|
case "NewSelectionValidationKey":
|
|
138
138
|
result = this.utilityService.getResourceValue("NewSelectionValidationKey");
|
|
139
139
|
break;
|
|
140
140
|
case "MaxFileCountValidationKey":
|
|
141
|
-
result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + error.value;
|
|
141
|
+
result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + " " + error.value;
|
|
142
142
|
break;
|
|
143
143
|
case "MinFileCountValidationKey":
|
|
144
|
-
result = this.utilityService.getResourceValue("MinFileCountValidationKey") + error.value;
|
|
144
|
+
result = this.utilityService.getResourceValue("MinFileCountValidationKey") + " " + error.value;
|
|
145
145
|
break;
|
|
146
146
|
case "MaxSizeForAllFilesInMB":
|
|
147
|
-
result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + error.value;
|
|
147
|
+
result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + " " + error.value;
|
|
148
148
|
break;
|
|
149
149
|
case "FileMaxSizeInMB":
|
|
150
|
-
result = this.utilityService.getResourceValue("FileMaxSizeInMB") + error.value;
|
|
150
|
+
result = this.utilityService.getResourceValue("FileMaxSizeInMB") + " " + error.value;
|
|
151
151
|
break;
|
|
152
152
|
case "ToolTipTypeError":
|
|
153
|
-
result = this.utilityService.getResourceValue("ToolTipTypeError") + error.value;
|
|
153
|
+
result = this.utilityService.getResourceValue("ToolTipTypeError") + " " + error.value;
|
|
154
154
|
break;
|
|
155
155
|
default:
|
|
156
156
|
break;
|
|
@@ -341,7 +341,7 @@ OnPagingFiltersChangeService.decorators = [
|
|
|
341
341
|
|
|
342
342
|
class DateInputComponent {
|
|
343
343
|
// tslint:disable-next-line: max-line-length
|
|
344
|
-
constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService) {
|
|
344
|
+
constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService, dateTimeAdapter) {
|
|
345
345
|
this.datepipe = datepipe;
|
|
346
346
|
this.onChangeService = onChangeService;
|
|
347
347
|
this.ErrorHandler = ErrorHandler;
|
|
@@ -351,6 +351,7 @@ class DateInputComponent {
|
|
|
351
351
|
this.UtilityService = UtilityService;
|
|
352
352
|
this.translate = translate;
|
|
353
353
|
this.controlValidationService = controlValidationService;
|
|
354
|
+
this.dateTimeAdapter = dateTimeAdapter;
|
|
354
355
|
this.OnChange = new EventEmitter();
|
|
355
356
|
this.markAllAsTouched = false;
|
|
356
357
|
this.validationRules = [];
|
|
@@ -381,6 +382,8 @@ class DateInputComponent {
|
|
|
381
382
|
DateInputComponent.controlContainerstatic = this.controlContainer;
|
|
382
383
|
}
|
|
383
384
|
ngOnInit() {
|
|
385
|
+
// Update the DateTimeAdapter Language with the current thread langauge
|
|
386
|
+
this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
|
|
384
387
|
this.controlValidationService.isCreatedBefor = false;
|
|
385
388
|
this.group.addControl(this.options.Name, new FormControl(''));
|
|
386
389
|
this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
@@ -473,7 +476,8 @@ DateInputComponent.ctorParameters = () => [
|
|
|
473
476
|
{ type: FormGroupDirective },
|
|
474
477
|
{ type: UtilityService },
|
|
475
478
|
{ type: BBSFTranslateService },
|
|
476
|
-
{ type: ControlValidationService }
|
|
479
|
+
{ type: ControlValidationService },
|
|
480
|
+
{ type: DateTimeAdapter }
|
|
477
481
|
];
|
|
478
482
|
DateInputComponent.propDecorators = {
|
|
479
483
|
group: [{ type: Input }],
|
|
@@ -958,7 +962,7 @@ class MultiLingualTextBoxComponent {
|
|
|
958
962
|
}
|
|
959
963
|
this.showInputUsingLanguageMode();
|
|
960
964
|
this.ArabicValidationRules.push(Validators.compose([
|
|
961
|
-
this.controlUtility.patternValidator(
|
|
965
|
+
this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
|
|
962
966
|
]));
|
|
963
967
|
this.EnglishValidationRules.push(Validators.compose([
|
|
964
968
|
this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
|
|
@@ -1154,7 +1158,7 @@ MultiLingualTextBoxComponent.controlContainerstatic = null;
|
|
|
1154
1158
|
MultiLingualTextBoxComponent.decorators = [
|
|
1155
1159
|
{ type: Component, args: [{
|
|
1156
1160
|
selector: 'BBSF-MultiLingualTextBox',
|
|
1157
|
-
template: "<div class=\"b-control b-multilangual-textbox\">\r\n
|
|
1161
|
+
template: "<div class=\"b-control b-multilangual-textbox\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguagegroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishTextBox\">\r\n <label class=\"b-label col-form-label col-sm-12\"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group align-items-center\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control\"\r\n (focus)=\"showEnglishWordCount(true)\" (focusout)=\"showEnglishWordCount(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputEnglish>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"EnglishFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextBox\">\r\n <label class=\"b-label col-form-label col-sm-12\"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group align-items-center\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control\" dir=\"rtl\"\r\n (focus)=\"showArabicWordCount(true)\" (focusout)=\"showArabicWordCount(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"ArabicFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
|
|
1158
1162
|
styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
|
|
1159
1163
|
},] }
|
|
1160
1164
|
];
|
|
@@ -1300,7 +1304,7 @@ TextAreaComponent.controlContainerstatic = null;
|
|
|
1300
1304
|
TextAreaComponent.decorators = [
|
|
1301
1305
|
{ type: Component, args: [{
|
|
1302
1306
|
selector: 'BBSF-TextArea',
|
|
1303
|
-
template: "<div class=\"b-control b-textarea\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n *ngIf=\"!options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"
|
|
1307
|
+
template: "<div class=\"b-control b-textarea\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n *ngIf=\"!options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"TextAreaFormControl.invalid && TextAreaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" rows=\"{{options.Rows}}\" (keyup)=\"onTextChange()\" cols=\"{{options.Cols}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc text-dark\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- <div *ngIf=\"TextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
1304
1308
|
styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
|
|
1305
1309
|
},] }
|
|
1306
1310
|
];
|
|
@@ -1434,7 +1438,7 @@ class MultiLingualTextAreaComponent {
|
|
|
1434
1438
|
}
|
|
1435
1439
|
this.showInputUsingLanguageMode();
|
|
1436
1440
|
this.ArabicValidationRules.push(Validators.compose([
|
|
1437
|
-
this.controlUtility.patternValidator(
|
|
1441
|
+
this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
|
|
1438
1442
|
]));
|
|
1439
1443
|
this.EnglishValidationRules.push(Validators.compose([
|
|
1440
1444
|
this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
|
|
@@ -1620,7 +1624,7 @@ MultiLingualTextAreaComponent.controlContainerstatic = null;
|
|
|
1620
1624
|
MultiLingualTextAreaComponent.decorators = [
|
|
1621
1625
|
{ type: Component, args: [{
|
|
1622
1626
|
selector: 'BBSF-MultiLingualTextArea',
|
|
1623
|
-
template: "<div class=\"b-control b-multilangual-textarea\">\r\n
|
|
1627
|
+
template: "<div class=\"b-control b-multilangual-textarea\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEngishTextArea\">\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"showEnglishWordCount(true)\" (focusout)=\"showEnglishWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n \r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n\r\n <!-- <div *ngIf=\"EnglishTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextArea\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.IsHideArabicLable\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"showArabicWordCount(true)\" (focusout)=\"showArabicWordCount(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"ArabicTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
1624
1628
|
styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
|
|
1625
1629
|
},] }
|
|
1626
1630
|
];
|
|
@@ -2798,10 +2802,10 @@ class ImageUploaderComponent {
|
|
|
2798
2802
|
const TypeToolTipe = element.split('/')[1];
|
|
2799
2803
|
this.ToolTipTypeArray.push(TypeToolTipe);
|
|
2800
2804
|
}
|
|
2801
|
-
this.ValidationMessage = this.ValidationMessage +
|
|
2805
|
+
this.ValidationMessage = this.ValidationMessage + this.UtilityService.getResourceValue("AllowedTypes") + ` (${this.ToolTipTypeArray}) `;
|
|
2802
2806
|
}
|
|
2803
2807
|
if (this.options.FileMaxSizeInMB > 0) {
|
|
2804
|
-
this.ValidationMessage = this.ValidationMessage + ` <br />
|
|
2808
|
+
this.ValidationMessage = this.ValidationMessage + ` <br /> ${this.UtilityService.getResourceValue("FileMaxSizeInMB")} ${this.options.FileMaxSizeInMB}`;
|
|
2805
2809
|
}
|
|
2806
2810
|
if (this.options.FileUploadAcceptsTypes != null && this.options.FileUploadAcceptsTypes.length > 0) {
|
|
2807
2811
|
}
|
|
@@ -2978,7 +2982,7 @@ ImageUploaderComponent.controlContainerstatic = null;
|
|
|
2978
2982
|
ImageUploaderComponent.decorators = [
|
|
2979
2983
|
{ type: Component, args: [{
|
|
2980
2984
|
selector: 'BBSF-ImageUpload',
|
|
2981
|
-
template: "<div class=\"b-control b-image-upload\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\"
|
|
2985
|
+
template: "<div class=\"b-control b-image-upload\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">* </span>\r\n\r\n <ejs-tooltip id=\"tooltip\" content='{{ValidationMessage}}' tipPointerPosition='Middle'>\r\n <i class=\"fa fa-info-circle\" data-plugin=\"tooltip\" data-html=\"true\">\r\n </i>\r\n </ejs-tooltip>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <div *ngIf=\"options.AllowDropZone\" style=\"max-width:200px !important; max-height: 200px !important;\" class=\"d-inline-flex h-auto w-auto overflow-hidden m-0 {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\" aria-describedby=\"email-error\" aria-invalid=\"true\" ngDefaultControl formControlName=\"{{options.Name}}\" [maxFileSize]=\"options.FileMaxSizeInMB\"\r\n id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"h-100 m-0\" style=\"max-width: 200px !important;\">\r\n <div class=\"h-100\">\r\n <img [src]=\"ImageSource\" class=\"h-100 w-100\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n\r\n\r\n <ngx-dropzone-image-preview style=\"max-width:200px !important; max-height: 200px !important;\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\" class=\"b-img-preview w-100 h-100 m-0\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n\r\n <div class=\"ImageUploadClassSelector\" *ngIf=\"!options.AllowDropZone\">\r\n <ngx-dropzone-label class=\"h-100 m-0\" *ngIf=\"files.length==0\">\r\n <div style=\"max-width:200px !important; max-height: 200px !important;\" class=\"h-100 file-fake-input\" #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"h-100 w-100\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n\r\n <div style=\"border: none !important; max-width:200px !important; max-height: 200px !important;\" class=\" fileSelector customImageUploadPlacment d-inline-flex h-auto w-auto overflow-hidden m-0 {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\" aria-describedby=\"email-error\" aria-invalid=\"true\" ngDefaultControl formControlName=\"{{options.Name}}\" [maxFileSize]=\"options.FileMaxSizeInMB\"\r\n id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n\r\n\r\n\r\n <ngx-dropzone-image-preview style=\"max-width:200px !important; max-height: 200px !important;\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\" class=\"b-img-preview w-100 h-100 m-0\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n </div>\r\n\r\n\r\n <div id=\"mdlSample\" class=\"modal fade\" role=\"dialog\" style=\"z-index: 11 !important ;\"\r\n [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" aria-hidden=\"true\" data-dismiss=\"modal\" aria-label=\"Close\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body py-5\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div style=\"text-align:center;\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" data-method=\"zoom\" data-option=\"0.1\" title=\"Zoom In\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.zoom(0.1)\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" data-method=\"zoom\" data-option=\"-0.1\" title=\"Zoom Out\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.zoom(-0.1)\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"-10\" data-second-option=\"0\" title=\"Move Left\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(-10, 0)\" aria-describedby=\"tooltip631939\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"10\" data-second-option=\"0\" title=\"Move Right\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(10, 0)\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"0\" data-second-option=\"-10\" title=\"Move Up\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(0, -10)\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" data-method=\"move\" data-option=\"0\" data-second-option=\"10\" title=\"Move Down\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.move(0, 10)\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" data-method=\"rotate\" data-option=\"-45\" title=\"Rotate Left\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.rotate(-45)\" aria-describedby=\"tooltip236044\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" data-method=\"rotate\" data-option=\"45\" title=\"Rotate Right\">\r\n <span class=\"docs-tooltip\" data-toggle=\"tooltip\" title=\"\" data-original-title=\"cropper.rotate(45)\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-default\" (click)=\"openModal(false)\">\r\n <i class=\"fa fa-times fa-fw\"></i> {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-success\">\r\n <i class=\"fa fa-check fa-fw\"></i>\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\" *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
|
|
2982
2986
|
styles: [".e-tip-content{background-color:#afafaf;color:#fff;padding-left:10px;padding-right:10px;padding-top:2px}.my-drop-zone{border:dotted 3px lightgray}.nv-file-over{border:dotted 3px red}.another-file-over-class{border:dotted 3px green}html,body{height:100%}.modal{display:none;position:fixed;z-index:1;padding-top:100px;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#000;background-color:#0006}.modal-content{position:relative;background-color:#fefefe;margin:auto;padding:0;border:1px solid #888;width:80%;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;-webkit-animation-name:animatetop;-webkit-animation-duration:.4s;animation-name:animatetop;animation-duration:.4s}@keyframes animatetop{0%{top:-300px;opacity:0}to{top:0;opacity:1}}.close{color:#fff;float:right;font-size:28px;font-weight:bold}.ImageUploadClassSelector img{cursor:pointer}.d-inline-flex.h-auto.m-0.overflow-hidden.w-auto.ng-untouched.ng-pristine.ng-valid{border-radius:40px;border-color:#c7c7c7}\n"]
|
|
2983
2987
|
},] }
|
|
2984
2988
|
];
|
|
@@ -4242,6 +4246,12 @@ RadioButtonComponent.propDecorators = {
|
|
|
4242
4246
|
OnChange: [{ type: Output }]
|
|
4243
4247
|
};
|
|
4244
4248
|
|
|
4249
|
+
var LanguageValidation;
|
|
4250
|
+
(function (LanguageValidation) {
|
|
4251
|
+
LanguageValidation[LanguageValidation["English"] = 1] = "English";
|
|
4252
|
+
LanguageValidation[LanguageValidation["Arabic"] = 2] = "Arabic";
|
|
4253
|
+
})(LanguageValidation || (LanguageValidation = {}));
|
|
4254
|
+
|
|
4245
4255
|
class TextboxComponent {
|
|
4246
4256
|
// tslint:disable-next-line: max-line-length
|
|
4247
4257
|
constructor(controlUtility, controlContainer, TextControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
@@ -4341,18 +4351,18 @@ class TextboxComponent {
|
|
|
4341
4351
|
}
|
|
4342
4352
|
break;
|
|
4343
4353
|
}
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4350
|
-
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4354
|
+
if (this.options.LanguageValidation) {
|
|
4355
|
+
if (this.options.LanguageValidation == LanguageValidation.Arabic) {
|
|
4356
|
+
this.validationRules.push(Validators.compose([
|
|
4357
|
+
this.controlUtility.patternValidator(/^[^A-Za-z]*$/, { ArabicLetterOnly: this.ArabicLetterOnly }),
|
|
4358
|
+
]));
|
|
4359
|
+
}
|
|
4360
|
+
else if (this.options.LanguageValidation == LanguageValidation.English) {
|
|
4361
|
+
this.validationRules.push(Validators.compose([
|
|
4362
|
+
this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
|
|
4363
|
+
]));
|
|
4364
|
+
}
|
|
4365
|
+
}
|
|
4356
4366
|
if (this.options.CustomValidation.length > 0) {
|
|
4357
4367
|
let Validations = this.options.CustomValidation;
|
|
4358
4368
|
for (let index = 0; index < Validations.length; index++) {
|
|
@@ -4442,7 +4452,7 @@ TextboxComponent.controlContainerstatic = null;
|
|
|
4442
4452
|
TextboxComponent.decorators = [
|
|
4443
4453
|
{ type: Component, args: [{
|
|
4444
4454
|
selector: 'BBSF-TextBox',
|
|
4445
|
-
template: "<div class=\"b-control b-textbox\">\r\n
|
|
4455
|
+
template: "<div class=\"b-control b-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\" [ngClass]=\"(options.NoMargin==true)?'':'NoMargin'\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" *ngIf=\"!options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern!=null&&MaskPattern!=''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern==null||MaskPattern==''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count float-end\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
4446
4456
|
styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
|
|
4447
4457
|
},] }
|
|
4448
4458
|
];
|
|
@@ -5064,7 +5074,7 @@ class ConfirmationModalComponent {
|
|
|
5064
5074
|
showCancelButton: true,
|
|
5065
5075
|
confirmButtonColor: this.btnColor,
|
|
5066
5076
|
cancelButtonColor: '#f5f8fa',
|
|
5067
|
-
cancelButtonText: this.utilityService.getResourceValue("
|
|
5077
|
+
cancelButtonText: this.utilityService.getResourceValue("CancelLabel"),
|
|
5068
5078
|
confirmButtonText: this.options.SubmitButtonText,
|
|
5069
5079
|
showCloseButton: true,
|
|
5070
5080
|
}).then((result) => {
|
|
@@ -5172,16 +5182,23 @@ class RepeaterComponent {
|
|
|
5172
5182
|
constructor() {
|
|
5173
5183
|
this.templateRefs = [];
|
|
5174
5184
|
this.items = [];
|
|
5185
|
+
this.originalItems = [];
|
|
5175
5186
|
this.repeaterContext = { index: 0, delete: null, elements: null };
|
|
5176
5187
|
}
|
|
5177
5188
|
ngOnInit() {
|
|
5178
5189
|
this.currentTemplate = this.initialTemplate;
|
|
5179
5190
|
this.repeaterGroup = new FormGroup({});
|
|
5180
5191
|
this.group.addControl(this.options.Name, this.repeaterGroup);
|
|
5181
|
-
|
|
5182
|
-
|
|
5183
|
-
this.
|
|
5192
|
+
if (this.options.RepeaterValue.length > 0) {
|
|
5193
|
+
this.originalItems = this.options.RepeaterValue;
|
|
5194
|
+
for (let index = 0; index < this.options.RepeaterValue.length; index++) {
|
|
5195
|
+
this.items.push(index + 1);
|
|
5196
|
+
}
|
|
5184
5197
|
}
|
|
5198
|
+
else
|
|
5199
|
+
for (let index = 0; index < this.options.MinRequiredItems; index++) {
|
|
5200
|
+
this.items.push(index);
|
|
5201
|
+
}
|
|
5185
5202
|
this.repeaterGroup.valueChanges.subscribe((res) => {
|
|
5186
5203
|
let result = [];
|
|
5187
5204
|
let rowNumber = [];
|
|
@@ -5245,11 +5262,10 @@ class RepeaterComponent {
|
|
|
5245
5262
|
}
|
|
5246
5263
|
}
|
|
5247
5264
|
}
|
|
5248
|
-
|
|
5249
|
-
this.items = this.items.filter((res) => res != item);
|
|
5265
|
+
this.items = this.items.filter((res) => res != this.items[Index]);
|
|
5250
5266
|
}
|
|
5251
|
-
|
|
5252
|
-
this.items.push(this.items.length + 1);
|
|
5267
|
+
addItem() {
|
|
5268
|
+
this.items.push(this.items[this.items.length - 1] + 1);
|
|
5253
5269
|
}
|
|
5254
5270
|
ngAfterViewInit() {
|
|
5255
5271
|
let templateRefs = this._templates["_results"].map((item) => item["template"]);
|
|
@@ -5264,7 +5280,7 @@ class RepeaterComponent {
|
|
|
5264
5280
|
RepeaterComponent.decorators = [
|
|
5265
5281
|
{ type: Component, args: [{
|
|
5266
5282
|
selector: 'BBSF-repeater',
|
|
5267
|
-
template: "<
|
|
5283
|
+
template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\"> <span\r\n [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\"><span\r\n [innerHTML]=\"options.AddButtonText\"></span></button>\r\n</ng-template>\r\n\r\n\r\n\r\n\r\n\r\n<!-- <ng-template adHost></ng-template> -->\r\n",
|
|
5268
5284
|
styles: [""]
|
|
5269
5285
|
},] }
|
|
5270
5286
|
];
|
|
@@ -5478,6 +5494,8 @@ class TextBoxOptions {
|
|
|
5478
5494
|
this.CustomValidation = [];
|
|
5479
5495
|
/** to set Direction of textbox if textbox is Arabic or English */
|
|
5480
5496
|
this.ForceDirection = null;
|
|
5497
|
+
/** to set Language of textbox if textbox language is Arabic or English */
|
|
5498
|
+
this.LanguageValidation = null;
|
|
5481
5499
|
/** Set Type of TextBox ("text","password","email","number") */
|
|
5482
5500
|
this.Type = InputType.Text;
|
|
5483
5501
|
this.IconPosition = IconPosition.left;
|
|
@@ -5515,11 +5533,23 @@ class RepeaterFieldBuilderComponent {
|
|
|
5515
5533
|
constructor(renderComponentService, TextControlHost) {
|
|
5516
5534
|
this.renderComponentService = renderComponentService;
|
|
5517
5535
|
this.TextControlHost = TextControlHost;
|
|
5536
|
+
this.itemsValue = [];
|
|
5537
|
+
this.itemValue = null;
|
|
5518
5538
|
}
|
|
5519
5539
|
ngOnInit() {
|
|
5520
5540
|
}
|
|
5521
5541
|
ngAfterViewInit() {
|
|
5522
5542
|
setTimeout(() => {
|
|
5543
|
+
if (this.itemsValue.length > 0)
|
|
5544
|
+
this.itemValue = this.itemsValue[this.itemNumber];
|
|
5545
|
+
if (this.itemValue) {
|
|
5546
|
+
for (const key in this.itemValue) {
|
|
5547
|
+
if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.RepeaterField.ControlOptions.Name) {
|
|
5548
|
+
const element = this.itemValue[key];
|
|
5549
|
+
this.value = element;
|
|
5550
|
+
}
|
|
5551
|
+
}
|
|
5552
|
+
}
|
|
5523
5553
|
this.Item.clear();
|
|
5524
5554
|
switch (this.RepeaterField.ControlType) {
|
|
5525
5555
|
///TextBox
|
|
@@ -5532,10 +5562,12 @@ class RepeaterFieldBuilderComponent {
|
|
|
5532
5562
|
Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5533
5563
|
Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5534
5564
|
Text.Type = InputType.Text;
|
|
5565
|
+
Text.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
5535
5566
|
if (this.RepeaterField.ControlOptions.maxLength)
|
|
5536
5567
|
Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
5537
5568
|
if (this.RepeaterField.ControlOptions.minLength)
|
|
5538
5569
|
Text.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
5570
|
+
Text.Value = this.value;
|
|
5539
5571
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
|
|
5540
5572
|
break;
|
|
5541
5573
|
case DataType.Name:
|
|
@@ -5545,12 +5577,14 @@ class RepeaterFieldBuilderComponent {
|
|
|
5545
5577
|
Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5546
5578
|
Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5547
5579
|
Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5580
|
+
Name.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
5548
5581
|
Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5549
5582
|
if (this.RepeaterField.ControlOptions.maxLength)
|
|
5550
5583
|
Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
5551
5584
|
if (this.RepeaterField.ControlOptions.minLength)
|
|
5552
5585
|
Name.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
5553
5586
|
Name.Type = InputType.Text;
|
|
5587
|
+
Name.Value = this.value;
|
|
5554
5588
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
|
|
5555
5589
|
break;
|
|
5556
5590
|
case DataType.Email:
|
|
@@ -5560,8 +5594,10 @@ class RepeaterFieldBuilderComponent {
|
|
|
5560
5594
|
Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5561
5595
|
Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5562
5596
|
Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5597
|
+
Email.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
5563
5598
|
Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5564
5599
|
Email.Type = InputType.Email;
|
|
5600
|
+
Email.Value = this.value;
|
|
5565
5601
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
|
|
5566
5602
|
break;
|
|
5567
5603
|
case DataType.Number:
|
|
@@ -5571,12 +5607,14 @@ class RepeaterFieldBuilderComponent {
|
|
|
5571
5607
|
Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5572
5608
|
Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5573
5609
|
Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5610
|
+
Number.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
|
|
5574
5611
|
Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5575
5612
|
Number.Type = InputType.Number;
|
|
5576
5613
|
let rangeNumber = new RangeNumber();
|
|
5577
5614
|
rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
|
|
5578
5615
|
rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
|
|
5579
5616
|
Number.NumberRange = rangeNumber;
|
|
5617
|
+
Number.Value = this.value;
|
|
5580
5618
|
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
|
|
5581
5619
|
break;
|
|
5582
5620
|
///DateTime
|
|
@@ -5591,6 +5629,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5591
5629
|
Date.PickerType = PickerType.Calendar;
|
|
5592
5630
|
Date.SelectMode = SelectMode.Single;
|
|
5593
5631
|
Date.StartView = StartView.Month;
|
|
5632
|
+
Date.Value = this.value;
|
|
5594
5633
|
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
|
|
5595
5634
|
break;
|
|
5596
5635
|
case DataType.DateTime:
|
|
@@ -5604,6 +5643,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5604
5643
|
DateTime.PickerType = PickerType.Both;
|
|
5605
5644
|
DateTime.SelectMode = SelectMode.Single;
|
|
5606
5645
|
DateTime.StartView = StartView.Month;
|
|
5646
|
+
DateTime.Value = this.value;
|
|
5607
5647
|
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
|
|
5608
5648
|
break;
|
|
5609
5649
|
case DataType.Time:
|
|
@@ -5617,6 +5657,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5617
5657
|
Time.PickerType = PickerType.Timer;
|
|
5618
5658
|
Time.SelectMode = SelectMode.Single;
|
|
5619
5659
|
Time.StartView = StartView.Month;
|
|
5660
|
+
Time.Value = this.value;
|
|
5620
5661
|
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
|
|
5621
5662
|
break;
|
|
5622
5663
|
//Dropdown
|
|
@@ -5632,6 +5673,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5632
5673
|
SingleSelect.SingleSelection = true;
|
|
5633
5674
|
SingleSelect.ShowCheckbox = false;
|
|
5634
5675
|
SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
5676
|
+
SingleSelect.SelectedItems = this.value;
|
|
5635
5677
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
|
|
5636
5678
|
break;
|
|
5637
5679
|
case DataType.MulipleSelect:
|
|
@@ -5646,6 +5688,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5646
5688
|
MulipleSelect.SingleSelection = false;
|
|
5647
5689
|
MulipleSelect.ShowCheckbox = false;
|
|
5648
5690
|
MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
5691
|
+
MulipleSelect.SelectedItems = this.value;
|
|
5649
5692
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
|
|
5650
5693
|
break;
|
|
5651
5694
|
case DataType.Goal:
|
|
@@ -5660,6 +5703,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5660
5703
|
Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
5661
5704
|
Goal.ShowCheckbox = false;
|
|
5662
5705
|
Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
5706
|
+
Goal.SelectedItems = this.value;
|
|
5663
5707
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
|
|
5664
5708
|
break;
|
|
5665
5709
|
case DataType.Challenge:
|
|
@@ -5675,6 +5719,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5675
5719
|
Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
5676
5720
|
Challenge.ShowCheckbox = false;
|
|
5677
5721
|
Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
5722
|
+
Challenge.SelectedItems = this.value;
|
|
5678
5723
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
|
|
5679
5724
|
break;
|
|
5680
5725
|
case DataType.InnovationLab:
|
|
@@ -5689,6 +5734,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5689
5734
|
InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
5690
5735
|
InnovationLab.ShowCheckbox = false;
|
|
5691
5736
|
InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
5737
|
+
InnovationLab.SelectedItems = this.value;
|
|
5692
5738
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
|
|
5693
5739
|
break;
|
|
5694
5740
|
case DataType.Country:
|
|
@@ -5703,6 +5749,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5703
5749
|
Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
5704
5750
|
Country.ShowCheckbox = false;
|
|
5705
5751
|
Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
5752
|
+
Country.SelectedItems = this.value;
|
|
5706
5753
|
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
|
|
5707
5754
|
break;
|
|
5708
5755
|
//FileUpload
|
|
@@ -5715,6 +5762,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5715
5762
|
File.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5716
5763
|
File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5717
5764
|
File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
5765
|
+
File.Value = this.value;
|
|
5718
5766
|
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
|
|
5719
5767
|
break;
|
|
5720
5768
|
case DataType.MultiFile:
|
|
@@ -5728,6 +5776,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5728
5776
|
MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
5729
5777
|
MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
|
|
5730
5778
|
MultiFile.IsMultipleFile = true;
|
|
5779
|
+
MultiFile.Value = this.value;
|
|
5731
5780
|
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
|
|
5732
5781
|
break;
|
|
5733
5782
|
//ImageUpload
|
|
@@ -5741,6 +5790,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5741
5790
|
Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5742
5791
|
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
5743
5792
|
Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
5793
|
+
Image.Value = this.value;
|
|
5744
5794
|
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
|
|
5745
5795
|
break;
|
|
5746
5796
|
case DataType.CoverPhoto:
|
|
@@ -5753,6 +5803,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5753
5803
|
CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5754
5804
|
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
5755
5805
|
CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
5806
|
+
CoverPhoto.Value = this.value;
|
|
5756
5807
|
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
|
|
5757
5808
|
break;
|
|
5758
5809
|
//Mobile
|
|
@@ -5768,6 +5819,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5768
5819
|
Mobile.PhoneValidation = true;
|
|
5769
5820
|
Mobile.SelectFirstCountry = true;
|
|
5770
5821
|
Mobile.EnablePlaceholder = true;
|
|
5822
|
+
Mobile.Value = this.value;
|
|
5771
5823
|
this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
|
|
5772
5824
|
break;
|
|
5773
5825
|
//MultilineText
|
|
@@ -5785,6 +5837,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5785
5837
|
MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
5786
5838
|
MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
|
|
5787
5839
|
MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
5840
|
+
MultilineText.Value = this.value;
|
|
5788
5841
|
this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
|
|
5789
5842
|
break;
|
|
5790
5843
|
//HTML
|
|
@@ -5802,6 +5855,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5802
5855
|
HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
5803
5856
|
HTML.Height = this.RepeaterField.ControlOptions.rows;
|
|
5804
5857
|
HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
5858
|
+
HTML.Value = this.value;
|
|
5805
5859
|
this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
|
|
5806
5860
|
break;
|
|
5807
5861
|
//Boolean
|
|
@@ -5811,6 +5865,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5811
5865
|
Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5812
5866
|
Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5813
5867
|
Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5868
|
+
Boolean.Value = this.value;
|
|
5814
5869
|
Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5815
5870
|
this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
|
|
5816
5871
|
break;
|
|
@@ -5822,6 +5877,7 @@ class RepeaterFieldBuilderComponent {
|
|
|
5822
5877
|
Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5823
5878
|
Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5824
5879
|
Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5880
|
+
Location.Value = this.value;
|
|
5825
5881
|
Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5826
5882
|
this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
|
|
5827
5883
|
break;
|
|
@@ -5831,341 +5887,342 @@ class RepeaterFieldBuilderComponent {
|
|
|
5831
5887
|
}, 0);
|
|
5832
5888
|
}
|
|
5833
5889
|
ngOnChanges(changes) {
|
|
5834
|
-
if (changes.itemNumber
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
|
|
5856
|
-
|
|
5857
|
-
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
|
|
5867
|
-
|
|
5868
|
-
|
|
5869
|
-
|
|
5870
|
-
|
|
5871
|
-
|
|
5872
|
-
|
|
5873
|
-
|
|
5874
|
-
|
|
5875
|
-
|
|
5876
|
-
|
|
5877
|
-
|
|
5878
|
-
|
|
5879
|
-
|
|
5880
|
-
|
|
5881
|
-
|
|
5882
|
-
|
|
5883
|
-
|
|
5884
|
-
|
|
5885
|
-
|
|
5886
|
-
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
5902
|
-
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
|
|
5909
|
-
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
5916
|
-
|
|
5917
|
-
|
|
5918
|
-
|
|
5919
|
-
|
|
5920
|
-
|
|
5921
|
-
|
|
5922
|
-
|
|
5923
|
-
|
|
5924
|
-
|
|
5925
|
-
|
|
5926
|
-
|
|
5927
|
-
|
|
5928
|
-
|
|
5929
|
-
|
|
5930
|
-
|
|
5931
|
-
|
|
5932
|
-
|
|
5933
|
-
|
|
5934
|
-
|
|
5935
|
-
|
|
5936
|
-
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
|
|
5942
|
-
|
|
5943
|
-
|
|
5944
|
-
|
|
5945
|
-
|
|
5946
|
-
|
|
5947
|
-
|
|
5948
|
-
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5952
|
-
|
|
5953
|
-
|
|
5954
|
-
|
|
5955
|
-
|
|
5956
|
-
|
|
5957
|
-
|
|
5958
|
-
|
|
5959
|
-
|
|
5960
|
-
|
|
5961
|
-
|
|
5962
|
-
|
|
5963
|
-
|
|
5964
|
-
|
|
5965
|
-
|
|
5966
|
-
|
|
5967
|
-
|
|
5968
|
-
|
|
5969
|
-
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
|
-
|
|
5975
|
-
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
|
|
5985
|
-
|
|
5986
|
-
|
|
5987
|
-
|
|
5988
|
-
|
|
5989
|
-
|
|
5990
|
-
|
|
5991
|
-
|
|
5992
|
-
|
|
5993
|
-
|
|
5994
|
-
|
|
5995
|
-
|
|
5996
|
-
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
|
|
6000
|
-
|
|
6001
|
-
|
|
6002
|
-
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
|
|
6010
|
-
|
|
6011
|
-
|
|
6012
|
-
|
|
6013
|
-
|
|
6014
|
-
|
|
6015
|
-
|
|
6016
|
-
|
|
6017
|
-
|
|
6018
|
-
|
|
6019
|
-
|
|
6020
|
-
|
|
6021
|
-
|
|
6022
|
-
|
|
6023
|
-
|
|
6024
|
-
|
|
6025
|
-
|
|
6026
|
-
|
|
6027
|
-
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
|
|
6040
|
-
|
|
6041
|
-
|
|
6042
|
-
|
|
6043
|
-
|
|
6044
|
-
|
|
6045
|
-
|
|
6046
|
-
|
|
6047
|
-
|
|
6048
|
-
|
|
6049
|
-
|
|
6050
|
-
|
|
6051
|
-
|
|
6052
|
-
|
|
6053
|
-
|
|
6054
|
-
|
|
6055
|
-
|
|
6056
|
-
|
|
6057
|
-
|
|
6058
|
-
|
|
6059
|
-
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
6073
|
-
|
|
6074
|
-
|
|
6075
|
-
|
|
6076
|
-
|
|
6077
|
-
|
|
6078
|
-
|
|
6079
|
-
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
6092
|
-
|
|
6093
|
-
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6099
|
-
|
|
6100
|
-
|
|
6101
|
-
|
|
6102
|
-
|
|
6103
|
-
|
|
6104
|
-
|
|
6105
|
-
|
|
6106
|
-
|
|
6107
|
-
|
|
6108
|
-
|
|
6109
|
-
|
|
6110
|
-
|
|
6111
|
-
|
|
6112
|
-
|
|
6113
|
-
|
|
6114
|
-
|
|
6115
|
-
|
|
6116
|
-
|
|
6117
|
-
|
|
6118
|
-
|
|
6119
|
-
|
|
6120
|
-
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
|
|
6139
|
-
|
|
6140
|
-
|
|
6141
|
-
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6147
|
-
|
|
6148
|
-
|
|
6149
|
-
|
|
6150
|
-
|
|
6151
|
-
|
|
6152
|
-
|
|
6153
|
-
|
|
6154
|
-
|
|
6155
|
-
|
|
6156
|
-
|
|
6157
|
-
|
|
6158
|
-
|
|
6159
|
-
|
|
6160
|
-
|
|
6161
|
-
|
|
6162
|
-
|
|
6163
|
-
|
|
6164
|
-
|
|
6165
|
-
|
|
6166
|
-
|
|
5890
|
+
if (changes.itemNumber)
|
|
5891
|
+
if (changes.itemNumber.previousValue) {
|
|
5892
|
+
let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
|
|
5893
|
+
let value = this.group.controls[name].value;
|
|
5894
|
+
this.Item.clear();
|
|
5895
|
+
this.group.removeControl(name);
|
|
5896
|
+
switch (this.RepeaterField.ControlType) {
|
|
5897
|
+
///TextBox
|
|
5898
|
+
case DataType.Text:
|
|
5899
|
+
let Text = new TextBoxOptions();
|
|
5900
|
+
Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5901
|
+
Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5902
|
+
Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5903
|
+
Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5904
|
+
Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5905
|
+
Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5906
|
+
Text.Type = InputType.Text;
|
|
5907
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
5908
|
+
Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
5909
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
5910
|
+
Text.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
5911
|
+
Text.Value = value;
|
|
5912
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
|
|
5913
|
+
break;
|
|
5914
|
+
case DataType.Name:
|
|
5915
|
+
let Name = new TextBoxOptions();
|
|
5916
|
+
Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5917
|
+
Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5918
|
+
Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5919
|
+
Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5920
|
+
Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5921
|
+
Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5922
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
5923
|
+
Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
5924
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
5925
|
+
Name.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
5926
|
+
Name.Type = InputType.Text;
|
|
5927
|
+
Name.Value = value;
|
|
5928
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
|
|
5929
|
+
break;
|
|
5930
|
+
case DataType.Email:
|
|
5931
|
+
let Email = new TextBoxOptions();
|
|
5932
|
+
Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5933
|
+
Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5934
|
+
Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5935
|
+
Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5936
|
+
Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5937
|
+
Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5938
|
+
Email.Type = InputType.Email;
|
|
5939
|
+
Email.Value = value;
|
|
5940
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
|
|
5941
|
+
break;
|
|
5942
|
+
case DataType.Number:
|
|
5943
|
+
let Number = new TextBoxOptions();
|
|
5944
|
+
Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5945
|
+
Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5946
|
+
Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5947
|
+
Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5948
|
+
Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5949
|
+
Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5950
|
+
Number.Type = InputType.Number;
|
|
5951
|
+
let rangeNumber = new RangeNumber();
|
|
5952
|
+
rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
|
|
5953
|
+
rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
|
|
5954
|
+
Number.NumberRange = rangeNumber;
|
|
5955
|
+
Number.Value = value;
|
|
5956
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
|
|
5957
|
+
break;
|
|
5958
|
+
///DateTime
|
|
5959
|
+
case DataType.Date:
|
|
5960
|
+
let Date = new DatePickerOptions();
|
|
5961
|
+
Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5962
|
+
Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5963
|
+
Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5964
|
+
Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5965
|
+
Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5966
|
+
Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5967
|
+
Date.PickerType = PickerType.Calendar;
|
|
5968
|
+
Date.SelectMode = SelectMode.Single;
|
|
5969
|
+
Date.StartView = StartView.Month;
|
|
5970
|
+
Date.Value = value;
|
|
5971
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
|
|
5972
|
+
break;
|
|
5973
|
+
case DataType.DateTime:
|
|
5974
|
+
let DateTime = new DatePickerOptions();
|
|
5975
|
+
DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5976
|
+
DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5977
|
+
DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5978
|
+
DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5979
|
+
DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5980
|
+
DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5981
|
+
DateTime.PickerType = PickerType.Both;
|
|
5982
|
+
DateTime.SelectMode = SelectMode.Single;
|
|
5983
|
+
DateTime.StartView = StartView.Month;
|
|
5984
|
+
DateTime.Value = value;
|
|
5985
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
|
|
5986
|
+
break;
|
|
5987
|
+
case DataType.Time:
|
|
5988
|
+
let Time = new DatePickerOptions();
|
|
5989
|
+
Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
5990
|
+
Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
5991
|
+
Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
5992
|
+
Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
5993
|
+
Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
5994
|
+
Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
5995
|
+
Time.PickerType = PickerType.Timer;
|
|
5996
|
+
Time.SelectMode = SelectMode.Single;
|
|
5997
|
+
Time.StartView = StartView.Month;
|
|
5998
|
+
Time.Value = value;
|
|
5999
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
|
|
6000
|
+
break;
|
|
6001
|
+
//Dropdown
|
|
6002
|
+
case DataType.SingleSelect:
|
|
6003
|
+
let SingleSelect = new DropdownOptions();
|
|
6004
|
+
SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6005
|
+
SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6006
|
+
SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6007
|
+
SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6008
|
+
SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6009
|
+
SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6010
|
+
SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6011
|
+
SingleSelect.SingleSelection = true;
|
|
6012
|
+
SingleSelect.ShowCheckbox = false;
|
|
6013
|
+
SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
6014
|
+
SingleSelect.SelectedItems = value;
|
|
6015
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
|
|
6016
|
+
break;
|
|
6017
|
+
case DataType.MulipleSelect:
|
|
6018
|
+
let MulipleSelect = new DropdownOptions();
|
|
6019
|
+
MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6020
|
+
MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6021
|
+
MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6022
|
+
MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6023
|
+
MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6024
|
+
MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6025
|
+
MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6026
|
+
MulipleSelect.SingleSelection = false;
|
|
6027
|
+
MulipleSelect.ShowCheckbox = false;
|
|
6028
|
+
MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
6029
|
+
MulipleSelect.SelectedItems = value;
|
|
6030
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
|
|
6031
|
+
break;
|
|
6032
|
+
case DataType.Goal:
|
|
6033
|
+
let Goal = new DropdownOptions();
|
|
6034
|
+
Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6035
|
+
Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6036
|
+
Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6037
|
+
Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6038
|
+
Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6039
|
+
Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6040
|
+
Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6041
|
+
Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
6042
|
+
Goal.ShowCheckbox = false;
|
|
6043
|
+
Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
6044
|
+
Goal.SelectedItems = value;
|
|
6045
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
|
|
6046
|
+
break;
|
|
6047
|
+
case DataType.Challenge:
|
|
6048
|
+
let Challenge = new DropdownOptions();
|
|
6049
|
+
Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6050
|
+
Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6051
|
+
Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6052
|
+
Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6053
|
+
Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6054
|
+
Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6055
|
+
Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6056
|
+
Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6057
|
+
Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
6058
|
+
Challenge.ShowCheckbox = false;
|
|
6059
|
+
Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
6060
|
+
Challenge.SelectedItems = value;
|
|
6061
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
|
|
6062
|
+
break;
|
|
6063
|
+
case DataType.InnovationLab:
|
|
6064
|
+
let InnovationLab = new DropdownOptions();
|
|
6065
|
+
InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6066
|
+
InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6067
|
+
InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6068
|
+
InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6069
|
+
InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6070
|
+
InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6071
|
+
InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6072
|
+
InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
6073
|
+
InnovationLab.ShowCheckbox = false;
|
|
6074
|
+
InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
6075
|
+
InnovationLab.SelectedItems = value;
|
|
6076
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
|
|
6077
|
+
break;
|
|
6078
|
+
case DataType.Country:
|
|
6079
|
+
let Country = new DropdownOptions();
|
|
6080
|
+
Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6081
|
+
Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6082
|
+
Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6083
|
+
Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6084
|
+
Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6085
|
+
Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6086
|
+
Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
|
|
6087
|
+
Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
|
|
6088
|
+
Country.ShowCheckbox = false;
|
|
6089
|
+
Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
|
|
6090
|
+
Country.SelectedItems = value;
|
|
6091
|
+
this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
|
|
6092
|
+
break;
|
|
6093
|
+
//FileUpload
|
|
6094
|
+
case DataType.File:
|
|
6095
|
+
let File = new FileUploadOptions();
|
|
6096
|
+
File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6097
|
+
File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6098
|
+
File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6099
|
+
File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6100
|
+
File.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6101
|
+
File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6102
|
+
File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
6103
|
+
File.Value = value;
|
|
6104
|
+
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
|
|
6105
|
+
break;
|
|
6106
|
+
case DataType.MultiFile:
|
|
6107
|
+
let MultiFile = new FileUploadOptions();
|
|
6108
|
+
File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6109
|
+
File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6110
|
+
File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6111
|
+
File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6112
|
+
File.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6113
|
+
File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6114
|
+
MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
6115
|
+
MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
|
|
6116
|
+
MultiFile.IsMultipleFile = true;
|
|
6117
|
+
MultiFile.Value = value;
|
|
6118
|
+
this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
|
|
6119
|
+
break;
|
|
6120
|
+
//ImageUpload
|
|
6121
|
+
case DataType.Image:
|
|
6122
|
+
let Image = new ImageUploadOptions();
|
|
6123
|
+
Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6124
|
+
Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6125
|
+
Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6126
|
+
Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6127
|
+
Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6128
|
+
Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6129
|
+
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
6130
|
+
Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
6131
|
+
Image.Value = value;
|
|
6132
|
+
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
|
|
6133
|
+
break;
|
|
6134
|
+
case DataType.CoverPhoto:
|
|
6135
|
+
let CoverPhoto = new ImageUploadOptions();
|
|
6136
|
+
CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6137
|
+
CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6138
|
+
CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6139
|
+
CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6140
|
+
CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6141
|
+
CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6142
|
+
if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
|
|
6143
|
+
CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
|
|
6144
|
+
CoverPhoto.Value = value;
|
|
6145
|
+
this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
|
|
6146
|
+
break;
|
|
6147
|
+
//Mobile
|
|
6148
|
+
case DataType.Mobile:
|
|
6149
|
+
let Mobile = new PhoneOptions();
|
|
6150
|
+
Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6151
|
+
Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6152
|
+
Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6153
|
+
Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6154
|
+
Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6155
|
+
Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6156
|
+
Mobile.AllowSearch = true;
|
|
6157
|
+
Mobile.PhoneValidation = true;
|
|
6158
|
+
Mobile.SelectFirstCountry = true;
|
|
6159
|
+
Mobile.EnablePlaceholder = true;
|
|
6160
|
+
Mobile.Value = value;
|
|
6161
|
+
this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
|
|
6162
|
+
break;
|
|
6163
|
+
//MultilineText
|
|
6164
|
+
case DataType.MultilineText:
|
|
6165
|
+
let MultilineText = new TextAreaOptions();
|
|
6166
|
+
MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6167
|
+
MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6168
|
+
MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6169
|
+
MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6170
|
+
MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6171
|
+
MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6172
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
6173
|
+
MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
6174
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
6175
|
+
MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
6176
|
+
MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
|
|
6177
|
+
MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
6178
|
+
MultilineText.Value = value;
|
|
6179
|
+
this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
|
|
6180
|
+
break;
|
|
6181
|
+
//HTML
|
|
6182
|
+
case DataType.HTML:
|
|
6183
|
+
let HTML = new HtmlEditorOptions();
|
|
6184
|
+
HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6185
|
+
HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6186
|
+
HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6187
|
+
HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6188
|
+
HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6189
|
+
HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6190
|
+
if (this.RepeaterField.ControlOptions.maxLength)
|
|
6191
|
+
HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
|
|
6192
|
+
if (this.RepeaterField.ControlOptions.minLength)
|
|
6193
|
+
HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
|
|
6194
|
+
HTML.Height = this.RepeaterField.ControlOptions.rows;
|
|
6195
|
+
HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
|
|
6196
|
+
HTML.Value = value;
|
|
6197
|
+
this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
|
|
6198
|
+
break;
|
|
6199
|
+
//Boolean
|
|
6200
|
+
case DataType.Boolean:
|
|
6201
|
+
let Boolean = new ToggleSlideOptions();
|
|
6202
|
+
Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6203
|
+
Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6204
|
+
Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6205
|
+
Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6206
|
+
Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6207
|
+
Boolean.Value = value;
|
|
6208
|
+
this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
|
|
6209
|
+
break;
|
|
6210
|
+
//Location
|
|
6211
|
+
case DataType.Location:
|
|
6212
|
+
let Location = new MapAutoCompleteOptions();
|
|
6213
|
+
Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
|
|
6214
|
+
Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
|
|
6215
|
+
Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
|
|
6216
|
+
Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
|
|
6217
|
+
Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
|
|
6218
|
+
Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
|
|
6219
|
+
Location.Value = value;
|
|
6220
|
+
this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
|
|
6221
|
+
break;
|
|
6222
|
+
default:
|
|
6223
|
+
break;
|
|
6224
|
+
}
|
|
6167
6225
|
}
|
|
6168
|
-
}
|
|
6169
6226
|
}
|
|
6170
6227
|
}
|
|
6171
6228
|
RepeaterFieldBuilderComponent.decorators = [
|
|
@@ -6183,7 +6240,8 @@ RepeaterFieldBuilderComponent.propDecorators = {
|
|
|
6183
6240
|
group: [{ type: Input }],
|
|
6184
6241
|
itemNumber: [{ type: Input }],
|
|
6185
6242
|
controlNumber: [{ type: Input }],
|
|
6186
|
-
RepeaterField: [{ type: Input }]
|
|
6243
|
+
RepeaterField: [{ type: Input }],
|
|
6244
|
+
itemsValue: [{ type: Input }]
|
|
6187
6245
|
};
|
|
6188
6246
|
|
|
6189
6247
|
class RepeaterItemFieldComponent {
|
|
@@ -6205,6 +6263,108 @@ RepeaterItemFieldComponent.propDecorators = {
|
|
|
6205
6263
|
itemIndex: [{ type: Input }]
|
|
6206
6264
|
};
|
|
6207
6265
|
|
|
6266
|
+
class RepeaterTableComponent {
|
|
6267
|
+
constructor(utilityService) {
|
|
6268
|
+
this.utilityService = utilityService;
|
|
6269
|
+
this.items = [];
|
|
6270
|
+
this.originalItems = [];
|
|
6271
|
+
}
|
|
6272
|
+
ngOnInit() {
|
|
6273
|
+
this.repeaterGroup = new FormGroup({});
|
|
6274
|
+
this.group.addControl(this.options.Name, this.repeaterGroup);
|
|
6275
|
+
if (this.options.RepeaterValue.length > 0) {
|
|
6276
|
+
this.originalItems = this.options.RepeaterValue;
|
|
6277
|
+
for (let index = 0; index < this.options.RepeaterValue.length; index++) {
|
|
6278
|
+
this.items.push(index + 1);
|
|
6279
|
+
}
|
|
6280
|
+
}
|
|
6281
|
+
else
|
|
6282
|
+
for (let index = 0; index < this.options.MinRequiredItems; index++) {
|
|
6283
|
+
this.items.push(index);
|
|
6284
|
+
}
|
|
6285
|
+
this.repeaterGroup.valueChanges.subscribe((res) => {
|
|
6286
|
+
let result = [];
|
|
6287
|
+
let rowNumber = [];
|
|
6288
|
+
let addItems = [];
|
|
6289
|
+
for (const key in this.repeaterGroup.controls) {
|
|
6290
|
+
if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
|
|
6291
|
+
const keySplitArr = key.split('.');
|
|
6292
|
+
let item = {
|
|
6293
|
+
[keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
|
|
6294
|
+
};
|
|
6295
|
+
addItems.push(item);
|
|
6296
|
+
if (!rowNumber.includes(keySplitArr[1]))
|
|
6297
|
+
rowNumber.push(keySplitArr[1]);
|
|
6298
|
+
}
|
|
6299
|
+
}
|
|
6300
|
+
for (let index = 0; index < rowNumber.length; index++) {
|
|
6301
|
+
const row = rowNumber[index];
|
|
6302
|
+
let addObject = {};
|
|
6303
|
+
let filteredElements = addItems.filter(item => item[row]);
|
|
6304
|
+
for (let index = 0; index < filteredElements.length; index++) {
|
|
6305
|
+
const filteredElement = filteredElements[index];
|
|
6306
|
+
for (const key in filteredElement) {
|
|
6307
|
+
if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
|
|
6308
|
+
const element = filteredElement[key];
|
|
6309
|
+
for (const key in element) {
|
|
6310
|
+
if (Object.prototype.hasOwnProperty.call(element, key)) {
|
|
6311
|
+
const value = element[key];
|
|
6312
|
+
addObject[key] = value;
|
|
6313
|
+
}
|
|
6314
|
+
}
|
|
6315
|
+
}
|
|
6316
|
+
}
|
|
6317
|
+
}
|
|
6318
|
+
result.push(addObject);
|
|
6319
|
+
}
|
|
6320
|
+
this.options.RepeaterValue = result;
|
|
6321
|
+
});
|
|
6322
|
+
}
|
|
6323
|
+
deleteItem(Index) {
|
|
6324
|
+
if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
|
|
6325
|
+
return;
|
|
6326
|
+
let deletedControls = [];
|
|
6327
|
+
let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
|
|
6328
|
+
for (const key in this.repeaterGroup.controls) {
|
|
6329
|
+
if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
|
|
6330
|
+
for (let index = 0; index < controlNames.length; index++) {
|
|
6331
|
+
const element = controlNames[index];
|
|
6332
|
+
const keySplitArr = key.split('.');
|
|
6333
|
+
if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
|
|
6334
|
+
const element = this.repeaterGroup.controls[key];
|
|
6335
|
+
deletedControls.push({ [key]: element });
|
|
6336
|
+
}
|
|
6337
|
+
}
|
|
6338
|
+
}
|
|
6339
|
+
}
|
|
6340
|
+
for (let index = 0; index < deletedControls.length; index++) {
|
|
6341
|
+
const element = deletedControls[index];
|
|
6342
|
+
for (const key in element) {
|
|
6343
|
+
if (Object.prototype.hasOwnProperty.call(element, key)) {
|
|
6344
|
+
this.repeaterGroup.removeControl(key);
|
|
6345
|
+
}
|
|
6346
|
+
}
|
|
6347
|
+
}
|
|
6348
|
+
this.items = this.items.filter((res) => res != this.items[Index]);
|
|
6349
|
+
}
|
|
6350
|
+
addItem() {
|
|
6351
|
+
this.items.push(this.items[this.items.length - 1] + 1);
|
|
6352
|
+
}
|
|
6353
|
+
}
|
|
6354
|
+
RepeaterTableComponent.decorators = [
|
|
6355
|
+
{ type: Component, args: [{
|
|
6356
|
+
selector: 'BBSF-repeater-table',
|
|
6357
|
+
template: "<div class=\"b-control b-repeater-table\">\r\n <table class=\"{{options.RepeaterTableExtraClasses}}\">\r\n <thead>\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" class=\"min-w-150px\">{{item.HeaderTitle}}</th>\r\n <th>{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td>\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired) ||(originalItems.length-1>=i)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n <tfoot>\r\n <tr>\r\n <td colspan=\"3\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 d-grid gap-2\"> \r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\"><span\r\n [innerHTML]=\"options.AddButtonText\"></span></button>\r\n </div>\r\n </div>\r\n </td>\r\n </tr>\r\n </tfoot>\r\n </table>\r\n</div>"
|
|
6358
|
+
},] }
|
|
6359
|
+
];
|
|
6360
|
+
RepeaterTableComponent.ctorParameters = () => [
|
|
6361
|
+
{ type: UtilityService }
|
|
6362
|
+
];
|
|
6363
|
+
RepeaterTableComponent.propDecorators = {
|
|
6364
|
+
group: [{ type: Input }],
|
|
6365
|
+
options: [{ type: Input }]
|
|
6366
|
+
};
|
|
6367
|
+
|
|
6208
6368
|
let options;
|
|
6209
6369
|
let AppInjector;
|
|
6210
6370
|
FullCalendarModule.registerPlugins([
|
|
@@ -6252,6 +6412,7 @@ BBSFControlsModule.decorators = [
|
|
|
6252
6412
|
RepeaterFieldBuilderComponent,
|
|
6253
6413
|
NgTemplateNameDirective,
|
|
6254
6414
|
RepeaterItemFieldComponent,
|
|
6415
|
+
RepeaterTableComponent
|
|
6255
6416
|
],
|
|
6256
6417
|
imports: [
|
|
6257
6418
|
CommonModule,
|
|
@@ -6346,6 +6507,7 @@ BBSFControlsModule.decorators = [
|
|
|
6346
6507
|
RepeaterFieldBuilderComponent,
|
|
6347
6508
|
NgTemplateNameDirective,
|
|
6348
6509
|
RepeaterItemFieldComponent,
|
|
6510
|
+
RepeaterTableComponent
|
|
6349
6511
|
]
|
|
6350
6512
|
},] }
|
|
6351
6513
|
];
|
|
@@ -6710,6 +6872,7 @@ class RepeaterField {
|
|
|
6710
6872
|
class RepeaterOptions {
|
|
6711
6873
|
constructor() {
|
|
6712
6874
|
this.MinRequiredItems = 1;
|
|
6875
|
+
this.ActionLabelKey = "";
|
|
6713
6876
|
this.AddButtonText = "Add";
|
|
6714
6877
|
this.DeleteButtonText = "Delete";
|
|
6715
6878
|
this.RepeaterValue = [];
|
|
@@ -7040,5 +7203,5 @@ var FileType;
|
|
|
7040
7203
|
* Generated bundle index. Do not edit.
|
|
7041
7204
|
*/
|
|
7042
7205
|
|
|
7043
|
-
export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageType, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, PropertyLocation, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
|
|
7206
|
+
export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageType, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, PropertyLocation, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
|
|
7044
7207
|
//# sourceMappingURL=bnsights-bbsf-controls.js.map
|