@bnsights/bbsf-controls 1.0.34 → 1.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +10 -0
  2. package/bnsights-bbsf-controls-1.0.35.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +381 -245
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Models/AutocompleteOptions.js +5 -10
  7. package/esm2015/lib/Shared/Models/CalendarOptions.js +4 -2
  8. package/esm2015/lib/Shared/Models/CheckBoxOptions.js +4 -5
  9. package/esm2015/lib/Shared/Models/ControlOptionsBase.js +9 -0
  10. package/esm2015/lib/Shared/Models/DropdownOptions.js +4 -6
  11. package/esm2015/lib/Shared/Models/FileUploadOptions.js +4 -7
  12. package/esm2015/lib/Shared/Models/HtmlEditorOptions.js +4 -7
  13. package/esm2015/lib/Shared/Models/ImageUploadOptions.js +4 -7
  14. package/esm2015/lib/Shared/Models/MapAutoCompleteOptions.js +3 -9
  15. package/esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js +4 -12
  16. package/esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js +4 -12
  17. package/esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js +14 -0
  18. package/esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js +4 -12
  19. package/esm2015/lib/Shared/Models/PhoneOptions.js +4 -11
  20. package/esm2015/lib/Shared/Models/ProfileImageUploadOptions.js +4 -7
  21. package/esm2015/lib/Shared/Models/RadioButtonOptions.js +3 -8
  22. package/esm2015/lib/Shared/Models/TagsInputOptions.js +4 -9
  23. package/esm2015/lib/Shared/Models/TextAreaOptions.js +4 -7
  24. package/esm2015/lib/Shared/Models/TextBoxOptions.js +4 -7
  25. package/esm2015/lib/Shared/Models/ToggleslideOptions.js +4 -3
  26. package/esm2015/lib/Shared/Models/datePickerOptions.js +4 -8
  27. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +20 -0
  28. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +20 -0
  29. package/esm2015/lib/Shared/services/ControlUtility.js +17 -4
  30. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +6 -2
  31. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +5 -1
  32. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +6 -2
  33. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +6 -2
  34. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +6 -2
  35. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +6 -2
  36. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +6 -2
  37. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +5 -1
  38. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +14 -4
  39. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +12 -4
  40. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +11 -3
  41. package/esm2015/lib/controls/Phone/Phone.component.js +6 -2
  42. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +6 -2
  43. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +6 -2
  44. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +6 -2
  45. package/esm2015/lib/controls/TextArea/TextArea.component.js +6 -3
  46. package/esm2015/lib/controls/TextBox/TextBox.component.js +14 -6
  47. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +14 -3
  48. package/esm2015/lib/controls/bbsf-controls.module.js +14 -4
  49. package/esm2015/public-api.js +5 -1
  50. package/fesm2015/bnsights-bbsf-controls.js +245 -159
  51. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  52. package/lib/Shared/Models/AutocompleteOptions.d.ts +3 -40
  53. package/lib/Shared/Models/CalendarOptions.d.ts +2 -8
  54. package/lib/Shared/Models/CheckBoxOptions.d.ts +2 -33
  55. package/lib/Shared/Models/ControlOptionsBase.d.ts +40 -0
  56. package/lib/Shared/Models/DropdownOptions.d.ts +2 -39
  57. package/lib/Shared/Models/FileUploadOptions.d.ts +2 -39
  58. package/lib/Shared/Models/HtmlEditorOptions.d.ts +2 -37
  59. package/lib/Shared/Models/ImageUploadOptions.d.ts +2 -38
  60. package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +2 -40
  61. package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +2 -77
  62. package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +2 -76
  63. package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +71 -0
  64. package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +2 -76
  65. package/lib/Shared/Models/PhoneOptions.d.ts +2 -38
  66. package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +2 -38
  67. package/lib/Shared/Models/RadioButtonOptions.d.ts +3 -39
  68. package/lib/Shared/Models/TagsInputOptions.d.ts +4 -43
  69. package/lib/Shared/Models/TextAreaOptions.d.ts +4 -42
  70. package/lib/Shared/Models/TextBoxOptions.d.ts +3 -41
  71. package/lib/Shared/Models/ToggleslideOptions.d.ts +3 -30
  72. package/lib/Shared/Models/datePickerOptions.d.ts +2 -40
  73. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +7 -0
  74. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +7 -0
  75. package/lib/Shared/services/ControlUtility.d.ts +4 -2
  76. package/lib/controls/Toggleslide/toggleslide.component.d.ts +3 -1
  77. package/package.json +3 -2
  78. package/public-api.d.ts +4 -0
  79. package/src/lib/assets/Style.css +2 -2
  80. package/bnsights-bbsf-controls-1.0.34.tgz +0 -0
@@ -4,7 +4,7 @@ import timeGridPlugin from '@fullcalendar/timegrid';
4
4
  import listPlugin from '@fullcalendar/list';
5
5
  import interactionPlugin from '@fullcalendar/interaction';
6
6
  import * as i0 from '@angular/core';
7
- import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, Directive, TemplateRef, ViewChildren, ComponentFactoryResolver, ViewContainerRef, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
7
+ import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, Directive, TemplateRef, ViewChildren, ComponentFactoryResolver, ViewContainerRef, Pipe, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
8
8
  import { BlockUIModule } from 'ng-block-ui';
9
9
  import { ControlContainer, Validators, FormControl, FormGroupDirective, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
10
10
  import { Http, HttpModule } from '@angular/http';
@@ -45,6 +45,7 @@ import ArLocale from '@fullcalendar/core/locales/ar';
45
45
  import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
46
46
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
47
47
  import { AngularEditorModule } from '@kolkov/angular-editor';
48
+ import { AutocompleteLibModule } from 'angular-ng-autocomplete';
48
49
  import { InlineSVGModule } from 'ng-inline-svg';
49
50
  import Swal from 'sweetalert2';
50
51
  import { SweetAlert2Module } from '@sweetalert2/ngx-sweetalert2';
@@ -192,9 +193,10 @@ var InputType;
192
193
  })(InputType || (InputType = {}));
193
194
 
194
195
  class ControlUtility {
195
- constructor(ErrorHandler, controlValidationService) {
196
+ constructor(ErrorHandler, controlValidationService, utilityService) {
196
197
  this.ErrorHandler = ErrorHandler;
197
198
  this.controlValidationService = controlValidationService;
199
+ this.utilityService = utilityService;
198
200
  }
199
201
  getErrorValidation(Errorsitem, CustomValidation) {
200
202
  let resulte = '';
@@ -226,8 +228,19 @@ class ControlUtility {
226
228
  return valid ? null : error;
227
229
  };
228
230
  }
231
+ patchControlValue(originalValue, PatchFunction, PatchPath) {
232
+ var patchOp = [{
233
+ op: "replace",
234
+ path: PatchPath,
235
+ value: originalValue
236
+ }];
237
+ var patchService = PatchFunction.call(null, patchOp);
238
+ patchService.subscribe(r => console.log(r), erorr => this.utilityService.notifyErrorMessage(erorr));
239
+ }
229
240
  arabicValidator(error) {
230
241
  return (control) => {
242
+ if (!control.value)
243
+ return null;
231
244
  if (control.value.match('[\u0600-\u06FF]')) {
232
245
  if (control.value.match('[A-Za-z]') != null) {
233
246
  //FOUND ENGLISH CHARS
@@ -334,7 +347,8 @@ ControlUtility.decorators = [
334
347
  ];
335
348
  ControlUtility.ctorParameters = () => [
336
349
  { type: ErrorMassageValidation },
337
- { type: ControlValidationService }
350
+ { type: ControlValidationService },
351
+ { type: UtilityService }
338
352
  ];
339
353
 
340
354
  var PickerType;
@@ -527,7 +541,11 @@ class DateInputComponent {
527
541
  }
528
542
  this.DatePickerFormControl.setValue(DateValue);
529
543
  this.onChangeService.ChangeValue(this.options.Name);
530
- this.OnChange.emit(DateValue);
544
+ let originalValue = DateValue;
545
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
546
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
547
+ }
548
+ this.OnChange.emit(originalValue);
531
549
  }
532
550
  subscribeDateChanges() {
533
551
  const startDateChanges = this.comparedControl.valueChanges;
@@ -860,7 +878,11 @@ class FileUploadComponent {
860
878
  this.group.get(this.options.Name).setValue(this.multipleFileUploadModel);
861
879
  }
862
880
  };
863
- this.OnChange.emit(this.group.get(this.options.Name).value);
881
+ let originalValue = this.group.get(this.options.Name).value;
882
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
883
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
884
+ }
885
+ this.OnChange.emit(originalValue);
864
886
  }
865
887
  }
866
888
  }
@@ -1198,13 +1220,21 @@ class MultiLingualTextBoxComponent {
1198
1220
  trimControlValue(type) {
1199
1221
  const whitespace = ' ';
1200
1222
  if (type == "En") {
1223
+ let originalValue = this.EnglishFormControl.value;
1224
+ if (this.options.PatchFunction && this.options.PatchPath && this.EnglishFormControl.valid) {
1225
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
1226
+ }
1201
1227
  if (this.EnglishFormControl.value.startsWith(whitespace) || this.EnglishFormControl.value.endsWith(whitespace)) {
1202
- this.EnglishFormControl.patchValue(this.EnglishFormControl.value.trim());
1228
+ this.EnglishFormControl.patchValue(originalValue);
1203
1229
  }
1204
1230
  }
1205
1231
  if (type == "Ar") {
1232
+ let originalValue = this.ArabicFormControl.value;
1233
+ if (this.options.PatchFunction && this.options.PatchPath && this.ArabicFormControl.valid) {
1234
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
1235
+ }
1206
1236
  if (this.ArabicFormControl.value.startsWith(whitespace) || this.ArabicFormControl.value.endsWith(whitespace)) {
1207
- this.ArabicFormControl.patchValue(this.ArabicFormControl.value.trim());
1237
+ this.ArabicFormControl.patchValue(originalValue);
1208
1238
  }
1209
1239
  }
1210
1240
  }
@@ -1432,8 +1462,11 @@ class TextAreaComponent {
1432
1462
  return this.controlUtility.getInputType(type);
1433
1463
  }
1434
1464
  trimControlValue() {
1435
- let OrignalValue = this.controlUtility.trimControlValue(this.TextAreaFormControl.value);
1436
- this.TextAreaFormControl.patchValue(OrignalValue);
1465
+ let originalValue = this.controlUtility.trimControlValue(this.TextAreaFormControl.value);
1466
+ this.TextAreaFormControl.patchValue(originalValue);
1467
+ if (this.options.PatchFunction && this.options.PatchPath && this.TextAreaFormControl.valid) {
1468
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
1469
+ }
1437
1470
  }
1438
1471
  copyInputMessage(inputElement) {
1439
1472
  this.controlUtility.CopyInputMessage(inputElement);
@@ -1774,13 +1807,21 @@ class MultiLingualTextAreaComponent {
1774
1807
  trimControlValue(type) {
1775
1808
  const whitespace = ' ';
1776
1809
  if (type == "En") {
1810
+ let originalValue = this.EnglishTextAreaFormControl.value;
1811
+ if (this.options.PatchFunction && this.options.PatchPath && this.EnglishTextAreaFormControl.valid) {
1812
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
1813
+ }
1777
1814
  if (this.EnglishTextAreaFormControl.value.startsWith(whitespace) || this.EnglishTextAreaFormControl.value.endsWith(whitespace)) {
1778
- this.EnglishTextAreaFormControl.patchValue(this.EnglishTextAreaFormControl.value.trim());
1815
+ this.EnglishTextAreaFormControl.patchValue(originalValue);
1779
1816
  }
1780
1817
  }
1781
1818
  if (type == "Ar") {
1819
+ let originalValue = this.ArabicTextAreaFormControl.value;
1820
+ if (this.options.PatchFunction && this.options.PatchPath && this.ArabicTextAreaFormControl.valid) {
1821
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
1822
+ }
1782
1823
  if (this.ArabicTextAreaFormControl.value.startsWith(whitespace) || this.ArabicTextAreaFormControl.value.endsWith(whitespace)) {
1783
- this.ArabicTextAreaFormControl.patchValue(this.ArabicTextAreaFormControl.value.trim());
1824
+ this.ArabicTextAreaFormControl.patchValue(originalValue);
1784
1825
  }
1785
1826
  }
1786
1827
  }
@@ -1886,7 +1927,7 @@ MultiLingualTextAreaComponent.controlContainerstatic = null;
1886
1927
  MultiLingualTextAreaComponent.decorators = [
1887
1928
  { type: Component, args: [{
1888
1929
  selector: 'BBSF-MultiLingualTextArea',
1889
- template: "<div class=\"b-control b-multilangual-textarea\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEngishTextArea\">\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"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()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showEnglishCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n\r\n <!-- <div *ngIf=\"EnglishTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextArea\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.IsHideArabicLable\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"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()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showArabicCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"ArabicTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
1930
+ template: "<div class=\"b-control b-multilangual-textarea\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowEngishTextArea\">\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"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()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showEnglishCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n\r\n <!-- <div *ngIf=\"EnglishTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\">\r\n <div class=\"row\" *ngIf=\"ShowArabicTextArea\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"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()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <div class=\"input-group-append\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"text-muted font-weight-500 float-end word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}}</div>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"showArabicCharsLimitMsg\">\r\n <span class=\"badge b-character-warning float-end\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </span>\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- <div *ngIf=\"ArabicTextAreaFormControl.valid\">{{resetError()}}</div> -->\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
1890
1931
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
1891
1932
  },] }
1892
1933
  ];
@@ -1986,6 +2027,10 @@ class CheckBoxComponent {
1986
2027
  }
1987
2028
  onValueChanged() {
1988
2029
  this.OnChange.emit(this.CheckBoxFormControl.value);
2030
+ let originalValue = this.CheckBoxFormControl.value;
2031
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
2032
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
2033
+ }
1989
2034
  }
1990
2035
  }
1991
2036
  CheckBoxComponent.controlContainerstatic = null;
@@ -2121,7 +2166,11 @@ class DropdownListComponent {
2121
2166
  }
2122
2167
  onItemSelect(item) {
2123
2168
  this.onChangeService.ChangeValue(this.options.Name);
2124
- this.OnChange.emit(item);
2169
+ let originalValue = item;
2170
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
2171
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
2172
+ }
2173
+ this.OnChange.emit(originalValue);
2125
2174
  //console.log(this.DropdownListFormControl.value)
2126
2175
  }
2127
2176
  Clear() {
@@ -2265,7 +2314,11 @@ class PhoneComponent {
2265
2314
  }
2266
2315
  onValueChanged() {
2267
2316
  let Number = this.PhoneFormControl.value.internationalNumber;
2268
- this.OnChange.emit(Number.trim());
2317
+ let originalValue = this.controlUtility.trimControlValue(Number);
2318
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
2319
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
2320
+ }
2321
+ this.OnChange.emit(originalValue);
2269
2322
  }
2270
2323
  }
2271
2324
  PhoneComponent.controlContainerstatic = null;
@@ -2302,6 +2355,7 @@ class ToggleslideComponent {
2302
2355
  this.globalSettings = globalSettings;
2303
2356
  this.OnChange = new EventEmitter();
2304
2357
  this.SlideValue = false;
2358
+ this.markAllAsTouched = false;
2305
2359
  ToggleslideComponent.controlContainerstatic = this.controlContainer;
2306
2360
  }
2307
2361
  ngOnInit() {
@@ -2329,12 +2383,22 @@ class ToggleslideComponent {
2329
2383
  resetError() {
2330
2384
  this.controlValidationService.RemoveGlobalError();
2331
2385
  }
2332
- getErrorValidation(Errorsitem) {
2333
- return this.controlUtility.getErrorValidation(Errorsitem, this.options.CustomValidation);
2386
+ showGlobalError() {
2387
+ this.controlUtility.showGlobalError();
2388
+ }
2389
+ getErrorValidation(ErrorList) {
2390
+ if (this.markAllAsTouched && this.group.invalid) {
2391
+ this.showGlobalError();
2392
+ this.markAllAsTouched = false;
2393
+ }
2394
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
2334
2395
  }
2335
2396
  changeValueToggle() {
2336
2397
  this.OnChange.emit(this.SlideValue);
2337
2398
  this.ToggleslideFormControl.setValue(this.SlideValue);
2399
+ if (this.options.PatchFunction && this.options.PatchPath && this.ToggleslideFormControl.valid) {
2400
+ this.controlUtility.patchControlValue(this.SlideValue, this.options.PatchFunction, this.options.PatchPath);
2401
+ }
2338
2402
  }
2339
2403
  }
2340
2404
  ToggleslideComponent.controlContainerstatic = null;
@@ -2538,7 +2602,11 @@ class HtmlEditorComponent {
2538
2602
  }
2539
2603
  onValueChanged() {
2540
2604
  this.HtmlEditorFormControl.setValue(this.HtmlEditorFormControl.value.trim());
2541
- this.OnChange.emit(this.HtmlEditorFormControl.value);
2605
+ let originalValue = this.controlUtility.trimControlValue(this.HtmlEditorFormControl.value);
2606
+ if (this.options.PatchFunction && this.options.PatchPath && this.HtmlEditorFormControl.valid) {
2607
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
2608
+ }
2609
+ this.OnChange.emit(originalValue);
2542
2610
  }
2543
2611
  }
2544
2612
  HtmlEditorComponent.controlContainerstatic = null;
@@ -2823,8 +2891,13 @@ class MultiLingualHtmlEditorComponent {
2823
2891
  if (type == "en") {
2824
2892
  this.MultilingualHtmlEditorgroup.controls["English"].setValue(this.MultilingualHtmlEditorgroup.controls["English"].value.trim());
2825
2893
  this.englishValue = this.MultilingualHtmlEditorgroup.controls["English"].value == null ? "" : this.MultilingualHtmlEditorgroup.controls["English"].value;
2826
- if (this.englishValue)
2894
+ if (this.englishValue) {
2827
2895
  this.EnglishHtmlEditorFormControl.setValue(this.englishValue);
2896
+ let originalValue = this.englishValue;
2897
+ if (this.options.PatchFunction && this.options.PatchPath && this.EnglishHtmlEditorFormControl.valid) {
2898
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
2899
+ }
2900
+ }
2828
2901
  let EngliswordCountArray = this.EnglishHtmlEditorFormControl.value.split(" ").length;
2829
2902
  if (EngliswordCountArray > 0) {
2830
2903
  if (EngliswordCountArray > this.options.MaxWordCount)
@@ -2836,8 +2909,13 @@ class MultiLingualHtmlEditorComponent {
2836
2909
  if (type == "ar") {
2837
2910
  this.MultilingualHtmlEditorgroup.controls["Arabic"].setValue(this.MultilingualHtmlEditorgroup.controls["Arabic"].value.trim());
2838
2911
  this.arabicValue = this.MultilingualHtmlEditorgroup.controls["Arabic"].value == null ? "" : this.MultilingualHtmlEditorgroup.controls["Arabic"].value;
2839
- if (this.arabicValue)
2912
+ if (this.arabicValue) {
2840
2913
  this.ArabicHtmlEditorFormControl.setValue(this.arabicValue);
2914
+ let originalValue = this.arabicValue;
2915
+ if (this.options.PatchFunction && this.options.PatchPath && this.ArabicHtmlEditorFormControl.valid) {
2916
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
2917
+ }
2918
+ }
2841
2919
  let ArabicwordCountArray = this.ArabicHtmlEditorFormControl.value.split(" ").length;
2842
2920
  if (ArabicwordCountArray > 0) {
2843
2921
  if (ArabicwordCountArray > this.options.MaxWordCount)
@@ -2942,7 +3020,7 @@ MultiLingualHtmlEditorComponent.controlContainerstatic = null;
2942
3020
  MultiLingualHtmlEditorComponent.decorators = [
2943
3021
  { type: Component, args: [{
2944
3022
  selector: 'BBSF-MultiLingualHtmlEditor',
2945
- template: "<div class=\"b-control b-multilangual-html-editor\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishHtmlEditor\">\r\n <label class=\"b-label col-form-label col-sm-12 \" \r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\"\r\n [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n <angular-editor class=\"form-control bnsights-control {{options.ExtraClasses_EN}} \" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowArabicHtmlEditor\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.IsHideArabicLable\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n\r\n <angular-editor dir=\"rtl\" class=\"form-control bnsights-control {{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n \r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n\r\n</div>\r\n",
3023
+ template: "<div class=\"b-control b-multilangual-html-editor\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <div class=\"form-group row\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowEnglishHtmlEditor\">\r\n <label class=\"b-label col-form-label col-sm-12 \" \r\n [ngClass]=\"(options.ViewType==1)?'col-md-9':'col-md-3'\"\r\n [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n <angular-editor class=\"form-control bnsights-control {{options.ExtraClasses_EN}} \" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\">\r\n <div class=\"row\" *ngIf=\"ShowArabicHtmlEditor\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \"\r\n [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\"\r\n class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\" col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n\r\n <angular-editor dir=\"rtl\" class=\"form-control bnsights-control {{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n \r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n </div>\r\n\r\n</div>\r\n",
2946
3024
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
2947
3025
  },] }
2948
3026
  ];
@@ -3176,7 +3254,11 @@ class ImageUploaderComponent {
3176
3254
  this.files = [];
3177
3255
  this.files.push(...event.addedFiles);
3178
3256
  }
3179
- this.OnChange.emit(this.ImageUploadFormControl.value);
3257
+ let originalValue = this.ImageUploadFormControl.value;
3258
+ if (this.options.PatchFunction && this.options.PatchPath && this.ImageUploadFormControl.valid) {
3259
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
3260
+ }
3261
+ this.OnChange.emit(originalValue);
3180
3262
  };
3181
3263
  }
3182
3264
  }
@@ -3454,7 +3536,11 @@ class ProfileImageUploaderComponent {
3454
3536
  reader.onload = () => {
3455
3537
  this.imageUrl = reader.result.toString();
3456
3538
  this.openModal(true);
3457
- this.OnChange.emit(this.group.get(this.options.Name).value);
3539
+ let originalValue = this.group.get(this.options.Name).value;
3540
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
3541
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
3542
+ }
3543
+ this.OnChange.emit(originalValue);
3458
3544
  };
3459
3545
  }
3460
3546
  }
@@ -3784,6 +3870,10 @@ class AutocompleteTextBoxComponent {
3784
3870
  else {
3785
3871
  this.AutocompleteTextBoxControl.setValue(item);
3786
3872
  this.AutocompleteTextBoxControl.updateValueAndValidity();
3873
+ let originalValue = this.AutocompleteTextBoxControl.value;
3874
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
3875
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
3876
+ }
3787
3877
  this.OnChange.emit(this.AutocompleteTextBoxControl.value);
3788
3878
  }
3789
3879
  }
@@ -3813,7 +3903,7 @@ AutocompleteTextBoxComponent.decorators = [
3813
3903
  { type: Component, args: [{
3814
3904
  // tslint:disable-next-line: component-selector
3815
3905
  selector: 'BBSF-AutocompleteTextBox',
3816
- template: "<div class=\"b-control b-auto-complete-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n \r\n <!-- <input \r\n[(ngModel)]=\"Search\"\r\n value=\"{{Search}}\" \r\n autocomplete=\"off\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n typeaheadOptionField=\"{{Value}}\"\r\n [typeahead]=\"suggestions$\"\r\n [typeaheadAsync]=\"true\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (typeaheadOnSelect)=\"handleResultSelected($event)\" (blur)=\"onBlur($event.target.value)\" /> -->\r\n<!-- \r\n <input ngxTypeahead autocomplete=\"off\"\r\n value=\"{{Search}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [taUrl]=\"options.ActionURL\"\r\n [taParams]=\"options.Params\" taQueryParam=\"{{QueryParam}}\" taApi=\"{{Api}}\" taListItemLabel=\"{{Value}}\" (taSelected)=\"handleResultSelected($event)\"> -->\r\n\r\n\r\n \r\n <ng-autocomplete\r\n *ngIf=\"!options.AllowNewSelection\"\r\n [data]=\"dataList\"\r\n [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\"\r\n placeholder=\"{{options.Placeholder}}\"\r\n (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)'\r\n historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [notFoundTemplate]=\"notFoundTemplate\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n >\r\n </ng-autocomplete>\r\n <ng-autocomplete\r\n *ngIf=\"options.AllowNewSelection\"\r\n [data]=\"dataList\"\r\n [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\"\r\n placeholder=\"{{options.Placeholder}}\"\r\n (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)'\r\n historyIdentifier=\"dataList\"\r\n [itemTemplate]=\"itemTemplate\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n >\r\n </ng-autocomplete>\r\n\r\n \r\n \r\n <ng-template #itemTemplate let-item>\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n \r\n <ng-template #notFoundTemplate let-notFound >\r\n <div [innerHTML]=\"notFound\"></div>\r\n </ng-template>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
3906
+ template: "<div class=\"b-control b-auto-complete-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <!-- <input \r\n[(ngModel)]=\"Search\"\r\n value=\"{{Search}}\" \r\n autocomplete=\"off\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n typeaheadOptionField=\"{{Value}}\"\r\n [typeahead]=\"suggestions$\"\r\n [typeaheadAsync]=\"true\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (typeaheadOnSelect)=\"handleResultSelected($event)\" (blur)=\"onBlur($event.target.value)\" /> -->\r\n <!-- \r\n <input ngxTypeahead autocomplete=\"off\"\r\n value=\"{{Search}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [taUrl]=\"options.ActionURL\"\r\n [taParams]=\"options.Params\" taQueryParam=\"{{QueryParam}}\" taApi=\"{{Api}}\" taListItemLabel=\"{{Value}}\" (taSelected)=\"handleResultSelected($event)\"> -->\r\n\r\n\r\n\r\n <ng-autocomplete *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 [notFoundTemplate]=\"notFoundTemplate\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" formControlName=\"{{options.Name}}\" 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 *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 class=\"form-control bnsights-control {{options.ExtraClasses}}\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\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\r\n\r\n <ng-template #itemTemplate let-item>\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n\r\n <ng-template #notFoundTemplate let-notFound>\r\n <div [innerHTML]=\"notFound\"></div>\r\n </ng-template>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>",
3817
3907
  styles: [""]
3818
3908
  },] }
3819
3909
  ];
@@ -3996,7 +4086,11 @@ class TagsInputComponent {
3996
4086
  this.TagsFormControl.invalid;
3997
4087
  }
3998
4088
  }
3999
- this.OnChange.emit(this.TagsFormControl.value);
4089
+ let originalValue = this.TagsFormControl.value;
4090
+ if (this.options.PatchFunction && this.options.PatchPath && this.TagsFormControl.valid) {
4091
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
4092
+ }
4093
+ this.OnChange.emit(originalValue);
4000
4094
  }
4001
4095
  onNoOptionsMatch(event) {
4002
4096
  this.IsNoMatch = event;
@@ -4482,7 +4576,11 @@ class RadioButtonComponent {
4482
4576
  return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
4483
4577
  }
4484
4578
  onValueChanged() {
4485
- this.OnChange.emit(this.RadioButtonFormControl.value);
4579
+ let originalValue = this.RadioButtonFormControl.value;
4580
+ if (this.options.PatchFunction && this.options.PatchPath && this.RadioButtonFormControl.valid) {
4581
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
4582
+ }
4583
+ this.OnChange.emit(originalValue);
4486
4584
  }
4487
4585
  }
4488
4586
  RadioButtonComponent.controlContainerstatic = null;
@@ -4578,6 +4676,9 @@ class TextboxComponent {
4578
4676
  if (this.options.LabelKey != null && this.options.LabelKey != "")
4579
4677
  this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
4580
4678
  this.getCustomErrorsMassages();
4679
+ if (this.options.IsRequired) {
4680
+ this.validationRules.push(Validators.required);
4681
+ }
4581
4682
  switch (this.options.Type) {
4582
4683
  case InputType.Email:
4583
4684
  this.validationRules.push(Validators.compose([
@@ -4640,9 +4741,6 @@ class TextboxComponent {
4640
4741
  this.options.MaxLengthWarningLimit = this.globalSettings.MaxLengthWarningLimit;
4641
4742
  this.minCharsLimit = this.options.MaxLength - this.options.MaxLengthWarningLimit;
4642
4743
  }
4643
- if (this.options.IsRequired) {
4644
- this.validationRules.push(Validators.required);
4645
- }
4646
4744
  this.TextBoxFormControl.setValidators(this.validationRules);
4647
4745
  this.TextBoxFormControl.setAsyncValidators(this.validationRulesasync);
4648
4746
  if (this.options.IsDisabled) {
@@ -4671,8 +4769,11 @@ class TextboxComponent {
4671
4769
  return this.controlUtility.getInputType(type);
4672
4770
  }
4673
4771
  trimControlValue() {
4674
- let OrignalValue = this.controlUtility.trimControlValue(this.TextBoxFormControl.value);
4675
- this.TextBoxFormControl.patchValue(OrignalValue);
4772
+ let originalValue = this.controlUtility.trimControlValue(this.TextBoxFormControl.value);
4773
+ this.TextBoxFormControl.patchValue(originalValue);
4774
+ if (this.options.PatchFunction && this.options.PatchPath && this.TextBoxFormControl.valid) {
4775
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
4776
+ }
4676
4777
  }
4677
4778
  copyInputMessage(inputElement) {
4678
4779
  this.controlUtility.CopyInputMessage(inputElement);
@@ -4688,6 +4789,11 @@ class TextboxComponent {
4688
4789
  this.EnglishLetterOnly = this.UtilityService.getResourceValue("EnglishLetterOnly");
4689
4790
  }
4690
4791
  onTextChange() {
4792
+ if (this.options.Type == InputType.Number)
4793
+ if (!this.TextBoxFormControl.value) {
4794
+ this.TextBoxFormControl.setErrors({ IntegerNumberValidationKey: "" });
4795
+ return;
4796
+ }
4691
4797
  if (this.TextBoxFormControl.value == "") {
4692
4798
  this.WordCountArray = 0;
4693
4799
  this.WordCount = 0;
@@ -5001,6 +5107,10 @@ class MapAutoCompleteComponent {
5001
5107
  this.MapAutoCompleteModel.Longitude = location.longitude;
5002
5108
  this.MapAutoCompleteFormControl.setValue(null);
5003
5109
  this.MapAutoCompleteFormControl.setValue(this.MapAutoCompleteModel);
5110
+ let originalValue = this.MapAutoCompleteFormControl.value;
5111
+ if (this.options.PatchFunction && this.options.PatchPath && this.MapAutoCompleteFormControl.valid) {
5112
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
5113
+ }
5004
5114
  }
5005
5115
  GermanAddressMapped(result) {
5006
5116
  this.MapAutoCompleteModel == new MapAutocompleteDTO();
@@ -5620,13 +5730,18 @@ var ForceDirection;
5620
5730
  ForceDirection[ForceDirection["Arabic"] = 2] = "Arabic";
5621
5731
  })(ForceDirection || (ForceDirection = {}));
5622
5732
 
5623
- class DatePickerOptions {
5733
+ class ControlOptionsBase {
5624
5734
  constructor() {
5625
- /** to set type of view if DatePicker is Vertical or Horizontal */
5626
- this.ViewType = ControlLayout.Vertical;
5627
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5628
- */
5735
+ /** to set type of view if Control is Vertical or Horizontal */
5736
+ this.ViewType = null;
5737
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */
5629
5738
  this.CustomValidation = [];
5739
+ }
5740
+ }
5741
+
5742
+ class DatePickerOptions extends ControlOptionsBase {
5743
+ constructor() {
5744
+ super(...arguments);
5630
5745
  /**To set First Day Of Week to DatePicker */
5631
5746
  this.FirstDayOfWeek = 1;
5632
5747
  /**To set PickerType to DatePicker is Calendar or Timer Or Both */
@@ -5641,14 +5756,11 @@ class DatePickerOptions {
5641
5756
  }
5642
5757
  }
5643
5758
 
5644
- class DropdownOptions {
5759
+ class DropdownOptions extends ControlOptionsBase {
5645
5760
  constructor() {
5761
+ super(...arguments);
5646
5762
  /** Disable Bootstrap DropdownList */
5647
5763
  this.DisableBootstrapSelect = false;
5648
- /** to set type of view if DropdownList is Vertical or Horizontal */
5649
- this.ViewType = null;
5650
- /** To Set Custom Validation*/
5651
- this.CustomValidation = [];
5652
5764
  /** Set key for item in DropdownList */
5653
5765
  this.ItemTempletkey = "key";
5654
5766
  /** Set value for item in DropdownList */
@@ -5657,27 +5769,19 @@ class DropdownOptions {
5657
5769
  }
5658
5770
  }
5659
5771
 
5660
- class FileUploadOptions {
5772
+ class FileUploadOptions extends ControlOptionsBase {
5661
5773
  constructor() {
5774
+ super(...arguments);
5662
5775
  /** Ability to set FileInput required */
5663
5776
  this.IsMultipleFile = false;
5664
5777
  /** Sets boolean Value to Show IsDropZone Or Not */
5665
5778
  this.IsDropZone = false;
5666
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5667
- */
5668
- this.CustomValidation = [];
5669
- /** to set type of view if textbox is Vertical or Horizontal */
5670
- this.ViewType = null;
5671
5779
  }
5672
5780
  }
5673
5781
 
5674
- class HtmlEditorOptions {
5782
+ class HtmlEditorOptions extends ControlOptionsBase {
5675
5783
  constructor() {
5676
- /** to set type of view if textbox is Vertical or Horizontal */
5677
- this.ViewType = null;
5678
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5679
- */
5680
- this.CustomValidation = [];
5784
+ super(...arguments);
5681
5785
  /** to set Direction of HtmlEditor if HtmlEditor is Arabic or English */
5682
5786
  this.ForceDirection = ForceDirection.English;
5683
5787
  /** Set Height For */
@@ -5695,45 +5799,26 @@ var ImageType;
5695
5799
  ImageType["None"] = "";
5696
5800
  })(ImageType || (ImageType = {}));
5697
5801
 
5698
- class ImageUploadOptions {
5802
+ class ImageUploadOptions extends ControlOptionsBase {
5699
5803
  constructor() {
5804
+ super(...arguments);
5700
5805
  /** Allow to Upload Multiple File */
5701
5806
  this.IsMultiple = false;
5702
5807
  /** Allow to Use Drop Zone */
5703
5808
  this.AllowDropZone = false;
5704
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5705
- */
5706
- this.CustomValidation = [];
5707
- /** to set type of view if FileInput is Vertical or Horizontal */
5708
- this.ViewType = null;
5709
5809
  /** Set List of Custom Attribute to FileInput */
5710
5810
  this.FileUploadAcceptsTypes = [ImageType.ImageTypes];
5711
5811
  }
5712
5812
  }
5713
5813
 
5714
- class MapAutoCompleteOptions {
5715
- constructor() {
5716
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5717
- */
5718
- this.CustomValidation = [];
5719
- /** to set type of view if MapAutoComplete is Vertical or Horizontal */
5720
- this.ViewType = null;
5721
- }
5814
+ class MapAutoCompleteOptions extends ControlOptionsBase {
5722
5815
  }
5723
5816
 
5724
- class PhoneOptions {
5817
+ class PhoneOptions extends ControlOptionsBase {
5725
5818
  constructor() {
5726
- /**
5727
- * Represent Css classes to Phonebox
5728
- */
5729
- this.ExtraClasses = "form-control bnsights-control";
5730
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5731
- */
5732
- this.CustomValidation = [];
5819
+ super(...arguments);
5733
5820
  /**Set List Of Countries As Preferred Countries*/
5734
5821
  this.PreferredCountries = [];
5735
- /** to set type of view if Phonebox is Vertical or Horizontal */
5736
- this.ViewType = null;
5737
5822
  this.ForceDirection = ForceDirection.English;
5738
5823
  }
5739
5824
  }
@@ -5741,13 +5826,9 @@ class PhoneOptions {
5741
5826
  class RangeNumber {
5742
5827
  }
5743
5828
 
5744
- class TextAreaOptions {
5829
+ class TextAreaOptions extends ControlOptionsBase {
5745
5830
  constructor() {
5746
- /** to set type of view if TextArea is Vertical or Horizontal */
5747
- this.ViewType = null;
5748
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5749
- */
5750
- this.CustomValidation = [];
5831
+ super(...arguments);
5751
5832
  /** to set Direction of TextArea if TextArea is Arabic or English */
5752
5833
  this.ForceDirection = ForceDirection.English;
5753
5834
  }
@@ -5759,17 +5840,13 @@ var IconPosition;
5759
5840
  IconPosition[IconPosition["right"] = 2] = "right";
5760
5841
  })(IconPosition || (IconPosition = {}));
5761
5842
 
5762
- class TextBoxOptions {
5843
+ class TextBoxOptions extends ControlOptionsBase {
5763
5844
  constructor() {
5845
+ super(...arguments);
5764
5846
  /** set Range Number to Textbox with type number with From-Value and To-value*/
5765
5847
  this.NumberRange = new RangeNumber();
5766
5848
  /**Prevent AutoComplete of textbox*/
5767
5849
  this.AutoComplete = "off";
5768
- /** to set type of view if textbox is Vertical or Horizontal */
5769
- this.ViewType = null;
5770
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
5771
- */
5772
- this.CustomValidation = [];
5773
5850
  /** to set Direction of textbox if textbox is Arabic or English */
5774
5851
  this.ForceDirection = null;
5775
5852
  /** to set Language of textbox if textbox language is Arabic or English */
@@ -5782,9 +5859,9 @@ class TextBoxOptions {
5782
5859
  }
5783
5860
  }
5784
5861
 
5785
- class ToggleSlideOptions {
5862
+ class ToggleSlideOptions extends ControlOptionsBase {
5786
5863
  constructor() {
5787
- this.ViewType = null;
5864
+ super(...arguments);
5788
5865
  this.ForceDirection = ForceDirection.English;
5789
5866
  }
5790
5867
  }
@@ -6643,6 +6720,42 @@ RepeaterTableComponent.propDecorators = {
6643
6720
  options: [{ type: Input }]
6644
6721
  };
6645
6722
 
6723
+ class BBSFDateTimePipe {
6724
+ constructor(datePipe) {
6725
+ this.datePipe = datePipe;
6726
+ }
6727
+ transform(value) {
6728
+ let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');
6729
+ return latest_date;
6730
+ }
6731
+ }
6732
+ BBSFDateTimePipe.decorators = [
6733
+ { type: Pipe, args: [{
6734
+ name: 'bbsfDateTime'
6735
+ },] }
6736
+ ];
6737
+ BBSFDateTimePipe.ctorParameters = () => [
6738
+ { type: DatePipe }
6739
+ ];
6740
+
6741
+ class BBSFDatePipe {
6742
+ constructor(datePipe) {
6743
+ this.datePipe = datePipe;
6744
+ }
6745
+ transform(value) {
6746
+ let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy');
6747
+ return latest_date;
6748
+ }
6749
+ }
6750
+ BBSFDatePipe.decorators = [
6751
+ { type: Pipe, args: [{
6752
+ name: 'bbsfDate'
6753
+ },] }
6754
+ ];
6755
+ BBSFDatePipe.ctorParameters = () => [
6756
+ { type: DatePipe }
6757
+ ];
6758
+
6646
6759
  let options;
6647
6760
  let AppInjector;
6648
6761
  FullCalendarModule.registerPlugins([
@@ -6690,7 +6803,9 @@ BBSFControlsModule.decorators = [
6690
6803
  RepeaterFieldBuilderComponent,
6691
6804
  NgTemplateNameDirective,
6692
6805
  RepeaterItemFieldComponent,
6693
- RepeaterTableComponent
6806
+ RepeaterTableComponent,
6807
+ BBSFDateTimePipe,
6808
+ BBSFDatePipe
6694
6809
  ],
6695
6810
  imports: [
6696
6811
  CommonModule,
@@ -6736,9 +6851,10 @@ BBSFControlsModule.decorators = [
6736
6851
  FullCalendarModule,
6737
6852
  TypeaheadModule.forRoot(),
6738
6853
  AngularEditorModule,
6854
+ AutocompleteLibModule,
6739
6855
  BBSFUtilitiesModule,
6740
6856
  InlineSVGModule.forRoot(),
6741
- SweetAlert2Module
6857
+ SweetAlert2Module,
6742
6858
  ],
6743
6859
  providers: [
6744
6860
  ErrorMassageValidation,
@@ -6749,6 +6865,8 @@ BBSFControlsModule.decorators = [
6749
6865
  NgbModal,
6750
6866
  NgbActiveModal,
6751
6867
  DatePipe,
6868
+ BBSFDateTimePipe,
6869
+ BBSFDatePipe,
6752
6870
  RenderComponentService,
6753
6871
  { provide: OWL_DATE_TIME_LOCALE, useValue: ɵ0 },
6754
6872
  ],
@@ -6784,7 +6902,9 @@ BBSFControlsModule.decorators = [
6784
6902
  RepeaterFieldBuilderComponent,
6785
6903
  NgTemplateNameDirective,
6786
6904
  RepeaterItemFieldComponent,
6787
- RepeaterTableComponent
6905
+ RepeaterTableComponent,
6906
+ BBSFDateTimePipe,
6907
+ BBSFDatePipe
6788
6908
  ]
6789
6909
  },] }
6790
6910
  ];
@@ -6805,6 +6925,19 @@ const environment = Object.assign({}, window.Environment);
6805
6925
  */
6806
6926
  // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
6807
6927
 
6928
+ class MultilingualControlOptionsBase {
6929
+ constructor() {
6930
+ /** to set type of view if MultipleLanguageText is Vertical or Horizontal */
6931
+ this.ViewType = null;
6932
+ /**To Set Value To MultipleLanguageText with Object From Type "EnglishArabicDTO" */
6933
+ this.Value = new EnglishArabicDTO();
6934
+ /**To Set LanguageMode To MultipleLanguageText */
6935
+ this.LanguageMode = null;
6936
+ /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage */
6937
+ this.CustomValidation = [];
6938
+ }
6939
+ }
6940
+
6808
6941
  class CustomValidation {
6809
6942
  }
6810
6943
  class CustomValidator {
@@ -6819,17 +6952,9 @@ class CustomValidator {
6819
6952
  }
6820
6953
  }
6821
6954
 
6822
- class MultiLingualTextBoxOptions {
6955
+ class MultiLingualTextBoxOptions extends MultilingualControlOptionsBase {
6823
6956
  constructor() {
6824
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6825
- */
6826
- this.CustomValidation = [];
6827
- /**To Set Value To MultipleLanguageText with Object From Type "EnglishArabicDTO" */
6828
- this.Value = new EnglishArabicDTO();
6829
- /** to set type of view if textbox is Vertical or Horizontal */
6830
- this.ViewType = null;
6831
- /**To Set LanguageMode To MultipleLanguageText */
6832
- this.LanguageMode = null;
6957
+ super(...arguments);
6833
6958
  this.IconPositionEN = IconPosition.left;
6834
6959
  this.IconPositionAR = IconPosition.right;
6835
6960
  /*multi control placement type*/
@@ -6840,29 +6965,19 @@ class MultiLingualTextBoxOptions {
6840
6965
  class Attribute {
6841
6966
  }
6842
6967
 
6843
- class MultiLingualTextAreaOptions {
6968
+ class MultiLingualTextAreaOptions extends MultilingualControlOptionsBase {
6844
6969
  constructor() {
6845
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6846
- */
6847
- this.CustomValidation = [];
6848
- /**To Set Value To MultipleLanguageText with Object From Type "EnglishArabicDTO" */
6849
- this.Value = new EnglishArabicDTO();
6850
- /** to set type of view if MultilingualTextArea is Vertical or Horizontal */
6851
- this.ViewType = null;
6852
- /**To Set LanguageMode To MultipleLanguageText */
6853
- this.LanguageMode = null;
6970
+ super(...arguments);
6854
6971
  /*multi control placement type*/
6855
6972
  this.MultiControlPlacementType = null;
6856
6973
  }
6857
6974
  }
6858
6975
 
6859
- class CheckBoxOptions {
6976
+ class CheckBoxOptions extends ControlOptionsBase {
6860
6977
  constructor() {
6978
+ super(...arguments);
6861
6979
  /**To set value to CheckBox */
6862
6980
  this.Value = null;
6863
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6864
- */
6865
- this.CustomValidation = [];
6866
6981
  this.ForceDirection = ForceDirection.English;
6867
6982
  }
6868
6983
  }
@@ -6870,30 +6985,18 @@ class CheckBoxOptions {
6870
6985
  class DropdownListItem {
6871
6986
  }
6872
6987
 
6873
- class MultiLingualHtmlEditorOptions {
6988
+ class MultiLingualHtmlEditorOptions extends MultilingualControlOptionsBase {
6874
6989
  constructor() {
6875
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6876
- */
6877
- this.CustomValidation = [];
6878
- /**To Set Value To MultipleLanguageText with Object From Type "EnglishArabicDTO" */
6879
- this.Value = new EnglishArabicDTO();
6880
- /** to set type of view if MultipleLanguageText is Vertical or Horizontal */
6881
- this.ViewType = null;
6990
+ super(...arguments);
6882
6991
  /** Set Height For */
6883
6992
  this.Height = 150;
6884
- /**To Set LanguageMode To MultipleLanguageText */
6885
- this.LanguageMode = null;
6886
6993
  }
6887
6994
  }
6888
6995
 
6889
- class ProfileImageUploadOptions {
6996
+ class ProfileImageUploadOptions extends ControlOptionsBase {
6890
6997
  constructor() {
6891
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6892
- */
6998
+ super(...arguments);
6893
6999
  this.AllowDropZone = false;
6894
- this.CustomValidation = [];
6895
- /** to set type of view if FileInput is Vertical or Horizontal */
6896
- this.ViewType = null;
6897
7000
  /** Set List of Custom Attribute to FileInput */
6898
7001
  this.ImageUploadAcceptsTypes = [ImageType.ImageTypes];
6899
7002
  }
@@ -6927,8 +7030,9 @@ class UploadPersonalImage {
6927
7030
  }
6928
7031
  }
6929
7032
 
6930
- class CalendarOptions {
7033
+ class CalendarOptions extends ControlOptionsBase {
6931
7034
  constructor() {
7035
+ super(...arguments);
6932
7036
  /** Represent DefaultView Of Calendar*/
6933
7037
  this.DefaultView = CalendarView.Month;
6934
7038
  /** Represent CalendarViews Of Calendar*/
@@ -6946,21 +7050,15 @@ class CalendarOptions {
6946
7050
  class CalendarEventDTO {
6947
7051
  }
6948
7052
 
6949
- class AutocompleteOptions {
7053
+ class AutocompleteOptions extends ControlOptionsBase {
6950
7054
  constructor() {
6951
- /**
6952
- * Represent classes to textbox that allow us to select the AutoComplete by jquery or javascript
6953
- */
7055
+ super(...arguments);
7056
+ /**Represent classes to textbox that allow us to select the AutoComplete by jquery or javascript */
6954
7057
  this.ValidationToken = null;
6955
7058
  /**To set value to textbox */
6956
7059
  this.Value = null;
6957
7060
  /** set Range Number to Textbox with type number with From-Value and To-value*/
6958
7061
  this.NumberRange = new RangeNumber();
6959
- /** to set type of view if textbox is Vertical or Horizontal */
6960
- this.ViewType = null;
6961
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6962
- */
6963
- this.CustomValidation = [];
6964
7062
  /** to set Direction of textbox if textbox is Arabic or English */
6965
7063
  this.ForceDirection = ForceDirection.English;
6966
7064
  /** allow add value of AutoComplete dosn't exist in list*/
@@ -6975,15 +7073,9 @@ class AutocompleteOptions {
6975
7073
  class TagsInputDTO {
6976
7074
  }
6977
7075
 
6978
- class TagsInputOptions {
7076
+ class TagsInputOptions extends ControlOptionsBase {
6979
7077
  constructor() {
6980
- /**To set value to tagsinput */
6981
- this.Value = null;
6982
- /** to set type of view if tagsinput is Vertical or Horizontal */
6983
- this.ViewType = null;
6984
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
6985
- */
6986
- this.CustomValidation = [];
7078
+ super(...arguments);
6987
7079
  /** to set Direction of tagsinput if tagsinput is Arabic or English */
6988
7080
  this.ForceDirection = ForceDirection.English;
6989
7081
  /**Remove Last When User Click On Backspace */
@@ -7068,13 +7160,7 @@ class PagingOptions {
7068
7160
  }
7069
7161
  }
7070
7162
 
7071
- class RadioButtonOptions {
7072
- constructor() {
7073
- this.ViewType = null;
7074
- /** Allow to Pass Object With Body of Function which represent CustomValidation and massage for error massage
7075
- */
7076
- this.CustomValidation = [];
7077
- }
7163
+ class RadioButtonOptions extends ControlOptionsBase {
7078
7164
  }
7079
7165
 
7080
7166
  class RadioButtonItem {
@@ -7479,5 +7565,5 @@ var FileType;
7479
7565
  * Generated bundle index. Do not edit.
7480
7566
  */
7481
7567
 
7482
- export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageType, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, PropertyLocation, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
7568
+ export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFDatePipe, BBSFDateTimePipe, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageType, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, PropertyLocation, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
7483
7569
  //# sourceMappingURL=bnsights-bbsf-controls.js.map