@bnsights/bbsf-controls 1.0.94 → 1.0.96
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 +10 -1
- package/bnsights-bbsf-controls-1.0.96.tgz +0 -0
- package/bnsights-bbsf-controls.d.ts +1 -1
- package/bnsights-bbsf-controls.metadata.json +1 -1
- package/bundles/bnsights-bbsf-controls.umd.js +531 -417
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
- package/esm2015/bnsights-bbsf-controls.js +2 -2
- package/esm2015/lib/Shared/{components → Components}/ng-tag-input.js +1 -1
- package/esm2015/lib/Shared/Enums/InputType.js +2 -1
- package/esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js +4 -2
- package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +123 -88
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +4 -2
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +2 -2
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +3 -3
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +5 -2
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +12 -2
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +2 -2
- package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +2 -2
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +2 -2
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +2 -2
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +2 -2
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +6 -2
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +6 -2
- package/esm2015/lib/controls/Phone/Phone.component.js +9 -7
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +2 -2
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +5 -2
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +2 -2
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +8 -2
- package/esm2015/lib/controls/TextArea/TextArea.component.js +4 -2
- package/esm2015/lib/controls/TextBox/TextBox.component.js +78 -40
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +5 -2
- package/esm2015/lib/controls/bbsf-controls.module.js +9 -8
- package/fesm2015/bnsights-bbsf-controls.js +527 -414
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
- package/lib/Shared/Enums/InputType.d.ts +2 -1
- package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +11 -9
- package/lib/Shared/Models/RepeaterOptions.d.ts +1 -0
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +2 -2
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +1 -0
- package/lib/controls/DropdownList/DropdownList.component.d.ts +1 -0
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +1 -1
- package/lib/controls/Phone/Phone.component.d.ts +6 -6
- package/lib/controls/RadioButton/RadioButton.component.d.ts +1 -0
- package/lib/controls/TagsInput/TagsInput.component.d.ts +1 -0
- package/lib/controls/TextBox/TextBox.component.d.ts +3 -0
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/assets/sass/base.scss +7 -0
- package/bnsights-bbsf-controls-1.0.94.tgz +0 -0
- /package/esm2015/lib/Shared/{components → Components}/app-base-component.js +0 -0
- /package/lib/Shared/{components → Components}/app-base-component.d.ts +0 -0
- /package/lib/Shared/{components → Components}/ng-tag-input.d.ts +0 -0
|
@@ -63,14 +63,14 @@ class ErrorMassageValidation {
|
|
|
63
63
|
}
|
|
64
64
|
// tslint:disable-next-line: deprecation
|
|
65
65
|
static showerror(FormControlName) {
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
let form = ErrorMassageValidation.controlContainerstatic
|
|
67
|
+
.control;
|
|
68
68
|
let control = form.get(FormControlName);
|
|
69
69
|
//console.log(control)
|
|
70
|
-
control.setErrors({
|
|
70
|
+
control.setErrors({ minlength: true });
|
|
71
71
|
control.markAsTouched();
|
|
72
72
|
}
|
|
73
|
-
// isEmailRegisterd(Email: string)
|
|
73
|
+
// isEmailRegisterd(Email: string)
|
|
74
74
|
// {
|
|
75
75
|
// let resource:object={
|
|
76
76
|
// email:Email
|
|
@@ -82,92 +82,127 @@ class ErrorMassageValidation {
|
|
|
82
82
|
// .pipe(map(response => response.json()))
|
|
83
83
|
// }
|
|
84
84
|
getErrorMassageValidation(error) {
|
|
85
|
-
;
|
|
86
|
-
let result = "";
|
|
85
|
+
let result = '';
|
|
87
86
|
switch (error.key) {
|
|
88
|
-
case
|
|
89
|
-
result = this.utilityService.getResourceValue(
|
|
87
|
+
case 'required':
|
|
88
|
+
result = this.utilityService.getResourceValue('RequiredValidationKey');
|
|
90
89
|
break;
|
|
91
|
-
case
|
|
92
|
-
result = this.utilityService.getResourceValue(
|
|
90
|
+
case 'email':
|
|
91
|
+
result = this.utilityService.getResourceValue('EmailValidationKey');
|
|
93
92
|
break;
|
|
94
|
-
case
|
|
95
|
-
result = this.utilityService.getResourceValue(
|
|
93
|
+
case 'EmailValidationKey':
|
|
94
|
+
result = this.utilityService.getResourceValue('EmailValidationKey');
|
|
96
95
|
break;
|
|
97
|
-
case
|
|
98
|
-
result = this.utilityService.getResourceValue(
|
|
96
|
+
case 'URLValidationKey':
|
|
97
|
+
result = this.utilityService.getResourceValue('urlValidationError');
|
|
99
98
|
break;
|
|
100
|
-
case
|
|
101
|
-
result = this.utilityService.getResourceValue(
|
|
99
|
+
case 'pattern':
|
|
100
|
+
result = this.utilityService.getResourceValue('NumberValidationKey');
|
|
102
101
|
break;
|
|
103
|
-
case
|
|
104
|
-
result =
|
|
102
|
+
case 'maxlength':
|
|
103
|
+
result =
|
|
104
|
+
this.utilityService.getResourceValue('MaxLenghtValidationKey') +
|
|
105
|
+
' ' +
|
|
106
|
+
error.value.requiredLength;
|
|
105
107
|
break;
|
|
106
|
-
case
|
|
107
|
-
result =
|
|
108
|
+
case 'minlength':
|
|
109
|
+
result =
|
|
110
|
+
this.utilityService.getResourceValue('MinLenghtValidationKey') +
|
|
111
|
+
' ' +
|
|
112
|
+
error.value.requiredLength;
|
|
108
113
|
break;
|
|
109
|
-
case
|
|
110
|
-
result =
|
|
114
|
+
case 'min':
|
|
115
|
+
result =
|
|
116
|
+
this.utilityService.getResourceValue('MinValueValidationKey') +
|
|
117
|
+
' ' +
|
|
118
|
+
error.value.min;
|
|
111
119
|
break;
|
|
112
|
-
case
|
|
113
|
-
result =
|
|
120
|
+
case 'max':
|
|
121
|
+
result =
|
|
122
|
+
this.utilityService.getResourceValue('MaxValueValidationKey') +
|
|
123
|
+
' ' +
|
|
124
|
+
error.value.max;
|
|
114
125
|
break;
|
|
115
|
-
case
|
|
116
|
-
result = this.utilityService.getResourceValue(
|
|
126
|
+
case 'IntegerNumberValidationKey':
|
|
127
|
+
result = this.utilityService.getResourceValue('IntegerNumberValidationKey');
|
|
117
128
|
break;
|
|
118
|
-
case
|
|
119
|
-
result = this.utilityService.getResourceValue(
|
|
129
|
+
case 'PositiveNumberValidationKey':
|
|
130
|
+
result = this.utilityService.getResourceValue('PositiveNumberValidationKey');
|
|
120
131
|
break;
|
|
121
|
-
case
|
|
122
|
-
result = this.utilityService.getResourceValue(
|
|
132
|
+
case 'validatePhoneNumber':
|
|
133
|
+
result = this.utilityService.getResourceValue('PhoneNumberValidationKey');
|
|
123
134
|
break;
|
|
124
|
-
case
|
|
125
|
-
result =
|
|
135
|
+
case 'mask':
|
|
136
|
+
result =
|
|
137
|
+
this.utilityService.getResourceValue('MaskValidationKey') +
|
|
138
|
+
' ' +
|
|
139
|
+
error.value.requiredMask;
|
|
126
140
|
break;
|
|
127
|
-
case
|
|
128
|
-
result = this.utilityService.getResourceValue(
|
|
141
|
+
case 'PasswordComplexityHasNumber':
|
|
142
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasNumber');
|
|
129
143
|
break;
|
|
130
|
-
case
|
|
131
|
-
result = this.utilityService.getResourceValue(
|
|
144
|
+
case 'ArabicLetterOnly':
|
|
145
|
+
result = this.utilityService.getResourceValue('ArabicLetterOnly');
|
|
132
146
|
break;
|
|
133
|
-
case
|
|
134
|
-
result = this.utilityService.getResourceValue(
|
|
147
|
+
case 'EnglishLetterOnly':
|
|
148
|
+
result = this.utilityService.getResourceValue('EnglishLetterOnly');
|
|
135
149
|
break;
|
|
136
|
-
case
|
|
137
|
-
result = this.utilityService.getResourceValue(
|
|
150
|
+
case 'ArabicIsRequiredAndOnly50CharactersEnglish':
|
|
151
|
+
result = this.utilityService.getResourceValue('ArabicIsRequiredAndOnly50CharactersEnglish');
|
|
138
152
|
break;
|
|
139
|
-
case
|
|
140
|
-
result = this.utilityService.getResourceValue(
|
|
153
|
+
case 'PasswordComplexityHasCapitalLetter':
|
|
154
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasCapitalLetter');
|
|
141
155
|
break;
|
|
142
|
-
case
|
|
143
|
-
result = this.utilityService.getResourceValue(
|
|
156
|
+
case 'PasswordComplexityHasSmallLetter':
|
|
157
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasSmallLetter');
|
|
144
158
|
break;
|
|
145
|
-
case
|
|
146
|
-
result = this.utilityService.getResourceValue(
|
|
159
|
+
case 'PasswordComplexityHasSpecialLetter':
|
|
160
|
+
result = this.utilityService.getResourceValue('PasswordComplexityHasSpecialLetter');
|
|
147
161
|
break;
|
|
148
|
-
case
|
|
149
|
-
result =
|
|
162
|
+
case 'MaxWordCountValidationKey':
|
|
163
|
+
result =
|
|
164
|
+
this.utilityService.getResourceValue('MaxWordCountValidationKey') +
|
|
165
|
+
' ' +
|
|
166
|
+
error.value;
|
|
150
167
|
break;
|
|
151
|
-
case
|
|
152
|
-
result = this.utilityService.getResourceValue(
|
|
168
|
+
case 'NewSelectionValidationKey':
|
|
169
|
+
result = this.utilityService.getResourceValue('NewSelectionValidationKey');
|
|
153
170
|
break;
|
|
154
|
-
case
|
|
155
|
-
result =
|
|
171
|
+
case 'MaxFileCountValidationKey':
|
|
172
|
+
result =
|
|
173
|
+
this.utilityService.getResourceValue('MaxFileCountValidationKey') +
|
|
174
|
+
' ' +
|
|
175
|
+
error.value;
|
|
156
176
|
break;
|
|
157
|
-
case
|
|
158
|
-
result =
|
|
177
|
+
case 'MinFileCountValidationKey':
|
|
178
|
+
result =
|
|
179
|
+
this.utilityService.getResourceValue('MinFileCountValidationKey') +
|
|
180
|
+
' ' +
|
|
181
|
+
error.value;
|
|
159
182
|
break;
|
|
160
|
-
case
|
|
161
|
-
result =
|
|
183
|
+
case 'MaxSizeForAllFilesInMB':
|
|
184
|
+
result =
|
|
185
|
+
this.utilityService.getResourceValue('MaxSizeForAllFilesInMB') +
|
|
186
|
+
' ' +
|
|
187
|
+
error.value;
|
|
162
188
|
break;
|
|
163
|
-
case
|
|
164
|
-
result =
|
|
189
|
+
case 'FileMaxSizeInMB':
|
|
190
|
+
result =
|
|
191
|
+
this.utilityService.getResourceValue('FileMaxSizeInMB') +
|
|
192
|
+
' ' +
|
|
193
|
+
error.value;
|
|
165
194
|
break;
|
|
166
|
-
case
|
|
167
|
-
result =
|
|
195
|
+
case 'ToolTipTypeError':
|
|
196
|
+
result =
|
|
197
|
+
this.utilityService.getResourceValue('ToolTipTypeError') +
|
|
198
|
+
' ' +
|
|
199
|
+
error.value;
|
|
168
200
|
break;
|
|
169
|
-
case
|
|
170
|
-
result = this.utilityService.getResourceValue(
|
|
201
|
+
case 'InvalidEndDate':
|
|
202
|
+
result = this.utilityService.getResourceValue('InvalidEndDate');
|
|
203
|
+
break;
|
|
204
|
+
case 'InvalidStartDate':
|
|
205
|
+
result = this.utilityService.getResourceValue('InvalidStartDate');
|
|
171
206
|
break;
|
|
172
207
|
default:
|
|
173
208
|
break;
|
|
@@ -192,6 +227,7 @@ var InputType;
|
|
|
192
227
|
InputType[InputType["Email"] = 3] = "Email";
|
|
193
228
|
InputType[InputType["Number"] = 4] = "Number";
|
|
194
229
|
InputType[InputType["EID"] = 5] = "EID";
|
|
230
|
+
InputType[InputType["URL"] = 6] = "URL";
|
|
195
231
|
})(InputType || (InputType = {}));
|
|
196
232
|
|
|
197
233
|
class ControlUtility {
|
|
@@ -600,12 +636,15 @@ class DateInputComponent {
|
|
|
600
636
|
this.DatePickerFormControl.updateValueAndValidity();
|
|
601
637
|
});
|
|
602
638
|
}
|
|
639
|
+
getDateValue() {
|
|
640
|
+
return this.options.Value ? this.datepipe.transform(this.options.Value, 'MMM d, y, h:mm a') : this.UtilityService.getResourceValue('NA');
|
|
641
|
+
}
|
|
603
642
|
}
|
|
604
643
|
DateInputComponent.controlContainerstatic = null;
|
|
605
644
|
DateInputComponent.decorators = [
|
|
606
645
|
{ type: Component, args: [{
|
|
607
646
|
selector: 'BBSF-DateTimePicker',
|
|
608
|
-
template: "
|
|
647
|
+
template: "<div class=\"form-group bbsf-control bbsf-datetime-picker\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\" [dir]=\"textDir\" class=\"form-control bnsights-control\r\n {{options.ExtraClasses}} \" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\" [class.is-invalid]=\"DatePickerFormControl.invalid &&\r\n DatePickerFormControl.touched\" [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\"\r\n [selectMode]=\"getSelectMode(options.SelectMode)\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\" [startView]=\"startView\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0\r\n 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\"\r\n fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\"\r\n d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\"\r\n fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\">{{getDateValue()}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DatePickerFormControl.invalid &&\r\n DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched\r\n )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>",
|
|
609
648
|
providers: [
|
|
610
649
|
{ provide: OwlDateTimeIntl, useClass: DefaultIntl }
|
|
611
650
|
]
|
|
@@ -1109,7 +1148,7 @@ FileUploadComponent.controlContainerstatic = null;
|
|
|
1109
1148
|
FileUploadComponent.decorators = [
|
|
1110
1149
|
{ type: Component, args: [{
|
|
1111
1150
|
selector: 'BBSF-FileUplaod',
|
|
1112
|
-
template: "<div class=\"form-group bbsf-control bbsf-file-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div ng2FileDrop class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n
|
|
1151
|
+
template: "<div class=\"form-group bbsf-control bbsf-file-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div ng2FileDrop class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n *ngIf=\"(options.IsDropZone)&&(!((options.IsMultipleFile==false)&&(uploader.queue.length)>0))&&!options.IsReadonly\"\r\n [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\" (onFileDrop)=\"onFileChange()\" (fileOver)=\"fileOverAnother($event)\"\r\n [uploader]=\"uploader\" [accept]=\"AcceptedType\" (change)=\"onFileChange()\" id=\"{{options.Name}}\"\r\n multiple=\"{{options.IsMultipleFile?'multiple':''}}\" aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\"\r\n formControlName=\"{{options.Name}}\" #fileInput [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\"\r\n d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\"\r\n fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"DragAndDropHere\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\"\r\n *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"(!options.IsDropZone)&&!(isHideInput())&&!options.IsReadonly\" (click)=\"fileInput.click();\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\"\r\n d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\"\r\n fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"Upload\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\"\r\n *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n <input ng2FileSelect [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"fileSelector customFileUploadPlacment hidden v-required-multiplefiles d-none\" multiple=\"{{options.IsMultipleFile?'multiple':''}}\"\r\n name=\"file\" type=\"file\" value=\"\" autocomplete=\"off\" (change)=\"onFileChange()\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n id=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly && !options.Value\">\r\n <span class=\"readonly-view\">{{UtilityService.getResourceValue('NA')}}</span>\r\n </div>\r\n </div>\r\n <!--items uploaded-->\r\n <div class=\"uploaded-items\">\r\n <div class=\"btn-group\" *ngFor=\"let item of uploader.queue\">\r\n <a href=\"{{ item?.file?.rawFile?.url }}\" class=\"btn btn-download-file btn-sm\" download>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M21 22H3C2.4 22 2 21.6 2 21C2 20.4 2.4 20 3 20H21C21.6 20 22 20.4 22 21C22 21.6 21.6 22 21 22ZM13 13.4V3C13 2.4 12.6 2 12 2C11.4 2 11 2.4 11 3V13.4H13Z\"\r\n fill=\"currentColor\"></path>\r\n <path opacity=\"0.3\" d=\"M7 13.4H17L12.7 17.7C12.3 18.1 11.7 18.1 11.3 17.7L7 13.4Z\" fill=\"currentColor\"></path>\r\n </svg>\r\n <span class=\"file-name\">{{ item?.file?.name }}</span>\r\n </a>\r\n <button *ngIf=\"!options.IsReadonly\" class=\"btn btn-download-file btn-sm btn-danger\" (click)=\"item.remove();removeFromControlValue(item)\">\r\n <i class=\"fa fa-times px-0\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(fileUploadFormControl.invalid && fileUploadFormControl.touched)\">\r\n {{getErrorValidation(fileUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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\r\n</div>"
|
|
1113
1152
|
},] }
|
|
1114
1153
|
];
|
|
1115
1154
|
FileUploadComponent.ctorParameters = () => [
|
|
@@ -1274,6 +1313,10 @@ class MultiLingualTextBoxComponent {
|
|
|
1274
1313
|
}
|
|
1275
1314
|
this.ArabicFormControl.setValue(this.options.Value.Arabic);
|
|
1276
1315
|
this.EnglishFormControl.setValue(this.options.Value.English);
|
|
1316
|
+
if (this.options.IsReadonly && !this.options.Value) {
|
|
1317
|
+
this.options.Value.Arabic = this.UtilityService.getResourceValue('NA');
|
|
1318
|
+
this.options.Value.English = this.UtilityService.getResourceValue('NA');
|
|
1319
|
+
}
|
|
1277
1320
|
this.MultiLingualTextBoxFormControlHost.ngSubmit.subscribe((value) => {
|
|
1278
1321
|
this.group.markAllAsTouched();
|
|
1279
1322
|
this.markAllAsTouched = true;
|
|
@@ -1537,7 +1580,7 @@ MultiLingualTextBoxComponent.controlContainerstatic = null;
|
|
|
1537
1580
|
MultiLingualTextBoxComponent.decorators = [
|
|
1538
1581
|
{ type: Component, args: [{
|
|
1539
1582
|
selector: 'BBSF-MultiLingualTextBox',
|
|
1540
|
-
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox form-group mb-0\"
|
|
1583
|
+
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox form-group mb-0\"\r\n [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div\r\n [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\"\r\n *ngIf=\"ShowEnglishTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\"\r\n [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span\r\n *ngIf=\"(((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish))&&!options.IsReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\"\r\n [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\"\r\n [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\"\r\n *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"ltr\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\"\r\n maxlength=\"{{options.MaxLength}}\"\r\n minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\"\r\n (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\"\r\n *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\"\r\n [innerHTML]=\"options.Value.English\"></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\"\r\n *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}\r\n Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\"\r\n [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\"\r\n *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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div\r\n [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\"\r\n *ngIf=\"ShowArabicTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\"\r\n [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span\r\n *ngIf=\"(((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic)&&!options.IsReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\"\r\n [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\"\r\n [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\"\r\n minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\"\r\n *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\"\r\n [innerHTML]=\"options.Value.Arabic\"></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\"\r\n *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}\r\n Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\"\r\n [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\"\r\n *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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n"
|
|
1541
1584
|
},] }
|
|
1542
1585
|
];
|
|
1543
1586
|
MultiLingualTextBoxComponent.ctorParameters = () => [
|
|
@@ -1602,6 +1645,8 @@ class TextAreaComponent {
|
|
|
1602
1645
|
TextAreaComponent.controlContainerstatic = this.controlContainer;
|
|
1603
1646
|
}
|
|
1604
1647
|
ngOnInit() {
|
|
1648
|
+
if (this.options.IsReadonly && !this.options.Value)
|
|
1649
|
+
this.options.Value = this.UtilityService.getResourceValue('NA');
|
|
1605
1650
|
if (this.options.ForceDirection)
|
|
1606
1651
|
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
1607
1652
|
else
|
|
@@ -1728,7 +1773,7 @@ TextAreaComponent.controlContainerstatic = null;
|
|
|
1728
1773
|
TextAreaComponent.decorators = [
|
|
1729
1774
|
{ type: Component, args: [{
|
|
1730
1775
|
selector: 'BBSF-TextArea',
|
|
1731
|
-
template: "<div class=\"form-group bbsf-control bbsf-textarea\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control {{options.ExtraClasses}}\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n [dir]=\"textDir\" 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}}\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </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"
|
|
1776
|
+
template: "<div class=\"form-group bbsf-control bbsf-textarea\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control {{options.ExtraClasses}}\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n [dir]=\"textDir\" 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}}\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" >{{options.Value}}</span>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </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"
|
|
1732
1777
|
},] }
|
|
1733
1778
|
];
|
|
1734
1779
|
TextAreaComponent.ctorParameters = () => [
|
|
@@ -1901,6 +1946,10 @@ class MultiLingualTextAreaComponent {
|
|
|
1901
1946
|
this.group.markAllAsTouched();
|
|
1902
1947
|
this.markAllAsTouched = true;
|
|
1903
1948
|
});
|
|
1949
|
+
if (this.options.IsReadonly && !this.options.Value) {
|
|
1950
|
+
this.options.Value.Arabic = this.UtilityService.getResourceValue('NA');
|
|
1951
|
+
this.options.Value.English = this.UtilityService.getResourceValue('NA');
|
|
1952
|
+
}
|
|
1904
1953
|
});
|
|
1905
1954
|
}
|
|
1906
1955
|
onTextChange() {
|
|
@@ -2148,7 +2197,7 @@ MultiLingualTextAreaComponent.controlContainerstatic = null;
|
|
|
2148
2197
|
MultiLingualTextAreaComponent.decorators = [
|
|
2149
2198
|
{ type: Component, args: [{
|
|
2150
2199
|
selector: 'BBSF-MultiLingualTextArea',
|
|
2151
|
-
template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea form-group mb-0\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\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 </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(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()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\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 </div>\r\n </div>\r\n </div>\r\n </div>\r\n"
|
|
2200
|
+
template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea form-group mb-0\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"(((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish)&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.Value.English\" ></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\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 </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic)&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(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()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.Value.Arabic\" ></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\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 </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n"
|
|
2152
2201
|
},] }
|
|
2153
2202
|
];
|
|
2154
2203
|
MultiLingualTextAreaComponent.ctorParameters = () => [
|
|
@@ -2262,7 +2311,7 @@ CheckBoxComponent.decorators = [
|
|
|
2262
2311
|
{ type: Component, args: [{
|
|
2263
2312
|
// tslint:disable-next-line: component-selector
|
|
2264
2313
|
selector: 'BBSF-CheckBox',
|
|
2265
|
-
template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </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"
|
|
2314
|
+
template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input *ngIf=\"!options.IsReadonly\" class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{options.Value}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </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"
|
|
2266
2315
|
},] }
|
|
2267
2316
|
];
|
|
2268
2317
|
CheckBoxComponent.ctorParameters = () => [
|
|
@@ -2391,6 +2440,16 @@ class DropdownListComponent {
|
|
|
2391
2440
|
}
|
|
2392
2441
|
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
2393
2442
|
}
|
|
2443
|
+
getSelectedItemValue() {
|
|
2444
|
+
if (this.options.SelectedItems) {
|
|
2445
|
+
if (this.options.SingleSelection)
|
|
2446
|
+
return this.options.DataSource.filter(item => item[this.options.ItemTempletkey] == this.options.SelectedItems)[0][this.options.ItemTempletvalue];
|
|
2447
|
+
else
|
|
2448
|
+
return this.options.DataSource.filter(item => this.options.SelectedItems.includes(item[this.options.ItemTempletkey])).map(item => item[this.options.ItemTempletvalue]);
|
|
2449
|
+
}
|
|
2450
|
+
else
|
|
2451
|
+
return this.UtilityService.getResourceValue('NA');
|
|
2452
|
+
}
|
|
2394
2453
|
onItemSelect() {
|
|
2395
2454
|
this.onChangeService.ChangeValue(this.options.Name);
|
|
2396
2455
|
let originalValue = this.options.SelectedItems;
|
|
@@ -2436,7 +2495,7 @@ DropdownListComponent.decorators = [
|
|
|
2436
2495
|
{ type: Component, args: [{
|
|
2437
2496
|
// tslint:disable-next-line: component-selector
|
|
2438
2497
|
selector: 'BBSF-DropdownList',
|
|
2439
|
-
template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n
|
|
2498
|
+
template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.DisableBootstrapSelect==false&&!options.IsReadonly\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\" [notFoundText]=\"options.NotFoundText\"\r\n [maxSelectedItems]=\"options.LimitSelection\" [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\"\r\n [readonly]=\"options.IsDisabled\" [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [selectableGroup]=\"true\"\r\n [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\" [(ngModel)]=\"options.SelectedItems\" (change)=\"onItemSelect()\"\r\n (clear)=\"Clear()\" [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.DisabledItemsTooltipValue : ''}}\" id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\" [ngModelOptions]=\"{standalone: true}\"\r\n [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.DisableBootstrapSelect&&!options.IsReadonly\" class=\"form-control\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n (change)=\"onItemSelect()\" [(ngModel)]=\"options.SelectedItems\" [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--{{UtilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\">{{getSelectedItemValue()}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </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 </div>\r\n</div>"
|
|
2440
2499
|
},] }
|
|
2441
2500
|
];
|
|
2442
2501
|
DropdownListComponent.ctorParameters = () => [
|
|
@@ -2497,6 +2556,8 @@ class PhoneComponent {
|
|
|
2497
2556
|
PhoneComponent.controlContainerstatic = this.controlContainer;
|
|
2498
2557
|
}
|
|
2499
2558
|
ngOnInit() {
|
|
2559
|
+
if (this.options.IsReadonly && !this.options.Value)
|
|
2560
|
+
this.options.Value = this.UtilityService.getResourceValue('NA');
|
|
2500
2561
|
if (this.options.ForceDirection)
|
|
2501
2562
|
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
2502
2563
|
else
|
|
@@ -2524,7 +2585,7 @@ class PhoneComponent {
|
|
|
2524
2585
|
if (this.options.IsDisabled) {
|
|
2525
2586
|
this.PhoneFormControl.disable();
|
|
2526
2587
|
}
|
|
2527
|
-
this.PhoneControlHost.ngSubmit.subscribe((
|
|
2588
|
+
this.PhoneControlHost.ngSubmit.subscribe(() => {
|
|
2528
2589
|
this.group.markAllAsTouched();
|
|
2529
2590
|
this.markAllAsTouched = true;
|
|
2530
2591
|
});
|
|
@@ -2559,7 +2620,7 @@ PhoneComponent.controlContainerstatic = null;
|
|
|
2559
2620
|
PhoneComponent.decorators = [
|
|
2560
2621
|
{ type: Component, args: [{
|
|
2561
2622
|
selector: 'BBSF-Phone',
|
|
2562
|
-
template: "\r\n<div class=\"form-group bbsf-control bbsf-phone\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span\r\n *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input dir=\"{{options.ForceDirection==2?'rtl':'ltr'}}\"\r\n [cssClass]=\"options.ExtraClasses\"\r\n [preferredCountries]=\"options.PreferredCountries\"\r\n [onlyCountries]=\"options.OnlyCountries\"\r\n [enableAutoCountrySelect]=\"true\"\r\n [enablePlaceholder]=\"options.EnablePlaceholder\"\r\n [searchCountryFlag]=\"options.AllowSearch\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2,\r\n SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"options.SelectFirstCountry\"\r\n [selectedCountryISO]=\"getSelectedCountry(options.SelectedCountryISO)\"\r\n [separateDialCode]=\"separateDialCode\"\r\n maxlength=\"15\" [(ngModel)]=\"options.Value\"\r\n [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\"\r\n name=\"{{options.Name}}\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"PhoneFormControl.invalid &&\r\n PhoneFormControl.touched\" aria-invalid=\"true\"\r\n class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(PhoneFormControl.invalid &&\r\n PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched\r\n )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
|
|
2623
|
+
template: "\r\n<div class=\"form-group bbsf-control bbsf-phone\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label\r\n {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span\r\n *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input dir=\"{{options.ForceDirection==2?'rtl':'ltr'}}\"\r\n [cssClass]=\"options.ExtraClasses\"\r\n [preferredCountries]=\"options.PreferredCountries\"\r\n [onlyCountries]=\"options.OnlyCountries\"\r\n [enableAutoCountrySelect]=\"true\"\r\n [enablePlaceholder]=\"options.EnablePlaceholder\"\r\n [searchCountryFlag]=\"options.AllowSearch\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2,\r\n SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"options.SelectFirstCountry\"\r\n [selectedCountryISO]=\"getSelectedCountry(options.SelectedCountryISO)\"\r\n [separateDialCode]=\"separateDialCode\"\r\n maxlength=\"15\" [(ngModel)]=\"options.Value\"\r\n [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\"\r\n name=\"{{options.Name}}\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"PhoneFormControl.invalid &&\r\n PhoneFormControl.touched\" aria-invalid=\"true\"\r\n class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><a href=\"tel:{{options.Value}}\">{{options.Value}}</a>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(PhoneFormControl.invalid &&\r\n PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched\r\n )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
|
|
2563
2624
|
},] }
|
|
2564
2625
|
];
|
|
2565
2626
|
PhoneComponent.ctorParameters = () => [
|
|
@@ -2576,88 +2637,6 @@ PhoneComponent.propDecorators = {
|
|
|
2576
2637
|
OnChange: [{ type: Output }]
|
|
2577
2638
|
};
|
|
2578
2639
|
|
|
2579
|
-
class ToggleslideComponent {
|
|
2580
|
-
// tslint:disable-next-line: max-line-length
|
|
2581
|
-
constructor(controlUtility, controlContainer, ToggleslideControlHost, TextControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
2582
|
-
this.controlUtility = controlUtility;
|
|
2583
|
-
this.controlContainer = controlContainer;
|
|
2584
|
-
this.ToggleslideControlHost = ToggleslideControlHost;
|
|
2585
|
-
this.TextControlHost = TextControlHost;
|
|
2586
|
-
this.UtilityService = UtilityService;
|
|
2587
|
-
this.controlValidationService = controlValidationService;
|
|
2588
|
-
this.globalSettings = globalSettings;
|
|
2589
|
-
this.OnChange = new EventEmitter();
|
|
2590
|
-
this.SlideValue = false;
|
|
2591
|
-
this.markAllAsTouched = false;
|
|
2592
|
-
ToggleslideComponent.controlContainerstatic = this.controlContainer;
|
|
2593
|
-
}
|
|
2594
|
-
ngOnInit() {
|
|
2595
|
-
if (this.options.ForceDirection)
|
|
2596
|
-
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
2597
|
-
else
|
|
2598
|
-
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
2599
|
-
this.group.addControl(this.options.Name, new FormControl(''));
|
|
2600
|
-
this.ToggleslideFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
2601
|
-
let validationRules = [];
|
|
2602
|
-
let validationRulesasync = [];
|
|
2603
|
-
this.SlideValue = this.options.Value == undefined ? false : this.options.Value;
|
|
2604
|
-
if (!this.options.ViewType)
|
|
2605
|
-
this.options.ViewType = this.globalSettings.ViewType;
|
|
2606
|
-
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
2607
|
-
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
2608
|
-
}
|
|
2609
|
-
ngAfterViewInit() {
|
|
2610
|
-
if (this.options.AttributeList != null) {
|
|
2611
|
-
var element = document.getElementById(this.options.Name);
|
|
2612
|
-
for (let index = 0; index < this.options.AttributeList.length; index++) {
|
|
2613
|
-
element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
|
|
2614
|
-
}
|
|
2615
|
-
}
|
|
2616
|
-
}
|
|
2617
|
-
resetError() {
|
|
2618
|
-
this.controlValidationService.RemoveGlobalError();
|
|
2619
|
-
}
|
|
2620
|
-
showGlobalError() {
|
|
2621
|
-
this.controlUtility.showGlobalError();
|
|
2622
|
-
}
|
|
2623
|
-
getErrorValidation(ErrorList) {
|
|
2624
|
-
if (this.markAllAsTouched && this.group.invalid) {
|
|
2625
|
-
this.showGlobalError();
|
|
2626
|
-
this.markAllAsTouched = false;
|
|
2627
|
-
}
|
|
2628
|
-
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
2629
|
-
}
|
|
2630
|
-
changeValueToggle() {
|
|
2631
|
-
this.OnChange.emit(this.SlideValue);
|
|
2632
|
-
this.options.Value = this.SlideValue;
|
|
2633
|
-
this.ToggleslideFormControl.setValue(this.SlideValue);
|
|
2634
|
-
if (this.options.PatchFunction && this.options.PatchPath && this.ToggleslideFormControl.valid) {
|
|
2635
|
-
this.controlUtility.patchControlValue(this.SlideValue, this.options.PatchFunction, this.options.PatchPath);
|
|
2636
|
-
}
|
|
2637
|
-
}
|
|
2638
|
-
}
|
|
2639
|
-
ToggleslideComponent.controlContainerstatic = null;
|
|
2640
|
-
ToggleslideComponent.decorators = [
|
|
2641
|
-
{ type: Component, args: [{
|
|
2642
|
-
selector: 'BBSF-Toggleslide',
|
|
2643
|
-
template: "<div class=\"form-group bbsf-control bbsf-toggleslide\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" [dir]=\"textDir\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" [disabled]=\"options.IsDisabled\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n </div>\r\n</div>\r\n"
|
|
2644
|
-
},] }
|
|
2645
|
-
];
|
|
2646
|
-
ToggleslideComponent.ctorParameters = () => [
|
|
2647
|
-
{ type: ControlUtility },
|
|
2648
|
-
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
2649
|
-
{ type: FormGroupDirective },
|
|
2650
|
-
{ type: FormGroupDirective },
|
|
2651
|
-
{ type: UtilityService },
|
|
2652
|
-
{ type: ControlValidationService },
|
|
2653
|
-
{ type: GlobalSettings }
|
|
2654
|
-
];
|
|
2655
|
-
ToggleslideComponent.propDecorators = {
|
|
2656
|
-
group: [{ type: Input }],
|
|
2657
|
-
options: [{ type: Input }],
|
|
2658
|
-
OnChange: [{ type: Output }]
|
|
2659
|
-
};
|
|
2660
|
-
|
|
2661
2640
|
class HtmlEditorComponent {
|
|
2662
2641
|
constructor(zone, controlUtility, controlContainer, HtmlEditorControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
2663
2642
|
this.zone = zone;
|
|
@@ -2861,7 +2840,7 @@ HtmlEditorComponent.controlContainerstatic = null;
|
|
|
2861
2840
|
HtmlEditorComponent.decorators = [
|
|
2862
2841
|
{ type: Component, args: [{
|
|
2863
2842
|
selector: 'BBSF-HtmlEditor',
|
|
2864
|
-
template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </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"
|
|
2843
|
+
template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.Value\"></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </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"
|
|
2865
2844
|
},] }
|
|
2866
2845
|
];
|
|
2867
2846
|
HtmlEditorComponent.ctorParameters = () => [
|
|
@@ -3282,7 +3261,7 @@ MultiLingualHtmlEditorComponent.controlContainerstatic = null;
|
|
|
3282
3261
|
MultiLingualHtmlEditorComponent.decorators = [
|
|
3283
3262
|
{ type: Component, args: [{
|
|
3284
3263
|
selector: 'BBSF-MultiLingualHtmlEditor',
|
|
3285
|
-
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control form-group bbsf-multilang-htmleditor mb-0\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"row\">\r\n <!--English htmleditor-->\r\n <div [ngClass] =\"ShowArabicHtmlEditor? 'col-md-6' : 'col-md-12'\" *ngIf=\"ShowEnglishHtmlEditor\" class=\" bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor class=\"{{options.ExtraClasses_EN}}\" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\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 </div>\r\n
|
|
3264
|
+
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control form-group bbsf-multilang-htmleditor mb-0\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"row\">\r\n <!--English htmleditor-->\r\n <div [ngClass] =\"ShowArabicHtmlEditor? 'col-md-6' : 'col-md-12'\" *ngIf=\"ShowEnglishHtmlEditor\" class=\" bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--input-->\r\n <angular-editor class=\"{{options.ExtraClasses_EN}}\" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n </div>\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.Value.English\" ></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\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 </div>\r\n</div>\r\n <!--Arabic htmleditor-->\r\n <div *ngIf=\"ShowArabicHtmlEditor\" [ngClass] =\"ShowEnglishHtmlEditor? 'col-md-6' : 'col-md-12'\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic)&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--input-->\r\n <angular-editor dir=\"rtl\" class=\"{{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n </div>\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\" [innerHTML]=\"options.Value.Arabic\" ></span>\r\n\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\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 </div>\r\n </div>\r\n </div>\r\n</div>\r\n</div>\r\n"
|
|
3286
3265
|
},] }
|
|
3287
3266
|
];
|
|
3288
3267
|
MultiLingualHtmlEditorComponent.ctorParameters = () => [
|
|
@@ -3618,7 +3597,7 @@ ImageUploaderComponent.controlContainerstatic = null;
|
|
|
3618
3597
|
ImageUploaderComponent.decorators = [
|
|
3619
3598
|
{ type: Component, args: [{
|
|
3620
3599
|
selector: 'BBSF-ImageUpload',
|
|
3621
|
-
template: "<div class=\"form-group bbsf-control bbsf-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"
|
|
3600
|
+
template: "<div class=\"form-group bbsf-control bbsf-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone&&!options.IsReadonly\" class=\"bbsf-input-container {{options.ExtraClasses}}\" ngx-dropzone\r\n [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\" [multiple]=\"options.IsMultiple\" (change)=\"onFileChange($event)\" ngDefaultControl\r\n formControlName=\"{{options.Name}}\" [maxFileSize]=\"maxFileSize\" id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <img *ngIf=\"ImageSource\" [src]=\"ImageSource\"\r\n style=\"align-items: center;border-radius: 5px;display: flex;height: 100px;justify-content: center;margin: 10px;max-width: 180px;min-height: 100px;min-width: 180px;padding: 0px 20px;position: relative;\" />\r\n <div class=\"svg-and-validation\" *ngIf=\"!ImageSource\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\"\r\n d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\"\r\n fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone&&!options.IsReadonly\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\" ngx-dropzone [disabled]=\"options.IsDisabled\" [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\" (change)=\"onFileChange($event)\" ngDefaultControl formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\" id=\"{{options.Name}}\" [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\"\r\n ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n\r\n <ngx-dropzone-label *ngIf=\"files.length==0&&options.IsReadonly\">\r\n <div *ngIf=\"ImageSource\" #element>\r\n <img [src]=\"ImageSource\" />\r\n </div>\r\n <div *ngIf=\"!ImageSource\">\r\n <span class=\"readonly-view\">{{UtilityService.getResourceValue('NA')}}</span>\r\n </div>\r\n </ngx-dropzone-label>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [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\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\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 class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomIn\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomOut\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveLeft\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveRight\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveUp\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveDown\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateLeft\")}}'>\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- readonly -->\r\n\r\n\r\n</div>"
|
|
3622
3601
|
},] }
|
|
3623
3602
|
];
|
|
3624
3603
|
ImageUploaderComponent.ctorParameters = () => [
|
|
@@ -3986,7 +3965,7 @@ ProfileImageUploaderComponent.controlContainerstatic = null;
|
|
|
3986
3965
|
ProfileImageUploaderComponent.decorators = [
|
|
3987
3966
|
{ type: Component, args: [{
|
|
3988
3967
|
selector: 'BBSF-ProfileImageUploader',
|
|
3989
|
-
template: "<div class=\"form-group bbsf-control bbsf-profile-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\" style=\"width:fit-content\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"profile-upload-img\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ProfileImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [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\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\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 class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom in\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Zoom out\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move left\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move right\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move up\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move down\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Rotate left\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Rotate right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
|
|
3968
|
+
template: "<div class=\"form-group bbsf-control bbsf-profile-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone&&!options.IsReadonly\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone&&!options.IsReadonly\" style=\"width:fit-content\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"profile-upload-img\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n\r\n <ngx-dropzone-label *ngIf=\"files.length==0&&options.IsReadonly\">\r\n <div #element >\r\n <img [src]=\"ImageSource\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ProfileImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-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 <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [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\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\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 class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom in\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Zoom out\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move left\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move right\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move up\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Move down\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Rotate left\">\r\n <span class=\"docs-tooltip\">\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\" ngbTooltip=\"Rotate right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
|
|
3990
3969
|
},] }
|
|
3991
3970
|
];
|
|
3992
3971
|
ProfileImageUploaderComponent.ctorParameters = () => [
|
|
@@ -4097,6 +4076,8 @@ class AutocompleteTextBoxComponent {
|
|
|
4097
4076
|
AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;
|
|
4098
4077
|
}
|
|
4099
4078
|
ngOnInit() {
|
|
4079
|
+
if (this.options.IsReadonly && !this.options.Value)
|
|
4080
|
+
this.options.Value = this.UtilityService.getResourceValue('NA');
|
|
4100
4081
|
if (this.options.ForceDirection)
|
|
4101
4082
|
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
4102
4083
|
else
|
|
@@ -4235,7 +4216,7 @@ AutocompleteTextBoxComponent.decorators = [
|
|
|
4235
4216
|
{ type: Component, args: [{
|
|
4236
4217
|
// tslint:disable-next-line: component-selector
|
|
4237
4218
|
selector: 'BBSF-AutocompleteTextBox',
|
|
4238
|
-
template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </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"
|
|
4219
|
+
template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{AutocompleteTextBoxControl.value.value}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </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"
|
|
4239
4220
|
},] }
|
|
4240
4221
|
];
|
|
4241
4222
|
AutocompleteTextBoxComponent.ctorParameters = () => [
|
|
@@ -4318,6 +4299,8 @@ class TagsInputComponent {
|
|
|
4318
4299
|
this.changeValueSubscription.unsubscribe();
|
|
4319
4300
|
}
|
|
4320
4301
|
ngOnInit() {
|
|
4302
|
+
if (this.options.IsReadonly && !this.options.Value)
|
|
4303
|
+
this.options.Value = this.UtilityService.getResourceValue('NA');
|
|
4321
4304
|
if (this.options.ForceDirection)
|
|
4322
4305
|
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
4323
4306
|
else
|
|
@@ -4494,13 +4477,17 @@ class TagsInputComponent {
|
|
|
4494
4477
|
this.tags.pop();
|
|
4495
4478
|
}
|
|
4496
4479
|
}
|
|
4480
|
+
getTagsValue() {
|
|
4481
|
+
if (this.tags.length > 0)
|
|
4482
|
+
return this.tags.map(item => item.name);
|
|
4483
|
+
}
|
|
4497
4484
|
}
|
|
4498
4485
|
TagsInputComponent.controlContainerstatic = null;
|
|
4499
4486
|
TagsInputComponent.decorators = [
|
|
4500
4487
|
{ type: Component, args: [{
|
|
4501
4488
|
// tslint:disable-next-line: component-selector
|
|
4502
4489
|
selector: 'BBSF-TagsInput',
|
|
4503
|
-
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"TagsFormGroup\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n [removeLastOnBackspace]=\"options.RemoveLastOnBackspace\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n [scrollableOptions]=\"options.ScrollableOptions\" [scrollableOptionsInView]=\"options.MaxSearchResultsCount\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n [maxTags]=\"options.MaxNumberTags\" [minLengthBeforeOptions]=\"options.MinSearchLength\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </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"
|
|
4490
|
+
template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"TagsFormGroup\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n [removeLastOnBackspace]=\"options.RemoveLastOnBackspace\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n [scrollableOptions]=\"options.ScrollableOptions\" [scrollableOptionsInView]=\"options.MaxSearchResultsCount\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n [maxTags]=\"options.MaxNumberTags\" [minLengthBeforeOptions]=\"options.MinSearchLength\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{getTagsValue()}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </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"
|
|
4504
4491
|
},] }
|
|
4505
4492
|
];
|
|
4506
4493
|
TagsInputComponent.ctorParameters = () => [
|
|
@@ -5055,13 +5042,16 @@ class RadioButtonComponent {
|
|
|
5055
5042
|
this.options.Value = originalValue;
|
|
5056
5043
|
this.OnChange.emit(originalValue);
|
|
5057
5044
|
}
|
|
5045
|
+
getSelectedItemValue(value) {
|
|
5046
|
+
return this.options.Items.filter(item => item.Value == value)[0].Text;
|
|
5047
|
+
}
|
|
5058
5048
|
}
|
|
5059
5049
|
RadioButtonComponent.controlContainerstatic = null;
|
|
5060
5050
|
RadioButtonComponent.decorators = [
|
|
5061
5051
|
{ type: Component, args: [{
|
|
5062
5052
|
// tslint:disable-next-line: component-selector
|
|
5063
5053
|
selector: 'BBSF-RadioButton',
|
|
5064
|
-
template: "<div class=\"form-group bbsf-control bbsf-radio-button\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <div class=\"radio-container\" *ngFor=\"let item of options.Items\">\r\n <input type=\"radio\" id=\"{{options.Name}}{{item.Value}}\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [value]=\"item.Value\" checked=\"{{(options.Value!=null)&&(options.Value.Value == item.Value)}}\"\r\n (change)=\"onValueChanged()\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" [(ngModel)]=\"options.Value\"\r\n formControlName=\"{{options.Name}}\">\r\n <label class=\"radio-input-label\" for=\"{{options.Name}}{{item.Value}}\">{{item.Text}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(RadioButtonFormControl.invalid && RadioButtonFormControl.touched)\">\r\n {{getErrorValidation(RadioButtonFormControl.errors|keyvalue)}}\r\n </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"
|
|
5054
|
+
template: "<div class=\"form-group bbsf-control bbsf-radio-button\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"bbsf-input-container\">\r\n <!--input-->\r\n <div class=\"radio-container\" *ngFor=\"let item of options.Items\">\r\n <input type=\"radio\" id=\"{{options.Name}}{{item.Value}}\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [value]=\"item.Value\" checked=\"{{(options.Value!=null)&&(options.Value.Value == item.Value)}}\"\r\n (change)=\"onValueChanged()\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" [(ngModel)]=\"options.Value\"\r\n formControlName=\"{{options.Name}}\">\r\n <label class=\"radio-input-label\" for=\"{{options.Name}}{{item.Value}}\">{{item.Text}}</label>\r\n </div>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{getSelectedItemValue(options.Value)}}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!options.IsReadonly\" class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(RadioButtonFormControl.invalid && RadioButtonFormControl.touched)\">\r\n {{getErrorValidation(RadioButtonFormControl.errors|keyvalue)}}\r\n </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"
|
|
5065
5055
|
},] }
|
|
5066
5056
|
];
|
|
5067
5057
|
RadioButtonComponent.ctorParameters = () => [
|
|
@@ -5094,6 +5084,7 @@ class TextboxComponent {
|
|
|
5094
5084
|
this.controlValidationService = controlValidationService;
|
|
5095
5085
|
this.globalSettings = globalSettings;
|
|
5096
5086
|
this.OnChange = new EventEmitter();
|
|
5087
|
+
this.inputType = InputType;
|
|
5097
5088
|
this.MaskPattern = '';
|
|
5098
5089
|
this.WordCount = 0;
|
|
5099
5090
|
this.WordCountArray = 0;
|
|
@@ -5106,7 +5097,7 @@ class TextboxComponent {
|
|
|
5106
5097
|
this.showCharsLimitMsg = false;
|
|
5107
5098
|
this.hasCharsLimitValidationError = false;
|
|
5108
5099
|
this.minCharsLimit = -1; //To disable chars limit feature by default
|
|
5109
|
-
this.maxLimitWarningMsg =
|
|
5100
|
+
this.maxLimitWarningMsg = '';
|
|
5110
5101
|
this.resetError = () => {
|
|
5111
5102
|
this.controlValidationService.RemoveGlobalError();
|
|
5112
5103
|
};
|
|
@@ -5133,6 +5124,9 @@ class TextboxComponent {
|
|
|
5133
5124
|
TextboxComponent.controlContainerstatic = this.controlContainer;
|
|
5134
5125
|
}
|
|
5135
5126
|
ngOnInit() {
|
|
5127
|
+
if (this.options.IsReadonly && !this.options.Value) {
|
|
5128
|
+
this.options.Value = this.UtilityService.getResourceValue('NA');
|
|
5129
|
+
}
|
|
5136
5130
|
if (this.options.ForceDirection)
|
|
5137
5131
|
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
5138
5132
|
else
|
|
@@ -5142,14 +5136,14 @@ class TextboxComponent {
|
|
|
5142
5136
|
this.options.MaxLength = this.globalSettings.MaxLengthTextBox;
|
|
5143
5137
|
if (!this.options.ViewType)
|
|
5144
5138
|
this.options.ViewType = this.globalSettings.ViewType;
|
|
5145
|
-
if (this.options.MaskPattern != null && this.options.MaskPattern !=
|
|
5139
|
+
if (this.options.MaskPattern != null && this.options.MaskPattern != '') {
|
|
5146
5140
|
this.MaskPattern = this.options.MaskPattern;
|
|
5147
5141
|
this.options.Placeholder = this.MaskPattern;
|
|
5148
5142
|
}
|
|
5149
5143
|
this.group.addControl(this.options.Name, new FormControl(''));
|
|
5150
5144
|
this.TextBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
5151
5145
|
this.TextBoxFormControl.setValue(this.options.Value);
|
|
5152
|
-
if (this.options.LabelKey != null && this.options.LabelKey !=
|
|
5146
|
+
if (this.options.LabelKey != null && this.options.LabelKey != '')
|
|
5153
5147
|
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
5154
5148
|
this.getCustomErrorsMassages();
|
|
5155
5149
|
if (this.options.IsRequired) {
|
|
@@ -5161,17 +5155,27 @@ class TextboxComponent {
|
|
|
5161
5155
|
this.controlUtility.patternValidator(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, { EmailValidationKey: this.EmailValidationKey }),
|
|
5162
5156
|
]));
|
|
5163
5157
|
break;
|
|
5158
|
+
case InputType.URL:
|
|
5159
|
+
var pattern = new RegExp("(https:\/\/www\.|http:\/\/www\.|https:\/\/|http:\/\/)?[a-zA-Z0-9]{2,}(\.[a-zA-Z0-9]{2,})(\.[a-zA-Z0-9]{2,})?");
|
|
5160
|
+
this.validationRules.push(Validators.compose([
|
|
5161
|
+
this.controlUtility.patternValidator(pattern, { URLValidationKey: this.URLValidationKey }),
|
|
5162
|
+
]));
|
|
5163
|
+
break;
|
|
5164
5164
|
case InputType.EID:
|
|
5165
5165
|
this.MaskPattern = '000-0000-0000000-0';
|
|
5166
5166
|
this.options.Placeholder = this.MaskPattern;
|
|
5167
5167
|
break;
|
|
5168
5168
|
case InputType.Number:
|
|
5169
|
-
this.
|
|
5170
|
-
this.
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
|
|
5169
|
+
if (this.options.CustomValidation.length == 0) {
|
|
5170
|
+
this.validationRules.push(Validators.compose([
|
|
5171
|
+
this.controlUtility.patternValidator(/^[0-9]*$/, {
|
|
5172
|
+
IntegerNumberValidationKey: '',
|
|
5173
|
+
}),
|
|
5174
|
+
]));
|
|
5175
|
+
this.validationRules.push(Validators.compose([
|
|
5176
|
+
this.controlUtility.patternValidator(/^[+]?([.]\d+|\d+[.]?\d*)$/, { PositiveNumberValidationKey: '' }),
|
|
5177
|
+
]));
|
|
5178
|
+
}
|
|
5175
5179
|
if (this.options.NumberRange != null) {
|
|
5176
5180
|
this.validationRules.push(Validators.min(this.options.NumberRange.From));
|
|
5177
5181
|
this.validationRules.push(Validators.max(this.options.NumberRange.To));
|
|
@@ -5180,10 +5184,18 @@ class TextboxComponent {
|
|
|
5180
5184
|
case InputType.Password:
|
|
5181
5185
|
if (!this.options.RemoveDefaultPasswordValidation) {
|
|
5182
5186
|
this.validationRules.push(Validators.compose([
|
|
5183
|
-
this.controlUtility.patternValidator(/\d/, {
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
this.controlUtility.patternValidator(/[
|
|
5187
|
+
this.controlUtility.patternValidator(/\d/, {
|
|
5188
|
+
PasswordComplexityHasNumber: this.PasswordComplexityHasNumber,
|
|
5189
|
+
}),
|
|
5190
|
+
this.controlUtility.patternValidator(/[A-Z]/, {
|
|
5191
|
+
PasswordComplexityHasCapitalLetter: this.PasswordComplexityHasCapitalLetter,
|
|
5192
|
+
}),
|
|
5193
|
+
this.controlUtility.patternValidator(/[a-z]/, {
|
|
5194
|
+
PasswordComplexityHasSmallLetter: this.PasswordComplexityHasSmallLetter,
|
|
5195
|
+
}),
|
|
5196
|
+
this.controlUtility.patternValidator(/[!@#$%^&*(),.?":{}|<>]/, {
|
|
5197
|
+
PasswordComplexityHasSpecialLetter: this.PasswordComplexityHasSpecialLetter,
|
|
5198
|
+
}),
|
|
5187
5199
|
Validators.minLength(8),
|
|
5188
5200
|
]));
|
|
5189
5201
|
}
|
|
@@ -5192,7 +5204,9 @@ class TextboxComponent {
|
|
|
5192
5204
|
if (this.options.LanguageValidation) {
|
|
5193
5205
|
if (this.options.LanguageValidation == LanguageValidation.Arabic) {
|
|
5194
5206
|
this.validationRules.push(Validators.compose([
|
|
5195
|
-
this.controlUtility.patternValidator(/^[^A-Za-z]*$/, {
|
|
5207
|
+
this.controlUtility.patternValidator(/^[^A-Za-z]*$/, {
|
|
5208
|
+
ArabicLetterOnly: this.ArabicLetterOnly,
|
|
5209
|
+
}),
|
|
5196
5210
|
]));
|
|
5197
5211
|
}
|
|
5198
5212
|
else if (this.options.LanguageValidation == LanguageValidation.English) {
|
|
@@ -5214,8 +5228,10 @@ class TextboxComponent {
|
|
|
5214
5228
|
if (this.options.MaxLength > 0) {
|
|
5215
5229
|
this.validationRules.push(Validators.maxLength(this.options.MaxLength));
|
|
5216
5230
|
if (!this.options.MaxLengthWarningLimit)
|
|
5217
|
-
this.options.MaxLengthWarningLimit =
|
|
5218
|
-
|
|
5231
|
+
this.options.MaxLengthWarningLimit =
|
|
5232
|
+
this.globalSettings.MaxLengthWarningLimit;
|
|
5233
|
+
this.minCharsLimit =
|
|
5234
|
+
this.options.MaxLength - this.options.MaxLengthWarningLimit;
|
|
5219
5235
|
}
|
|
5220
5236
|
this.TextBoxFormControl.setValidators(this.validationRules);
|
|
5221
5237
|
this.TextBoxFormControl.setAsyncValidators(this.validationRulesasync);
|
|
@@ -5247,7 +5263,9 @@ class TextboxComponent {
|
|
|
5247
5263
|
trimControlValue() {
|
|
5248
5264
|
let originalValue = this.controlUtility.trimControlValue(this.TextBoxFormControl.value);
|
|
5249
5265
|
this.TextBoxFormControl.patchValue(originalValue);
|
|
5250
|
-
if (this.options.PatchFunction &&
|
|
5266
|
+
if (this.options.PatchFunction &&
|
|
5267
|
+
this.options.PatchPath &&
|
|
5268
|
+
this.TextBoxFormControl.valid) {
|
|
5251
5269
|
this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
|
|
5252
5270
|
}
|
|
5253
5271
|
}
|
|
@@ -5255,31 +5273,40 @@ class TextboxComponent {
|
|
|
5255
5273
|
this.controlUtility.CopyInputMessage(inputElement);
|
|
5256
5274
|
}
|
|
5257
5275
|
getCustomErrorsMassages() {
|
|
5258
|
-
this.EmailValidationKey =
|
|
5259
|
-
|
|
5260
|
-
this.
|
|
5261
|
-
|
|
5262
|
-
this.
|
|
5263
|
-
|
|
5264
|
-
this.
|
|
5265
|
-
this.
|
|
5276
|
+
this.EmailValidationKey =
|
|
5277
|
+
this.UtilityService.getResourceValue('EmailValidationKey');
|
|
5278
|
+
this.URLValidationKey =
|
|
5279
|
+
this.UtilityService.getResourceValue('urlValidationError');
|
|
5280
|
+
this.PasswordComplexityHasCapitalLetter =
|
|
5281
|
+
this.UtilityService.getResourceValue('PasswordComplexityHasCapitalLetter');
|
|
5282
|
+
this.PasswordComplexityHasNumber = this.UtilityService.getResourceValue('PasswordComplexityHasNumber');
|
|
5283
|
+
this.PasswordComplexityHasSmallLetter =
|
|
5284
|
+
this.UtilityService.getResourceValue('PasswordComplexityHasSmallLetter');
|
|
5285
|
+
this.PasswordComplexityHasSpecialLetter =
|
|
5286
|
+
this.UtilityService.getResourceValue('PasswordComplexityHasSpecialLetter');
|
|
5287
|
+
this.MaxWordCountValidationKey = this.UtilityService.getResourceValue('MaxWordCountValidationKey');
|
|
5288
|
+
this.ArabicLetterOnly = this.UtilityService.getResourceValue('ArabicIsRequiredAndOnly50CharactersEnglish');
|
|
5289
|
+
this.EnglishLetterOnly =
|
|
5290
|
+
this.UtilityService.getResourceValue('EnglishLetterOnly');
|
|
5266
5291
|
}
|
|
5267
5292
|
onTextChange() {
|
|
5268
5293
|
if (this.options.Type == InputType.Number)
|
|
5269
5294
|
if (!this.TextBoxFormControl.value) {
|
|
5270
|
-
this.TextBoxFormControl.setErrors({ IntegerNumberValidationKey:
|
|
5295
|
+
this.TextBoxFormControl.setErrors({ IntegerNumberValidationKey: '' });
|
|
5271
5296
|
return;
|
|
5272
5297
|
}
|
|
5273
|
-
if (this.TextBoxFormControl.value ==
|
|
5298
|
+
if (this.TextBoxFormControl.value == '') {
|
|
5274
5299
|
this.WordCountArray = 0;
|
|
5275
5300
|
this.WordCount = 0;
|
|
5276
5301
|
}
|
|
5277
5302
|
else {
|
|
5278
|
-
this.WordCountArray = this.TextBoxFormControl.value.split(
|
|
5303
|
+
this.WordCountArray = this.TextBoxFormControl.value.split(' ').length;
|
|
5279
5304
|
if (this.WordCountArray > 0) {
|
|
5280
5305
|
if (this.WordCountArray > this.options.MaxWordCount) {
|
|
5281
5306
|
this.WordCount = this.options.MaxWordCount;
|
|
5282
|
-
this.TextBoxFormControl.setErrors({
|
|
5307
|
+
this.TextBoxFormControl.setErrors({
|
|
5308
|
+
MaxWordCountValidationKey: this.options.MaxWordCount,
|
|
5309
|
+
});
|
|
5283
5310
|
this.TextBoxFormControl.markAsTouched();
|
|
5284
5311
|
this.TextBoxFormControl.invalid;
|
|
5285
5312
|
}
|
|
@@ -5295,9 +5322,9 @@ class TextboxComponent {
|
|
|
5295
5322
|
this.showCharsLimitMsg = true;
|
|
5296
5323
|
this.hasCharsLimitValidationError = true;
|
|
5297
5324
|
if (this.currentCharsCount == this.options.MaxLength)
|
|
5298
|
-
this.charsLimitMsgClass =
|
|
5325
|
+
this.charsLimitMsgClass = 'danger';
|
|
5299
5326
|
else
|
|
5300
|
-
this.charsLimitMsgClass =
|
|
5327
|
+
this.charsLimitMsgClass = 'warning';
|
|
5301
5328
|
}
|
|
5302
5329
|
else {
|
|
5303
5330
|
this.showCharsLimitMsg = false;
|
|
@@ -5305,7 +5332,7 @@ class TextboxComponent {
|
|
|
5305
5332
|
}
|
|
5306
5333
|
var max = this.options.MaxLength;
|
|
5307
5334
|
var current = this.currentCharsCount;
|
|
5308
|
-
var resource = this.UtilityService.getResourceValue(
|
|
5335
|
+
var resource = this.UtilityService.getResourceValue('MaxLengthLimitWarning');
|
|
5309
5336
|
this.maxLimitWarningMsg = eval('`' + resource + '`');
|
|
5310
5337
|
}
|
|
5311
5338
|
}
|
|
@@ -5315,10 +5342,11 @@ class TextboxComponent {
|
|
|
5315
5342
|
this.IsShowWordCount = isFocus;
|
|
5316
5343
|
//onFocus
|
|
5317
5344
|
if (isFocus) {
|
|
5318
|
-
if (this.hasCharsLimitValidationError)
|
|
5345
|
+
if (this.hasCharsLimitValidationError)
|
|
5346
|
+
//check if there was previous validation error
|
|
5319
5347
|
this.showCharsLimitMsg = true;
|
|
5320
|
-
}
|
|
5321
|
-
else
|
|
5348
|
+
} //onFocusOut
|
|
5349
|
+
else
|
|
5322
5350
|
this.showCharsLimitMsg = false;
|
|
5323
5351
|
}
|
|
5324
5352
|
}
|
|
@@ -5326,7 +5354,7 @@ TextboxComponent.controlContainerstatic = null;
|
|
|
5326
5354
|
TextboxComponent.decorators = [
|
|
5327
5355
|
{ type: Component, args: [{
|
|
5328
5356
|
selector: 'BBSF-TextBox',
|
|
5329
|
-
template: "<div class=\"form-group bbsf-control bbsf-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--MaskPattern-->\r\n <div *ngIf=\"MaskPattern!=null&&MaskPattern!=''\" class=\"bbsf-input-container\"
|
|
5357
|
+
template: "<div class=\"form-group bbsf-control bbsf-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--MaskPattern-->\r\n <div *ngIf=\"MaskPattern!=null&&MaskPattern!=''&&!options.IsReadonly\" class=\"bbsf-input-container\"\r\n [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}}\" [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n [dir]=\"textDir\" aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [(ngModel)]=\"options.Value\" [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\" (change)=\"trimControlValue()\"\r\n (keyup)=\"onTextChange()\" [readonly]=\"options.IsReadonly\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\" #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <!--NoMaskPattern-->\r\n <div *ngIf=\"MaskPattern==null||MaskPattern==''&&!options.IsReadonly\" class=\"bbsf-input-container\"\r\n [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}} \" [dir]=\"textDir\" (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n autocomplete=\"{{options.AutoComplete}}\" (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\" [readonly]=\"options.IsReadonly\" #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" triggers=\"click:blur\" *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <a *ngIf=\"options.Type==inputType.Email\" href=\"mailto: {{options.Value}}\">{{options.Value}}</a>\r\n <a *ngIf=\"options.Type==inputType.URL\" href=\"{{options.Value}}\" target=\"_blank\">{{options.Value}}</a>\r\n <span *ngIf=\"options.Type!=inputType.URL&&options.Type!=inputType.Email\" class=\"readonly-view\">{{options.Value}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}}\r\n Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\"\r\n [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\" *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </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>"
|
|
5330
5358
|
},] }
|
|
5331
5359
|
];
|
|
5332
5360
|
TextboxComponent.ctorParameters = () => [
|
|
@@ -5646,7 +5674,7 @@ MapAutoCompleteComponent.controlContainerstatic = null;
|
|
|
5646
5674
|
MapAutoCompleteComponent.decorators = [
|
|
5647
5675
|
{ type: Component, args: [{
|
|
5648
5676
|
selector: 'BBSF-MapAutoComplete',
|
|
5649
|
-
template: "\r\n<div class=\"form-group bbsf-control bbsf-maps\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control{{options.ExtraClasses}}\"\r\n [value]=\"MapAutoCompleteModel.Text\"\r\n [address]=\"MapAutoCompleteModel.Text\"\r\n value=\"{{MapAutoCompleteModel.Text}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (keyup)=\"GermanAddressMapped($event)\"\r\n matGoogleMapsAutocomplete #search (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\" (onGermanAddressMapped)=\"GermanAddressMapped($event)\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </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"
|
|
5677
|
+
template: "\r\n<div class=\"form-group bbsf-control bbsf-maps\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"!options.IsReadonly\">\r\n <input class=\"form-control{{options.ExtraClasses}}\"\r\n [value]=\"MapAutoCompleteModel.Text\"\r\n [address]=\"MapAutoCompleteModel.Text\"\r\n value=\"{{MapAutoCompleteModel.Text}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (keyup)=\"GermanAddressMapped($event)\"\r\n matGoogleMapsAutocomplete #search (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\" (onGermanAddressMapped)=\"GermanAddressMapped($event)\" />\r\n\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{MapAutoCompleteModel.Text}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </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"
|
|
5650
5678
|
},] }
|
|
5651
5679
|
];
|
|
5652
5680
|
MapAutoCompleteComponent.ctorParameters = () => [
|
|
@@ -5943,6 +5971,13 @@ FormComponent.propDecorators = {
|
|
|
5943
5971
|
options: [{ type: Input }]
|
|
5944
5972
|
};
|
|
5945
5973
|
|
|
5974
|
+
var StyleConfirmationMode;
|
|
5975
|
+
(function (StyleConfirmationMode) {
|
|
5976
|
+
StyleConfirmationMode[StyleConfirmationMode["Danger"] = 0] = "Danger";
|
|
5977
|
+
StyleConfirmationMode[StyleConfirmationMode["Warning"] = 1] = "Warning";
|
|
5978
|
+
StyleConfirmationMode[StyleConfirmationMode["Success"] = 2] = "Success";
|
|
5979
|
+
})(StyleConfirmationMode || (StyleConfirmationMode = {}));
|
|
5980
|
+
|
|
5946
5981
|
class ConfirmationModalComponent {
|
|
5947
5982
|
constructor(utilityService, modalService, router) {
|
|
5948
5983
|
this.utilityService = utilityService;
|
|
@@ -6194,7 +6229,7 @@ class RepeaterComponent {
|
|
|
6194
6229
|
RepeaterComponent.decorators = [
|
|
6195
6230
|
{ type: Component, args: [{
|
|
6196
6231
|
selector: 'BBSF-repeater',
|
|
6197
|
-
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\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n"
|
|
6232
|
+
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 *ngIf=\"!options.IsReadonly\" class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add >\r\n <button *ngIf=\"!options.IsReadonly\" class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n"
|
|
6198
6233
|
},] }
|
|
6199
6234
|
];
|
|
6200
6235
|
RepeaterComponent.ctorParameters = () => [];
|
|
@@ -6414,6 +6449,91 @@ RenderComponentService.ctorParameters = () => [
|
|
|
6414
6449
|
{ type: ComponentFactoryResolver }
|
|
6415
6450
|
];
|
|
6416
6451
|
|
|
6452
|
+
class ToggleslideComponent {
|
|
6453
|
+
// tslint:disable-next-line: max-line-length
|
|
6454
|
+
constructor(controlUtility, controlContainer, ToggleslideControlHost, TextControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
6455
|
+
this.controlUtility = controlUtility;
|
|
6456
|
+
this.controlContainer = controlContainer;
|
|
6457
|
+
this.ToggleslideControlHost = ToggleslideControlHost;
|
|
6458
|
+
this.TextControlHost = TextControlHost;
|
|
6459
|
+
this.UtilityService = UtilityService;
|
|
6460
|
+
this.controlValidationService = controlValidationService;
|
|
6461
|
+
this.globalSettings = globalSettings;
|
|
6462
|
+
this.OnChange = new EventEmitter();
|
|
6463
|
+
this.SlideValue = false;
|
|
6464
|
+
this.markAllAsTouched = false;
|
|
6465
|
+
ToggleslideComponent.controlContainerstatic = this.controlContainer;
|
|
6466
|
+
}
|
|
6467
|
+
ngOnInit() {
|
|
6468
|
+
if (this.options.ForceDirection)
|
|
6469
|
+
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
6470
|
+
else
|
|
6471
|
+
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
6472
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
6473
|
+
this.ToggleslideFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
6474
|
+
let validationRules = [];
|
|
6475
|
+
let validationRulesasync = [];
|
|
6476
|
+
this.SlideValue = this.options.Value == undefined ? false : this.options.Value;
|
|
6477
|
+
if (!this.options.ViewType)
|
|
6478
|
+
this.options.ViewType = this.globalSettings.ViewType;
|
|
6479
|
+
if (this.options.IsDisabled || this.options.IsReadonly) {
|
|
6480
|
+
this.ToggleslideFormControl.disable();
|
|
6481
|
+
}
|
|
6482
|
+
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
6483
|
+
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
6484
|
+
}
|
|
6485
|
+
ngAfterViewInit() {
|
|
6486
|
+
if (this.options.AttributeList != null) {
|
|
6487
|
+
var element = document.getElementById(this.options.Name);
|
|
6488
|
+
for (let index = 0; index < this.options.AttributeList.length; index++) {
|
|
6489
|
+
element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
|
|
6490
|
+
}
|
|
6491
|
+
}
|
|
6492
|
+
}
|
|
6493
|
+
resetError() {
|
|
6494
|
+
this.controlValidationService.RemoveGlobalError();
|
|
6495
|
+
}
|
|
6496
|
+
showGlobalError() {
|
|
6497
|
+
this.controlUtility.showGlobalError();
|
|
6498
|
+
}
|
|
6499
|
+
getErrorValidation(ErrorList) {
|
|
6500
|
+
if (this.markAllAsTouched && this.group.invalid) {
|
|
6501
|
+
this.showGlobalError();
|
|
6502
|
+
this.markAllAsTouched = false;
|
|
6503
|
+
}
|
|
6504
|
+
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
6505
|
+
}
|
|
6506
|
+
changeValueToggle() {
|
|
6507
|
+
this.OnChange.emit(this.SlideValue);
|
|
6508
|
+
this.options.Value = this.SlideValue;
|
|
6509
|
+
this.ToggleslideFormControl.setValue(this.SlideValue);
|
|
6510
|
+
if (this.options.PatchFunction && this.options.PatchPath && this.ToggleslideFormControl.valid) {
|
|
6511
|
+
this.controlUtility.patchControlValue(this.SlideValue, this.options.PatchFunction, this.options.PatchPath);
|
|
6512
|
+
}
|
|
6513
|
+
}
|
|
6514
|
+
}
|
|
6515
|
+
ToggleslideComponent.controlContainerstatic = null;
|
|
6516
|
+
ToggleslideComponent.decorators = [
|
|
6517
|
+
{ type: Component, args: [{
|
|
6518
|
+
selector: 'BBSF-Toggleslide',
|
|
6519
|
+
template: "<div class=\"form-group bbsf-control bbsf-toggleslide\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <div *ngIf=\"!options.IsReadonly\"class=\"bbsf-input-container\">\r\n <!--input-->\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" [dir]=\"textDir\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" [disabled]=\"options.IsDisabled\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\">\r\n <span class=\"readonly-view\" *ngIf=\"options.Value\">{{UtilityService.getResourceValue(\"Yes\")}}</span>\r\n <span class=\"readonly-view\" *ngIf=\"!options.Value\">{{UtilityService.getResourceValue(\"No\")}}</span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n </div>\r\n</div>\r\n"
|
|
6520
|
+
},] }
|
|
6521
|
+
];
|
|
6522
|
+
ToggleslideComponent.ctorParameters = () => [
|
|
6523
|
+
{ type: ControlUtility },
|
|
6524
|
+
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
6525
|
+
{ type: FormGroupDirective },
|
|
6526
|
+
{ type: FormGroupDirective },
|
|
6527
|
+
{ type: UtilityService },
|
|
6528
|
+
{ type: ControlValidationService },
|
|
6529
|
+
{ type: GlobalSettings }
|
|
6530
|
+
];
|
|
6531
|
+
ToggleslideComponent.propDecorators = {
|
|
6532
|
+
group: [{ type: Input }],
|
|
6533
|
+
options: [{ type: Input }],
|
|
6534
|
+
OnChange: [{ type: Output }]
|
|
6535
|
+
};
|
|
6536
|
+
|
|
6417
6537
|
class RepeaterFieldBuilderComponent {
|
|
6418
6538
|
constructor(renderComponentService, TextControlHost) {
|
|
6419
6539
|
this.renderComponentService = renderComponentService;
|
|
@@ -7256,50 +7376,215 @@ RepeaterTableComponent.propDecorators = {
|
|
|
7256
7376
|
options: [{ type: Input }]
|
|
7257
7377
|
};
|
|
7258
7378
|
|
|
7259
|
-
class
|
|
7260
|
-
constructor(
|
|
7261
|
-
this.
|
|
7262
|
-
}
|
|
7263
|
-
transform(value) {
|
|
7264
|
-
let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');
|
|
7265
|
-
return latest_date;
|
|
7266
|
-
}
|
|
7267
|
-
}
|
|
7268
|
-
BBSFDateTimePipe.decorators = [
|
|
7269
|
-
{ type: Pipe, args: [{
|
|
7270
|
-
name: 'bbsfDateTime'
|
|
7271
|
-
},] }
|
|
7272
|
-
];
|
|
7273
|
-
BBSFDateTimePipe.ctorParameters = () => [
|
|
7274
|
-
{ type: DatePipe }
|
|
7275
|
-
];
|
|
7276
|
-
|
|
7277
|
-
class BBSFDatePipe {
|
|
7278
|
-
constructor(datePipe) {
|
|
7279
|
-
this.datePipe = datePipe;
|
|
7280
|
-
}
|
|
7281
|
-
transform(value) {
|
|
7282
|
-
let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy');
|
|
7283
|
-
return latest_date;
|
|
7379
|
+
class RecaptchaModel {
|
|
7380
|
+
constructor() {
|
|
7381
|
+
this.ImageJpeg = [];
|
|
7284
7382
|
}
|
|
7285
|
-
}
|
|
7286
|
-
BBSFDatePipe.decorators = [
|
|
7287
|
-
{ type: Pipe, args: [{
|
|
7288
|
-
name: 'bbsfDate'
|
|
7289
|
-
},] }
|
|
7290
|
-
];
|
|
7291
|
-
BBSFDatePipe.ctorParameters = () => [
|
|
7292
|
-
{ type: DatePipe }
|
|
7293
|
-
];
|
|
7383
|
+
}
|
|
7294
7384
|
|
|
7295
|
-
|
|
7296
|
-
|
|
7297
|
-
TagInputView[TagInputView["WithImage"] = 1] = "WithImage";
|
|
7298
|
-
TagInputView[TagInputView["WithoutImage"] = 2] = "WithoutImage";
|
|
7299
|
-
TagInputView[TagInputView["WithInitial"] = 3] = "WithInitial";
|
|
7300
|
-
})(TagInputView || (TagInputView = {}));
|
|
7385
|
+
class CaptchaStyle {
|
|
7386
|
+
}
|
|
7301
7387
|
|
|
7302
|
-
|
|
7388
|
+
class RecaptchaComponent {
|
|
7389
|
+
constructor(controlUtility, requestHandlerService, recaptchaControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
7390
|
+
this.controlUtility = controlUtility;
|
|
7391
|
+
this.requestHandlerService = requestHandlerService;
|
|
7392
|
+
this.recaptchaControlHost = recaptchaControlHost;
|
|
7393
|
+
this.UtilityService = UtilityService;
|
|
7394
|
+
this.controlValidationService = controlValidationService;
|
|
7395
|
+
this.globalSettings = globalSettings;
|
|
7396
|
+
this.OnChange = new EventEmitter();
|
|
7397
|
+
this.validationRules = [];
|
|
7398
|
+
this.validationRulesAsync = [];
|
|
7399
|
+
this.recaptchaModel = new RecaptchaModel();
|
|
7400
|
+
this.resetError = () => {
|
|
7401
|
+
this.controlValidationService.RemoveGlobalError();
|
|
7402
|
+
};
|
|
7403
|
+
//External Method
|
|
7404
|
+
this.RemoveRequiredValidation = () => {
|
|
7405
|
+
this.controlUtility.RemoveRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options);
|
|
7406
|
+
};
|
|
7407
|
+
//External Method
|
|
7408
|
+
this.AddRequiredValidation = () => {
|
|
7409
|
+
this.controlUtility.AddRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options);
|
|
7410
|
+
};
|
|
7411
|
+
//External Method
|
|
7412
|
+
this.RemoveCustomValidation = (CustomValidation) => {
|
|
7413
|
+
this.controlUtility.RemoveCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation);
|
|
7414
|
+
};
|
|
7415
|
+
//External Method
|
|
7416
|
+
this.AddCustomValidation = (CustomValidation) => {
|
|
7417
|
+
this.controlUtility.AddCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation);
|
|
7418
|
+
};
|
|
7419
|
+
//External Method
|
|
7420
|
+
this.IsValid = () => {
|
|
7421
|
+
this.controlUtility.IsValid(this.ReCaptchaFormControl);
|
|
7422
|
+
};
|
|
7423
|
+
}
|
|
7424
|
+
ngOnInit() {
|
|
7425
|
+
if (this.options.ForceDirection)
|
|
7426
|
+
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
7427
|
+
else
|
|
7428
|
+
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
7429
|
+
this.controlValidationService.isCreatedBefor = false;
|
|
7430
|
+
this.loadImage();
|
|
7431
|
+
if (!this.options.ViewType)
|
|
7432
|
+
this.options.ViewType = this.globalSettings.ViewType;
|
|
7433
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
7434
|
+
this.ReCaptchaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
7435
|
+
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
7436
|
+
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
7437
|
+
if (this.options.IsRequired) {
|
|
7438
|
+
this.validationRules.push(Validators.required);
|
|
7439
|
+
}
|
|
7440
|
+
if (this.options.CustomValidation.length > 0) {
|
|
7441
|
+
let Validations = this.options.CustomValidation;
|
|
7442
|
+
for (let index = 0; index < Validations.length; index++) {
|
|
7443
|
+
const Validation = Validations[index];
|
|
7444
|
+
this.validationRules.push(Validation.functionBody);
|
|
7445
|
+
}
|
|
7446
|
+
}
|
|
7447
|
+
this.ReCaptchaFormControl.setValidators(this.validationRules);
|
|
7448
|
+
this.ReCaptchaFormControl.setAsyncValidators(this.validationRulesAsync);
|
|
7449
|
+
if (this.options.IsDisabled) {
|
|
7450
|
+
this.ReCaptchaFormControl.disable();
|
|
7451
|
+
}
|
|
7452
|
+
this.recaptchaControlHost.ngSubmit.subscribe((value) => {
|
|
7453
|
+
this.group.markAllAsTouched();
|
|
7454
|
+
this.markAllAsTouched = true;
|
|
7455
|
+
});
|
|
7456
|
+
}
|
|
7457
|
+
loadImage() {
|
|
7458
|
+
let style = new CaptchaStyle();
|
|
7459
|
+
style.BackgroundColorPrimary = this.options.BackgroundColorPrimary;
|
|
7460
|
+
style.BackgroundColorSecondary = this.options.BackgroundColorSecondary;
|
|
7461
|
+
style.TextColorPrimary = this.options.TextColorPrimary;
|
|
7462
|
+
style.TextColorSecondary = this.options.TextColorSecondary;
|
|
7463
|
+
style.FontSize = this.options.FontSize;
|
|
7464
|
+
let requestOptionsModel = new RequestOptionsModel();
|
|
7465
|
+
requestOptionsModel.disableBlockUI = true;
|
|
7466
|
+
requestOptionsModel.disableSuccessNotification = true;
|
|
7467
|
+
this.requestHandlerService.post(this.options.ActionURL, style, null, null, requestOptionsModel).subscribe((res) => {
|
|
7468
|
+
let model = res;
|
|
7469
|
+
this.recaptchaModel.ID = model.id;
|
|
7470
|
+
this.recaptchaModel.EncryptedText = model.encryptedText;
|
|
7471
|
+
this.recaptchaModel.ImageJpeg = model.imageJpeg;
|
|
7472
|
+
this.image = 'data:image/jpeg;base64,' + this.recaptchaModel.ImageJpeg;
|
|
7473
|
+
});
|
|
7474
|
+
}
|
|
7475
|
+
ngAfterViewInit() {
|
|
7476
|
+
this.controlUtility.setAttributeForControl(this.options);
|
|
7477
|
+
}
|
|
7478
|
+
showGlobalError() {
|
|
7479
|
+
this.controlUtility.showGlobalError();
|
|
7480
|
+
}
|
|
7481
|
+
getErrorValidation(ErrorList) {
|
|
7482
|
+
if (this.markAllAsTouched && this.group.invalid) {
|
|
7483
|
+
this.showGlobalError();
|
|
7484
|
+
this.markAllAsTouched = false;
|
|
7485
|
+
}
|
|
7486
|
+
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
7487
|
+
}
|
|
7488
|
+
onTextChange(valueText) {
|
|
7489
|
+
let value = valueText.target.value;
|
|
7490
|
+
this.recaptchaModel.Text = value;
|
|
7491
|
+
this.group.get(this.options.Name).setValue(this.recaptchaModel);
|
|
7492
|
+
this.options.Value = this.recaptchaModel;
|
|
7493
|
+
this.OnChange.emit(this.ReCaptchaFormControl.value);
|
|
7494
|
+
}
|
|
7495
|
+
}
|
|
7496
|
+
RecaptchaComponent.decorators = [
|
|
7497
|
+
{ type: Component, args: [{
|
|
7498
|
+
selector: 'BBSF-Recaptcha',
|
|
7499
|
+
template: "<div class=\"form-group bbsf-control bbsf-recaptcha\" [formGroup]=\"group\">\r\n <img class=\"h-100 w-100\" [src]=\"image\" />\r\n <button class=\"btn btn-sm btn-icon\" type=\"button\" ngbTooltip=\"{{UtilityService.getResourceValue('ReloadCaptcha')}}\"\r\n (click)=\"loadImage()\">\r\n <i class=\"fas fa-refresh\"></i>\r\n </button>\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" value=\"{{options.Value.Text}}\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"text\"\r\n [class.is-invalid]=\"ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"onTextChange($event)\" [readonly]=\"options.IsReadonly\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n [dir]=\"textDir\"\r\n *ngIf=\"(ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched)\">\r\n {{getErrorValidation(ReCaptchaFormControl.errors|keyvalue)}}\r\n </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"
|
|
7500
|
+
},] }
|
|
7501
|
+
];
|
|
7502
|
+
RecaptchaComponent.ctorParameters = () => [
|
|
7503
|
+
{ type: ControlUtility },
|
|
7504
|
+
{ type: RequestHandlerService },
|
|
7505
|
+
{ type: FormGroupDirective },
|
|
7506
|
+
{ type: UtilityService },
|
|
7507
|
+
{ type: ControlValidationService },
|
|
7508
|
+
{ type: GlobalSettings }
|
|
7509
|
+
];
|
|
7510
|
+
RecaptchaComponent.propDecorators = {
|
|
7511
|
+
group: [{ type: Input }],
|
|
7512
|
+
options: [{ type: Input }],
|
|
7513
|
+
OnChange: [{ type: Output }]
|
|
7514
|
+
};
|
|
7515
|
+
|
|
7516
|
+
class PageHeaderComponentComponent {
|
|
7517
|
+
constructor(router, utilityService) {
|
|
7518
|
+
this.router = router;
|
|
7519
|
+
this.utilityService = utilityService;
|
|
7520
|
+
this.DataTypeEnum = DataType;
|
|
7521
|
+
}
|
|
7522
|
+
translate(key) {
|
|
7523
|
+
return this.utilityService.getResourceValue(key);
|
|
7524
|
+
}
|
|
7525
|
+
ngOnInit() {
|
|
7526
|
+
this.EN = this.utilityService.isCurrentLanguageEnglish();
|
|
7527
|
+
}
|
|
7528
|
+
}
|
|
7529
|
+
PageHeaderComponentComponent.decorators = [
|
|
7530
|
+
{ type: Component, args: [{
|
|
7531
|
+
selector: 'bbsf-page-header-component',
|
|
7532
|
+
template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\"/>\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.Listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.TitleKey||options.TitleValue\">{{options.TitleValue == null ? translate(options.TitleKey) : options.TitleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.Listing\">\r\n {{translate(options.SubTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.BreadCrumb.Active\">\r\n <ng-container *ngFor=\"let item of options.BreadCrumb.BreadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.DropDownActions.Active\">\r\n <button [routerLink]=\"item.RouterLink\" (click)='item.Function?item.Function():\"\"' class=\"btn btn-light btn-sm subheader-btn export-btn\" *ngFor=\"let item of options.DropDownActions.DropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.SVG\"></span>\r\n {{item.Text}}\r\n </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.SearchTextBox.Active\" [options]=\"options.SearchTextBox.TextSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.GridView.Active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.ExportButton.Active\" (click)=\"options.ExportButton.Function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.ExportButton.ButtonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.FiltersButton.Active\" ngbDropdown container=\"body\" [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" \r\n #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.FiltersButton.Function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.FiltersButton.ButtonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [hidden]=\"options.Filters.ShowLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.Filters.ControlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\"\r\n (click)=\"options.Filters.RestFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\"\r\n (click)=\"options.Filters.ApplyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.AddButton.Active\" (click)=\"options.AddButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.AddButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.EditButton.Active\" (click)=\"options.EditButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.EditButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.DeleteButton.Active\" (click)=\"options.DeleteButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.DeleteButton.ButtonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--End toolbar-->\r\n"
|
|
7533
|
+
},] }
|
|
7534
|
+
];
|
|
7535
|
+
PageHeaderComponentComponent.ctorParameters = () => [
|
|
7536
|
+
{ type: Router },
|
|
7537
|
+
{ type: UtilityService }
|
|
7538
|
+
];
|
|
7539
|
+
PageHeaderComponentComponent.propDecorators = {
|
|
7540
|
+
group: [{ type: Input }],
|
|
7541
|
+
options: [{ type: Input }]
|
|
7542
|
+
};
|
|
7543
|
+
|
|
7544
|
+
class BBSFDateTimePipe {
|
|
7545
|
+
constructor(datePipe) {
|
|
7546
|
+
this.datePipe = datePipe;
|
|
7547
|
+
}
|
|
7548
|
+
transform(value) {
|
|
7549
|
+
let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');
|
|
7550
|
+
return latest_date;
|
|
7551
|
+
}
|
|
7552
|
+
}
|
|
7553
|
+
BBSFDateTimePipe.decorators = [
|
|
7554
|
+
{ type: Pipe, args: [{
|
|
7555
|
+
name: 'bbsfDateTime'
|
|
7556
|
+
},] }
|
|
7557
|
+
];
|
|
7558
|
+
BBSFDateTimePipe.ctorParameters = () => [
|
|
7559
|
+
{ type: DatePipe }
|
|
7560
|
+
];
|
|
7561
|
+
|
|
7562
|
+
class BBSFDatePipe {
|
|
7563
|
+
constructor(datePipe) {
|
|
7564
|
+
this.datePipe = datePipe;
|
|
7565
|
+
}
|
|
7566
|
+
transform(value) {
|
|
7567
|
+
let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy');
|
|
7568
|
+
return latest_date;
|
|
7569
|
+
}
|
|
7570
|
+
}
|
|
7571
|
+
BBSFDatePipe.decorators = [
|
|
7572
|
+
{ type: Pipe, args: [{
|
|
7573
|
+
name: 'bbsfDate'
|
|
7574
|
+
},] }
|
|
7575
|
+
];
|
|
7576
|
+
BBSFDatePipe.ctorParameters = () => [
|
|
7577
|
+
{ type: DatePipe }
|
|
7578
|
+
];
|
|
7579
|
+
|
|
7580
|
+
var TagInputView;
|
|
7581
|
+
(function (TagInputView) {
|
|
7582
|
+
TagInputView[TagInputView["WithImage"] = 1] = "WithImage";
|
|
7583
|
+
TagInputView[TagInputView["WithoutImage"] = 2] = "WithoutImage";
|
|
7584
|
+
TagInputView[TagInputView["WithInitial"] = 3] = "WithInitial";
|
|
7585
|
+
})(TagInputView || (TagInputView = {}));
|
|
7586
|
+
|
|
7587
|
+
const noop = () => { };
|
|
7303
7588
|
const ɵ0$1 = noop;
|
|
7304
7589
|
const TAGS_INPUT_TEMPLATE = `
|
|
7305
7590
|
|
|
@@ -7618,171 +7903,6 @@ BTagsInputComponent.propDecorators = {
|
|
|
7618
7903
|
onBlurInput: [{ type: Output }]
|
|
7619
7904
|
};
|
|
7620
7905
|
|
|
7621
|
-
class RecaptchaModel {
|
|
7622
|
-
constructor() {
|
|
7623
|
-
this.ImageJpeg = [];
|
|
7624
|
-
}
|
|
7625
|
-
}
|
|
7626
|
-
|
|
7627
|
-
class CaptchaStyle {
|
|
7628
|
-
}
|
|
7629
|
-
|
|
7630
|
-
class RecaptchaComponent {
|
|
7631
|
-
constructor(controlUtility, requestHandlerService, recaptchaControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
7632
|
-
this.controlUtility = controlUtility;
|
|
7633
|
-
this.requestHandlerService = requestHandlerService;
|
|
7634
|
-
this.recaptchaControlHost = recaptchaControlHost;
|
|
7635
|
-
this.UtilityService = UtilityService;
|
|
7636
|
-
this.controlValidationService = controlValidationService;
|
|
7637
|
-
this.globalSettings = globalSettings;
|
|
7638
|
-
this.OnChange = new EventEmitter();
|
|
7639
|
-
this.validationRules = [];
|
|
7640
|
-
this.validationRulesAsync = [];
|
|
7641
|
-
this.recaptchaModel = new RecaptchaModel();
|
|
7642
|
-
this.resetError = () => {
|
|
7643
|
-
this.controlValidationService.RemoveGlobalError();
|
|
7644
|
-
};
|
|
7645
|
-
//External Method
|
|
7646
|
-
this.RemoveRequiredValidation = () => {
|
|
7647
|
-
this.controlUtility.RemoveRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options);
|
|
7648
|
-
};
|
|
7649
|
-
//External Method
|
|
7650
|
-
this.AddRequiredValidation = () => {
|
|
7651
|
-
this.controlUtility.AddRequiredValidation(this.ReCaptchaFormControl, this.validationRules, this.options);
|
|
7652
|
-
};
|
|
7653
|
-
//External Method
|
|
7654
|
-
this.RemoveCustomValidation = (CustomValidation) => {
|
|
7655
|
-
this.controlUtility.RemoveCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation);
|
|
7656
|
-
};
|
|
7657
|
-
//External Method
|
|
7658
|
-
this.AddCustomValidation = (CustomValidation) => {
|
|
7659
|
-
this.controlUtility.AddCustomValidation(this.ReCaptchaFormControl, this.validationRules, CustomValidation);
|
|
7660
|
-
};
|
|
7661
|
-
//External Method
|
|
7662
|
-
this.IsValid = () => {
|
|
7663
|
-
this.controlUtility.IsValid(this.ReCaptchaFormControl);
|
|
7664
|
-
};
|
|
7665
|
-
}
|
|
7666
|
-
ngOnInit() {
|
|
7667
|
-
if (this.options.ForceDirection)
|
|
7668
|
-
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
7669
|
-
else
|
|
7670
|
-
this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
|
|
7671
|
-
this.controlValidationService.isCreatedBefor = false;
|
|
7672
|
-
this.loadImage();
|
|
7673
|
-
if (!this.options.ViewType)
|
|
7674
|
-
this.options.ViewType = this.globalSettings.ViewType;
|
|
7675
|
-
this.group.addControl(this.options.Name, new FormControl(''));
|
|
7676
|
-
this.ReCaptchaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
7677
|
-
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
7678
|
-
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
7679
|
-
if (this.options.IsRequired) {
|
|
7680
|
-
this.validationRules.push(Validators.required);
|
|
7681
|
-
}
|
|
7682
|
-
if (this.options.CustomValidation.length > 0) {
|
|
7683
|
-
let Validations = this.options.CustomValidation;
|
|
7684
|
-
for (let index = 0; index < Validations.length; index++) {
|
|
7685
|
-
const Validation = Validations[index];
|
|
7686
|
-
this.validationRules.push(Validation.functionBody);
|
|
7687
|
-
}
|
|
7688
|
-
}
|
|
7689
|
-
this.ReCaptchaFormControl.setValidators(this.validationRules);
|
|
7690
|
-
this.ReCaptchaFormControl.setAsyncValidators(this.validationRulesAsync);
|
|
7691
|
-
if (this.options.IsDisabled) {
|
|
7692
|
-
this.ReCaptchaFormControl.disable();
|
|
7693
|
-
}
|
|
7694
|
-
this.recaptchaControlHost.ngSubmit.subscribe((value) => {
|
|
7695
|
-
this.group.markAllAsTouched();
|
|
7696
|
-
this.markAllAsTouched = true;
|
|
7697
|
-
});
|
|
7698
|
-
}
|
|
7699
|
-
loadImage() {
|
|
7700
|
-
let style = new CaptchaStyle();
|
|
7701
|
-
style.BackgroundColorPrimary = this.options.BackgroundColorPrimary;
|
|
7702
|
-
style.BackgroundColorSecondary = this.options.BackgroundColorSecondary;
|
|
7703
|
-
style.TextColorPrimary = this.options.TextColorPrimary;
|
|
7704
|
-
style.TextColorSecondary = this.options.TextColorSecondary;
|
|
7705
|
-
style.FontSize = this.options.FontSize;
|
|
7706
|
-
let requestOptionsModel = new RequestOptionsModel();
|
|
7707
|
-
requestOptionsModel.disableBlockUI = true;
|
|
7708
|
-
requestOptionsModel.disableSuccessNotification = true;
|
|
7709
|
-
this.requestHandlerService.post(this.options.ActionURL, style, null, null, requestOptionsModel).subscribe((res) => {
|
|
7710
|
-
let model = res;
|
|
7711
|
-
this.recaptchaModel.ID = model.id;
|
|
7712
|
-
this.recaptchaModel.EncryptedText = model.encryptedText;
|
|
7713
|
-
this.recaptchaModel.ImageJpeg = model.imageJpeg;
|
|
7714
|
-
this.image = 'data:image/jpeg;base64,' + this.recaptchaModel.ImageJpeg;
|
|
7715
|
-
});
|
|
7716
|
-
}
|
|
7717
|
-
ngAfterViewInit() {
|
|
7718
|
-
this.controlUtility.setAttributeForControl(this.options);
|
|
7719
|
-
}
|
|
7720
|
-
showGlobalError() {
|
|
7721
|
-
this.controlUtility.showGlobalError();
|
|
7722
|
-
}
|
|
7723
|
-
getErrorValidation(ErrorList) {
|
|
7724
|
-
if (this.markAllAsTouched && this.group.invalid) {
|
|
7725
|
-
this.showGlobalError();
|
|
7726
|
-
this.markAllAsTouched = false;
|
|
7727
|
-
}
|
|
7728
|
-
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
7729
|
-
}
|
|
7730
|
-
onTextChange(valueText) {
|
|
7731
|
-
let value = valueText.target.value;
|
|
7732
|
-
this.recaptchaModel.Text = value;
|
|
7733
|
-
this.group.get(this.options.Name).setValue(this.recaptchaModel);
|
|
7734
|
-
this.options.Value = this.recaptchaModel;
|
|
7735
|
-
this.OnChange.emit(this.ReCaptchaFormControl.value);
|
|
7736
|
-
}
|
|
7737
|
-
}
|
|
7738
|
-
RecaptchaComponent.decorators = [
|
|
7739
|
-
{ type: Component, args: [{
|
|
7740
|
-
selector: 'BBSF-Recaptcha',
|
|
7741
|
-
template: "<div class=\"form-group bbsf-control bbsf-recaptcha\" [formGroup]=\"group\">\r\n <img class=\"h-100 w-100\" [src]=\"image\" />\r\n <button class=\"btn btn-sm btn-icon\" type=\"button\" ngbTooltip=\"{{UtilityService.getResourceValue('ReloadCaptcha')}}\"\r\n (click)=\"loadImage()\">\r\n <i class=\"fas fa-refresh\"></i>\r\n </button>\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" value=\"{{options.Value.Text}}\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"text\"\r\n [class.is-invalid]=\"ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"onTextChange($event)\" [readonly]=\"options.IsReadonly\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n [dir]=\"textDir\"\r\n *ngIf=\"(ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched)\">\r\n {{getErrorValidation(ReCaptchaFormControl.errors|keyvalue)}}\r\n </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"
|
|
7742
|
-
},] }
|
|
7743
|
-
];
|
|
7744
|
-
RecaptchaComponent.ctorParameters = () => [
|
|
7745
|
-
{ type: ControlUtility },
|
|
7746
|
-
{ type: RequestHandlerService },
|
|
7747
|
-
{ type: FormGroupDirective },
|
|
7748
|
-
{ type: UtilityService },
|
|
7749
|
-
{ type: ControlValidationService },
|
|
7750
|
-
{ type: GlobalSettings }
|
|
7751
|
-
];
|
|
7752
|
-
RecaptchaComponent.propDecorators = {
|
|
7753
|
-
group: [{ type: Input }],
|
|
7754
|
-
options: [{ type: Input }],
|
|
7755
|
-
OnChange: [{ type: Output }]
|
|
7756
|
-
};
|
|
7757
|
-
|
|
7758
|
-
class PageHeaderComponentComponent {
|
|
7759
|
-
constructor(router, utilityService) {
|
|
7760
|
-
this.router = router;
|
|
7761
|
-
this.utilityService = utilityService;
|
|
7762
|
-
this.DataTypeEnum = DataType;
|
|
7763
|
-
}
|
|
7764
|
-
translate(key) {
|
|
7765
|
-
return this.utilityService.getResourceValue(key);
|
|
7766
|
-
}
|
|
7767
|
-
ngOnInit() {
|
|
7768
|
-
this.EN = this.utilityService.isCurrentLanguageEnglish();
|
|
7769
|
-
}
|
|
7770
|
-
}
|
|
7771
|
-
PageHeaderComponentComponent.decorators = [
|
|
7772
|
-
{ type: Component, args: [{
|
|
7773
|
-
selector: 'bbsf-page-header-component',
|
|
7774
|
-
template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\"/>\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.Listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.TitleKey||options.TitleValue\">{{options.TitleValue == null ? translate(options.TitleKey) : options.TitleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.Listing\">\r\n {{translate(options.SubTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.BreadCrumb.Active\">\r\n <ng-container *ngFor=\"let item of options.BreadCrumb.BreadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.DropDownActions.Active\">\r\n <button [routerLink]=\"item.RouterLink\" (click)='item.Function?item.Function():\"\"' class=\"btn btn-light btn-sm subheader-btn export-btn\" *ngFor=\"let item of options.DropDownActions.DropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.SVG\"></span>\r\n {{item.Text}}\r\n </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.SearchTextBox.Active\" [options]=\"options.SearchTextBox.TextSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.GridView.Active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.ExportButton.Active\" (click)=\"options.ExportButton.Function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.ExportButton.ButtonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.FiltersButton.Active\" ngbDropdown container=\"body\" [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" \r\n #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.FiltersButton.Function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.FiltersButton.ButtonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [hidden]=\"options.Filters.ShowLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.Filters.ControlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\"\r\n (click)=\"options.Filters.RestFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\"\r\n (click)=\"options.Filters.ApplyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.AddButton.Active\" (click)=\"options.AddButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.AddButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.EditButton.Active\" (click)=\"options.EditButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.EditButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.DeleteButton.Active\" (click)=\"options.DeleteButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.DeleteButton.ButtonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--End toolbar-->\r\n"
|
|
7775
|
-
},] }
|
|
7776
|
-
];
|
|
7777
|
-
PageHeaderComponentComponent.ctorParameters = () => [
|
|
7778
|
-
{ type: Router },
|
|
7779
|
-
{ type: UtilityService }
|
|
7780
|
-
];
|
|
7781
|
-
PageHeaderComponentComponent.propDecorators = {
|
|
7782
|
-
group: [{ type: Input }],
|
|
7783
|
-
options: [{ type: Input }]
|
|
7784
|
-
};
|
|
7785
|
-
|
|
7786
7906
|
let options;
|
|
7787
7907
|
let AppInjector;
|
|
7788
7908
|
const ɵ0 = ControlUtility.getLocal();
|
|
@@ -7875,10 +7995,7 @@ BBSFControlsModule.decorators = [
|
|
|
7875
7995
|
OverlayModule,
|
|
7876
7996
|
StoreDevtoolsModule.instrument(),
|
|
7877
7997
|
FormsModule,
|
|
7878
|
-
NgxIntlTelInputModule,
|
|
7879
|
-
NgxIntlTelInputModule,
|
|
7880
7998
|
BsDatepickerModule.forRoot(),
|
|
7881
|
-
FullCalendarModule,
|
|
7882
7999
|
TypeaheadModule.forRoot(),
|
|
7883
8000
|
AngularEditorModule,
|
|
7884
8001
|
AutocompleteLibModule,
|
|
@@ -8195,6 +8312,8 @@ class MultilingualControlOptionsBase {
|
|
|
8195
8312
|
this.LanguageMode = null;
|
|
8196
8313
|
/** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */
|
|
8197
8314
|
this.CustomValidation = [];
|
|
8315
|
+
/** Sets an attribute readonly */
|
|
8316
|
+
this.IsReadonly = false;
|
|
8198
8317
|
}
|
|
8199
8318
|
}
|
|
8200
8319
|
|
|
@@ -8447,13 +8566,6 @@ class FormOptions {
|
|
|
8447
8566
|
}
|
|
8448
8567
|
}
|
|
8449
8568
|
|
|
8450
|
-
var StyleConfirmationMode;
|
|
8451
|
-
(function (StyleConfirmationMode) {
|
|
8452
|
-
StyleConfirmationMode[StyleConfirmationMode["Danger"] = 0] = "Danger";
|
|
8453
|
-
StyleConfirmationMode[StyleConfirmationMode["Warning"] = 1] = "Warning";
|
|
8454
|
-
StyleConfirmationMode[StyleConfirmationMode["Success"] = 2] = "Success";
|
|
8455
|
-
})(StyleConfirmationMode || (StyleConfirmationMode = {}));
|
|
8456
|
-
|
|
8457
8569
|
class ConfirmationModalOptions {
|
|
8458
8570
|
constructor() {
|
|
8459
8571
|
//Represents confirmation modal title
|
|
@@ -8503,6 +8615,7 @@ class RepeaterOptions {
|
|
|
8503
8615
|
this.RepeaterStructure = [];
|
|
8504
8616
|
this.DisableAddButton = false;
|
|
8505
8617
|
this.DisableDeleteButton = false;
|
|
8618
|
+
this.IsReadonly = false;
|
|
8506
8619
|
}
|
|
8507
8620
|
}
|
|
8508
8621
|
|