@bnsights/bbsf-controls 1.0.0

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 (193) hide show
  1. package/README.md +24 -0
  2. package/bnsights-bbsf-controls.d.ts +26 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -0
  4. package/bundles/bnsights-bbsf-controls.umd.js +6375 -0
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -0
  6. package/esm2015/bnsights-bbsf-controls.js +27 -0
  7. package/esm2015/lib/Shared/Enums/CalendarView.js +8 -0
  8. package/esm2015/lib/Shared/Enums/ControlLayout.js +6 -0
  9. package/esm2015/lib/Shared/Enums/Countries.js +247 -0
  10. package/esm2015/lib/Shared/Enums/FileType.js +22 -0
  11. package/esm2015/lib/Shared/Enums/FilterType.js +11 -0
  12. package/esm2015/lib/Shared/Enums/FontSize.js +7 -0
  13. package/esm2015/lib/Shared/Enums/ForceDirection.js +6 -0
  14. package/esm2015/lib/Shared/Enums/IconPosition.js +6 -0
  15. package/esm2015/lib/Shared/Enums/ImageType.js +10 -0
  16. package/esm2015/lib/Shared/Enums/InputType.js +9 -0
  17. package/esm2015/lib/Shared/Enums/Insert.js +9 -0
  18. package/esm2015/lib/Shared/Enums/LanguageMode.js +11 -0
  19. package/esm2015/lib/Shared/Enums/Misc.js +7 -0
  20. package/esm2015/lib/Shared/Enums/PagingActionMode.js +6 -0
  21. package/esm2015/lib/Shared/Enums/Para.js +9 -0
  22. package/esm2015/lib/Shared/Enums/PickerType.js +7 -0
  23. package/esm2015/lib/Shared/Enums/SelectMode.js +6 -0
  24. package/esm2015/lib/Shared/Enums/StartView.js +7 -0
  25. package/esm2015/lib/Shared/Enums/Style.js +8 -0
  26. package/esm2015/lib/Shared/Enums/menu-list-enum.js +6 -0
  27. package/esm2015/lib/Shared/Models/Attribute.js +3 -0
  28. package/esm2015/lib/Shared/Models/AutocompleteDTO.js +7 -0
  29. package/esm2015/lib/Shared/Models/AutocompleteOptions.js +29 -0
  30. package/esm2015/lib/Shared/Models/CalendarEventDTO.js +3 -0
  31. package/esm2015/lib/Shared/Models/CalendarOptions.js +17 -0
  32. package/esm2015/lib/Shared/Models/CancelDTO.js +7 -0
  33. package/esm2015/lib/Shared/Models/CheckBoxOptions.js +12 -0
  34. package/esm2015/lib/Shared/Models/CustomValidation.js +14 -0
  35. package/esm2015/lib/Shared/Models/DropdownListItem.js +3 -0
  36. package/esm2015/lib/Shared/Models/DropdownOptions.js +18 -0
  37. package/esm2015/lib/Shared/Models/EditPersonalImage.js +7 -0
  38. package/esm2015/lib/Shared/Models/EnglishArabicDTO.js +3 -0
  39. package/esm2015/lib/Shared/Models/FileDTO.js +2 -0
  40. package/esm2015/lib/Shared/Models/FileUploadModel.js +3 -0
  41. package/esm2015/lib/Shared/Models/FileUploadOptions.js +15 -0
  42. package/esm2015/lib/Shared/Models/FilterItem.js +8 -0
  43. package/esm2015/lib/Shared/Models/FormOptions.js +26 -0
  44. package/esm2015/lib/Shared/Models/HtmlEditorOptions.js +16 -0
  45. package/esm2015/lib/Shared/Models/ImageUploadOptions.js +18 -0
  46. package/esm2015/lib/Shared/Models/MapAutoCompleteOptions.js +11 -0
  47. package/esm2015/lib/Shared/Models/MapAutocompleteDTO.js +3 -0
  48. package/esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js +19 -0
  49. package/esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js +19 -0
  50. package/esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js +22 -0
  51. package/esm2015/lib/Shared/Models/MultipleFileUploadModel.js +9 -0
  52. package/esm2015/lib/Shared/Models/PagingDTO.js +13 -0
  53. package/esm2015/lib/Shared/Models/PagingOptions.js +43 -0
  54. package/esm2015/lib/Shared/Models/PhoneOptions.js +15 -0
  55. package/esm2015/lib/Shared/Models/ProfileImageUploadOptions.js +15 -0
  56. package/esm2015/lib/Shared/Models/ProfilePictureDTO.js +3 -0
  57. package/esm2015/lib/Shared/Models/RadioButtonItem.js +3 -0
  58. package/esm2015/lib/Shared/Models/RadioButtonOptions.js +10 -0
  59. package/esm2015/lib/Shared/Models/RangeNumber.js +3 -0
  60. package/esm2015/lib/Shared/Models/SaveDTO.js +7 -0
  61. package/esm2015/lib/Shared/Models/TagsInputDTO.js +3 -0
  62. package/esm2015/lib/Shared/Models/TagsInputOptions.js +45 -0
  63. package/esm2015/lib/Shared/Models/TextAreaOptions.js +14 -0
  64. package/esm2015/lib/Shared/Models/TextBoxOptions.js +21 -0
  65. package/esm2015/lib/Shared/Models/ToggleslideOptions.js +9 -0
  66. package/esm2015/lib/Shared/Models/UploadPersonalImage.js +7 -0
  67. package/esm2015/lib/Shared/Models/datePickerOptions.js +24 -0
  68. package/esm2015/lib/Shared/config/environment.js +12 -0
  69. package/esm2015/lib/Shared/services/ControlUtility.js +114 -0
  70. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +22 -0
  71. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +122 -0
  72. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +236 -0
  73. package/esm2015/lib/controls/Calendar/Calendar.component.js +176 -0
  74. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +111 -0
  75. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +148 -0
  76. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +172 -0
  77. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +319 -0
  78. package/esm2015/lib/controls/Form/Form.component.js +82 -0
  79. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +202 -0
  80. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +304 -0
  81. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +283 -0
  82. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +383 -0
  83. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +325 -0
  84. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +326 -0
  85. package/esm2015/lib/controls/Paging/JwPagination.component.js +127 -0
  86. package/esm2015/lib/controls/Paging/Paging.component.js +215 -0
  87. package/esm2015/lib/controls/Phone/Phone.component.js +114 -0
  88. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +326 -0
  89. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +98 -0
  90. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +205 -0
  91. package/esm2015/lib/controls/TextArea/TextArea.component.js +148 -0
  92. package/esm2015/lib/controls/TextBox/TextBox.component.js +217 -0
  93. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +71 -0
  94. package/esm2015/lib/controls/bbsf-controls.module.js +208 -0
  95. package/esm2015/public-api.js +101 -0
  96. package/fesm2015/bnsights-bbsf-controls.js +5794 -0
  97. package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
  98. package/lib/Shared/Enums/CalendarView.d.ts +6 -0
  99. package/lib/Shared/Enums/ControlLayout.d.ts +4 -0
  100. package/lib/Shared/Enums/Countries.d.ts +245 -0
  101. package/lib/Shared/Enums/FileType.d.ts +20 -0
  102. package/lib/Shared/Enums/FilterType.d.ts +9 -0
  103. package/lib/Shared/Enums/FontSize.d.ts +5 -0
  104. package/lib/Shared/Enums/ForceDirection.d.ts +4 -0
  105. package/lib/Shared/Enums/IconPosition.d.ts +4 -0
  106. package/lib/Shared/Enums/ImageType.d.ts +8 -0
  107. package/lib/Shared/Enums/InputType.d.ts +7 -0
  108. package/lib/Shared/Enums/Insert.d.ts +7 -0
  109. package/lib/Shared/Enums/LanguageMode.d.ts +9 -0
  110. package/lib/Shared/Enums/Misc.d.ts +5 -0
  111. package/lib/Shared/Enums/PagingActionMode.d.ts +4 -0
  112. package/lib/Shared/Enums/Para.d.ts +7 -0
  113. package/lib/Shared/Enums/PickerType.d.ts +5 -0
  114. package/lib/Shared/Enums/SelectMode.d.ts +4 -0
  115. package/lib/Shared/Enums/StartView.d.ts +5 -0
  116. package/lib/Shared/Enums/Style.d.ts +6 -0
  117. package/lib/Shared/Enums/menu-list-enum.d.ts +4 -0
  118. package/lib/Shared/Models/Attribute.d.ts +4 -0
  119. package/lib/Shared/Models/AutocompleteDTO.d.ts +4 -0
  120. package/lib/Shared/Models/AutocompleteOptions.d.ts +74 -0
  121. package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -0
  122. package/lib/Shared/Models/CalendarOptions.d.ts +29 -0
  123. package/lib/Shared/Models/CancelDTO.d.ts +5 -0
  124. package/lib/Shared/Models/CheckBoxOptions.d.ts +38 -0
  125. package/lib/Shared/Models/CustomValidation.d.ts +10 -0
  126. package/lib/Shared/Models/DropdownListItem.d.ts +4 -0
  127. package/lib/Shared/Models/DropdownOptions.d.ts +67 -0
  128. package/lib/Shared/Models/EditPersonalImage.d.ts +5 -0
  129. package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -0
  130. package/lib/Shared/Models/FileDTO.d.ts +19 -0
  131. package/lib/Shared/Models/FileUploadModel.d.ts +4 -0
  132. package/lib/Shared/Models/FileUploadOptions.d.ts +56 -0
  133. package/lib/Shared/Models/FilterItem.d.ts +13 -0
  134. package/lib/Shared/Models/FormOptions.d.ts +15 -0
  135. package/lib/Shared/Models/HtmlEditorOptions.d.ts +66 -0
  136. package/lib/Shared/Models/ImageUploadOptions.d.ts +59 -0
  137. package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +44 -0
  138. package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -0
  139. package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +97 -0
  140. package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +85 -0
  141. package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +83 -0
  142. package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -0
  143. package/lib/Shared/Models/PagingDTO.d.ts +11 -0
  144. package/lib/Shared/Models/PagingOptions.d.ts +51 -0
  145. package/lib/Shared/Models/PhoneOptions.d.ts +56 -0
  146. package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +64 -0
  147. package/lib/Shared/Models/ProfilePictureDTO.d.ts +12 -0
  148. package/lib/Shared/Models/RadioButtonItem.d.ts +4 -0
  149. package/lib/Shared/Models/RadioButtonOptions.d.ts +44 -0
  150. package/lib/Shared/Models/RangeNumber.d.ts +4 -0
  151. package/lib/Shared/Models/SaveDTO.d.ts +5 -0
  152. package/lib/Shared/Models/TagsInputDTO.d.ts +4 -0
  153. package/lib/Shared/Models/TagsInputOptions.d.ts +91 -0
  154. package/lib/Shared/Models/TextAreaOptions.d.ts +60 -0
  155. package/lib/Shared/Models/TextBoxOptions.d.ts +70 -0
  156. package/lib/Shared/Models/ToggleslideOptions.d.ts +36 -0
  157. package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -0
  158. package/lib/Shared/Models/datePickerOptions.d.ts +65 -0
  159. package/lib/Shared/config/environment.d.ts +1 -0
  160. package/lib/Shared/services/ControlUtility.d.ts +23 -0
  161. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +7 -0
  162. package/lib/Shared/services/validationErrorMassage.service.d.ts +13 -0
  163. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +51 -0
  164. package/lib/controls/Calendar/Calendar.component.d.ts +40 -0
  165. package/lib/controls/CheckBox/CheckBox.component.d.ts +33 -0
  166. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +41 -0
  167. package/lib/controls/DropdownList/DropdownList.component.d.ts +47 -0
  168. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +49 -0
  169. package/lib/controls/Form/Form.component.d.ts +15 -0
  170. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +44 -0
  171. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +64 -0
  172. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +52 -0
  173. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +58 -0
  174. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +59 -0
  175. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +57 -0
  176. package/lib/controls/Paging/JwPagination.component.d.ts +24 -0
  177. package/lib/controls/Paging/Paging.component.d.ts +44 -0
  178. package/lib/controls/Phone/Phone.component.d.ts +37 -0
  179. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +65 -0
  180. package/lib/controls/RadioButton/RadioButton.component.d.ts +31 -0
  181. package/lib/controls/TagsInput/TagsInput.component.d.ts +47 -0
  182. package/lib/controls/TextArea/TextArea.component.d.ts +41 -0
  183. package/lib/controls/TextBox/TextBox.component.d.ts +50 -0
  184. package/lib/controls/Toggleslide/toggleslide.component.d.ts +26 -0
  185. package/lib/controls/bbsf-controls.module.d.ts +10 -0
  186. package/package.json +85 -0
  187. package/public-api.d.ts +66 -0
  188. package/src/lib/assets/Style.css +1149 -0
  189. package/src/lib/assets/i18n/ar.json +29 -0
  190. package/src/lib/assets/i18n/en.json +24 -0
  191. package/src/lib/assets/images/imagenotfound.png +0 -0
  192. package/src/lib/assets/images/uploadimg.png +0 -0
  193. package/src/lib/assets/images/userimg.png +0 -0
@@ -0,0 +1,217 @@
1
+ import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
+ import { FormControl, Validators, ControlContainer, FormGroupDirective } from '@angular/forms';
3
+ import { InputType } from '../../Shared/Enums/InputType';
4
+ import { ControlUtility } from '../../Shared/services/ControlUtility';
5
+ import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
6
+ export class TextboxComponent {
7
+ // tslint:disable-next-line: max-line-length
8
+ constructor(controlUtility, controlContainer, TextControlHost, UtilityService, controlValidationService) {
9
+ this.controlUtility = controlUtility;
10
+ this.controlContainer = controlContainer;
11
+ this.TextControlHost = TextControlHost;
12
+ this.UtilityService = UtilityService;
13
+ this.controlValidationService = controlValidationService;
14
+ this.OnChange = new EventEmitter();
15
+ this.WordCount = 0;
16
+ this.WordCountArray = 0;
17
+ this.IsShowWordCount = false;
18
+ this.markAllAsTouched = false;
19
+ this.validationRules = [];
20
+ this.validationRulesasync = [];
21
+ this.currentLanguage = "";
22
+ this.resetError = () => {
23
+ this.controlValidationService.RemoveGlobalError();
24
+ };
25
+ //External Method
26
+ this.RemoveRequiredValidation = () => {
27
+ this.controlUtility.RemoveRequiredValidation(this.TextBoxFormControl, this.validationRules, this.options);
28
+ };
29
+ //External Method
30
+ this.AddRequiredValidation = () => {
31
+ this.controlUtility.AddRequiredValidation(this.TextBoxFormControl, this.validationRules, this.options);
32
+ };
33
+ //External Method
34
+ this.RemoveCustomValidation = (CustomValidation) => {
35
+ this.controlUtility.RemoveCustomValidation(this.TextBoxFormControl, this.validationRules, CustomValidation);
36
+ };
37
+ //External Method
38
+ this.AddCustomValidation = (CustomValidation) => {
39
+ this.controlUtility.AddCustomValidation(this.TextBoxFormControl, this.validationRules, CustomValidation);
40
+ };
41
+ //External Method
42
+ this.IsValid = () => {
43
+ this.controlUtility.IsValid(this.TextBoxFormControl);
44
+ };
45
+ TextboxComponent.controlContainerstatic = this.controlContainer;
46
+ }
47
+ // static showErrorOfInputs(errors: any) {
48
+ // const controlContainerstatic = TextboxComponent.controlContainerstatic;
49
+ // const formGroup = controlContainerstatic.control as FormGroup;
50
+ // for (const key in errors) {
51
+ // if (errors.hasOwnProperty(key)) {
52
+ // for (const iterator of errors[key]) {
53
+ // const formControl = formGroup.get(key) as FormControl;
54
+ // formControl.setErrors({ "FluentApi": iterator });
55
+ // formControl.markAsTouched();
56
+ // }
57
+ // }
58
+ // }
59
+ // }
60
+ ngOnInit() {
61
+ this.controlValidationService.isCreatedBefor = false;
62
+ if (this.options.MaskPattern != null && this.options.MaskPattern != "") {
63
+ this.MaskPattern = this.options.MaskPattern;
64
+ this.options.Placeholder = this.MaskPattern;
65
+ }
66
+ this.group.addControl(this.options.Name, new FormControl(''));
67
+ this.TextBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
68
+ this.TextBoxFormControl.setValue(this.options.Value);
69
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
70
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
71
+ this.getCustomErrorsMassages();
72
+ switch (this.options.Type) {
73
+ case InputType.Email:
74
+ this.validationRules.push(Validators.compose([
75
+ this.controlUtility.patternValidator(/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/, { EmailValidationKey: this.EmailValidationKey }),
76
+ ]));
77
+ break;
78
+ case InputType.EID:
79
+ this.MaskPattern = '000-0000-0000000-0';
80
+ this.options.Placeholder = this.MaskPattern;
81
+ break;
82
+ case InputType.Number:
83
+ this.validationRules.push(Validators.pattern('^[0-9]+(\.?[0-9]+)?$'));
84
+ if (this.options.NumberRange != null) {
85
+ this.validationRules.push(Validators.min(this.options.NumberRange.From));
86
+ this.validationRules.push(Validators.max(this.options.NumberRange.To));
87
+ }
88
+ break;
89
+ case InputType.Password:
90
+ if (!this.options.RemoveDefaultPasswordValidation) {
91
+ this.validationRules.push(Validators.compose([
92
+ this.controlUtility.patternValidator(/\d/, { PasswordComplexityHasNumber: this.PasswordComplexityHasNumber }),
93
+ this.controlUtility.patternValidator(/[A-Z]/, { PasswordComplexityHasCapitalLetter: this.PasswordComplexityHasCapitalLetter }),
94
+ this.controlUtility.patternValidator(/[a-z]/, { PasswordComplexityHasSmallLetter: this.PasswordComplexityHasSmallLetter }),
95
+ this.controlUtility.patternValidator(/[!@#$%^&*(),.?":{}|<>]/, { PasswordComplexityHasSpecialLetter: this.PasswordComplexityHasSpecialLetter }),
96
+ Validators.minLength(8),
97
+ ]));
98
+ }
99
+ break;
100
+ }
101
+ // if (this.options.ForceDirection==ForceDirection.Arabic)
102
+ // {
103
+ // this.validationRules.push(Validators.compose([
104
+ // this.controlUtility.patternValidator(/[\u0621-\u064A]+/, { ArabicLetterOnly: this.ArabicLetterOnly }),
105
+ // ]));
106
+ // }
107
+ // else if (this.options.ForceDirection==ForceDirection.English)
108
+ // {
109
+ // this.validationRules.push(Validators.compose([
110
+ // this.controlUtility.patternValidator(/^[\x00-\x7F]*$/, { EnglishLetterOnly: this.EnglishLetterOnly }),
111
+ // ]));
112
+ // }
113
+ if (this.options.CustomValidation.length > 0) {
114
+ let Validations = this.options.CustomValidation;
115
+ for (let index = 0; index < Validations.length; index++) {
116
+ const Validation = Validations[index];
117
+ this.validationRules.push(Validation.functionBody);
118
+ }
119
+ }
120
+ if (this.options.MinLength > 0) {
121
+ this.validationRules.push(Validators.minLength(this.options.MinLength));
122
+ }
123
+ if (this.options.MaxLength > 0) {
124
+ this.validationRules.push(Validators.maxLength(this.options.MaxLength));
125
+ }
126
+ if (this.options.IsRequired) {
127
+ this.validationRules.push(Validators.required);
128
+ }
129
+ this.TextBoxFormControl.setValidators(this.validationRules);
130
+ this.TextBoxFormControl.setAsyncValidators(this.validationRulesasync);
131
+ if (this.options.IsDisabled) {
132
+ this.TextBoxFormControl.disable();
133
+ }
134
+ this.TextControlHost.ngSubmit.subscribe((value) => {
135
+ this.group.markAllAsTouched();
136
+ this.markAllAsTouched = true;
137
+ });
138
+ }
139
+ ngAfterViewInit() {
140
+ this.controlUtility.setAttributeForControl(this.options);
141
+ }
142
+ showGlobalError() {
143
+ this.controlUtility.showGlobalError();
144
+ }
145
+ getErrorValidation(ErrorList) {
146
+ if (this.markAllAsTouched && this.group.invalid) {
147
+ this.showGlobalError();
148
+ this.markAllAsTouched = false;
149
+ }
150
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
151
+ }
152
+ getInputType(type) {
153
+ return this.controlUtility.getInputType(type);
154
+ }
155
+ trimControlValue() {
156
+ let OrignalValue = this.controlUtility.trimControlValue(this.TextBoxFormControl.value);
157
+ this.TextBoxFormControl.patchValue(OrignalValue);
158
+ }
159
+ copyInputMessage(inputElement) {
160
+ this.controlUtility.CopyInputMessage(inputElement);
161
+ }
162
+ getCustomErrorsMassages() {
163
+ this.EmailValidationKey = this.UtilityService.getResourceValue("EmailValidationKey");
164
+ this.PasswordComplexityHasCapitalLetter = this.UtilityService.getResourceValue("PasswordComplexityHasCapitalLetter");
165
+ this.PasswordComplexityHasNumber = this.UtilityService.getResourceValue("PasswordComplexityHasNumber");
166
+ this.PasswordComplexityHasSmallLetter = this.UtilityService.getResourceValue("PasswordComplexityHasSmallLetter");
167
+ this.PasswordComplexityHasSpecialLetter = this.UtilityService.getResourceValue("PasswordComplexityHasSpecialLetter");
168
+ this.MaxWordCountValidationKey = this.UtilityService.getResourceValue("MaxWordCountValidationKey");
169
+ this.ArabicLetterOnly = this.UtilityService.getResourceValue("ArabicLetterOnly");
170
+ this.EnglishLetterOnly = this.UtilityService.getResourceValue("EnglishLetterOnly");
171
+ }
172
+ onTextChange() {
173
+ if (this.TextBoxFormControl.value == "") {
174
+ this.WordCountArray = 0;
175
+ this.WordCount = 0;
176
+ }
177
+ else {
178
+ this.WordCountArray = this.TextBoxFormControl.value.split(" ").length;
179
+ if (this.WordCountArray > 0) {
180
+ if (this.WordCountArray > this.options.MaxWordCount) {
181
+ this.WordCount = this.options.MaxWordCount;
182
+ this.TextBoxFormControl.setErrors({ MaxWordCountValidationKey: this.options.MaxWordCount });
183
+ this.TextBoxFormControl.markAsTouched();
184
+ this.TextBoxFormControl.invalid;
185
+ }
186
+ else {
187
+ this.WordCount = this.WordCountArray;
188
+ }
189
+ }
190
+ }
191
+ this.OnChange.emit(this.TextBoxFormControl.value);
192
+ }
193
+ showWordCount(value) {
194
+ this.IsShowWordCount = value;
195
+ }
196
+ }
197
+ TextboxComponent.controlContainerstatic = null;
198
+ TextboxComponent.decorators = [
199
+ { type: Component, args: [{
200
+ selector: 'BBSF-TextBox',
201
+ template: "<div class=\"b-control b-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\" [ngClass]=\"(options.NoMargin==true)?'':'NoMargin'\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"*ngIf=\"!options.HideLabel\" >\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'': ((options.HideLabel)?'col-md-12':'col-md-9')\">\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern!=null&&MaskPattern!=''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==1)?'left':'right'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n\r\n <div class=\"input-group align-items-center\" *ngIf=\"MaskPattern==null||MaskPattern==''\">\r\n <div class=\"svg svg-icon-grey\" [ngClass]=\"(options.IconPosition==1)?'left':'right'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <input class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n (focus)=\"showWordCount(true)\" (focusout)=\"showWordCount(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <div class=\"input-group-append\" *ngIf=\"options.EnableCopyToClipboard\">\r\n <span class=\"input-group-text\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <div class=\"text-muted font-weight-500 word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n </div>\r\n <div class=\"text-danger Required-text\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n <div class=\"control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
202
+ styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
203
+ },] }
204
+ ];
205
+ TextboxComponent.ctorParameters = () => [
206
+ { type: ControlUtility },
207
+ { type: ControlContainer, decorators: [{ type: Optional }] },
208
+ { type: FormGroupDirective },
209
+ { type: UtilityService },
210
+ { type: ControlValidationService }
211
+ ];
212
+ TextboxComponent.propDecorators = {
213
+ group: [{ type: Input }],
214
+ options: [{ type: Input }],
215
+ OnChange: [{ type: Output }]
216
+ };
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvVGV4dEJveC9UZXh0Qm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBOEIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQWlDLE1BQU0sZ0JBQWdCLENBQUM7QUFHMUosT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUd0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFPcEYsTUFBTSxPQUFPLGdCQUFnQjtJQUczQiw0Q0FBNEM7SUFDNUMsWUFBcUIsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQVMsZUFBbUMsRUFBUyxjQUE2QixFQUFTLHdCQUFpRDtRQUFsTyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQVMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQU03TyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUl4QyxjQUFTLEdBQVcsQ0FBQyxDQUFDO1FBQ3RCLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBUzNCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztR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QUFDO29CQUMzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO29CQUM1RixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7aUJBQ2pDO3FCQUNJO29CQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztpQkFFdEM7YUFFRjtTQUNGO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYztRQUMxQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQTtJQUM5QixDQUFDOztBQTlOTSx1Q0FBc0IsR0FBRyxJQUFJLENBQUM7O1lBUHRDLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsY0FBYztnQkFDeEIsK3BKQUF1Qzs7YUFFeEM7OztZQVRRLGNBQWM7WUFKdUMsZ0JBQWdCLHVCQWtCdEIsUUFBUTtZQWxCZ0Isa0JBQWtCO1lBTy9ELGNBQWM7WUFBeEMsd0JBQXdCOzs7b0JBZTlCLEtBQUs7c0JBQ0wsS0FBSzt1QkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFRleHRCb3hPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0Qm94T3B0aW9ucyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRm9yY2VEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvRm9yY2VEaXJlY3Rpb24nO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1UZXh0Qm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vVGV4dEJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vVGV4dEJveC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0Ym94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IoIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBUZXh0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOkNvbnRyb2xWYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgVGV4dGJveENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG5cclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBUZXh0Qm94T3B0aW9ucztcclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIFRleHRCb3hGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIE1hc2tQYXR0ZXJuOiBzdHJpbmc7XHJcbiAgV29yZENvdW50OiBudW1iZXIgPSAwO1xyXG4gIFdvcmRDb3VudEFycmF5OiBudW1iZXIgPSAwO1xyXG4gIEVtYWlsVmFsaWRhdGlvbktleTogc3RyaW5nO1xyXG4gIFBhc3N3b3JkQ29tcGxleGl0eUhhc051bWJlcjogc3RyaW5nO1xyXG4gIEFyYWJpY0xldHRlck9ubHk6IHN0cmluZztcclxuICBFbmdsaXNoTGV0dGVyT25seTpzdHJpbmc7XHJcbiAgUGFzc3dvcmRDb21wbGV4aXR5SGFzQ2FwaXRhbExldHRlcjogc3RyaW5nO1xyXG4gIFBhc3N3b3JkQ29tcGxleGl0eUhhc1NtYWxsTGV0dGVyOiBzdHJpbmc7XHJcbiAgUGFzc3dvcmRDb21wbGV4aXR5SGFzU3BlY2lhbExldHRlcjogc3RyaW5nXHJcbiAgTWF4V29yZENvdW50VmFsaWRhdGlvbktleTogc3RyaW5nXHJcbiAgSXNTaG93V29yZENvdW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgY3VycmVudExhbmd1YWdlID0gXCJcIlxyXG4gIC8vIHN0YXRpYyBzaG93RXJyb3JPZklucHV0cyhlcnJvcnM6IGFueSkge1xyXG5cclxuICAvLyAgIGNvbnN0IGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBUZXh0Ym94Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWM7XHJcbiAgLy8gICBjb25zdCBmb3JtR3JvdXAgPSBjb250cm9sQ29udGFpbmVyc3RhdGljLmNvbnRyb2wgYXMgRm9ybUdyb3VwO1xyXG4gIC8vICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XHJcbiAgLy8gICAgIGlmIChlcnJvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gIC8vICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JzW2tleV0pIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sID0gZm9ybUdyb3VwLmdldChrZXkpIGFzIEZvcm1Db250cm9sO1xyXG4gIC8vICAgICAgICAgZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHsgXCJGbHVlbnRBcGlcIjogaXRlcmF0b3IgfSk7XHJcbiAgLy8gICAgICAgICBmb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcblxyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTWFza1BhdHRlcm4gIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTWFza1BhdHRlcm4gIT0gXCJcIikge1xyXG4gICAgICB0aGlzLk1hc2tQYXR0ZXJuID0gdGhpcy5vcHRpb25zLk1hc2tQYXR0ZXJuXHJcbiAgICAgIHRoaXMub3B0aW9ucy5QbGFjZWhvbGRlciA9IHRoaXMuTWFza1BhdHRlcm5cclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLlRleHRCb3hGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLlRleHRCb3hGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcbiAgICB0aGlzLmdldEN1c3RvbUVycm9yc01hc3NhZ2VzKClcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLlR5cGUpIHtcclxuICAgICAgY2FzZSBJbnB1dFR5cGUuRW1haWw6XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW2EtejAtOS5fJSstXStAW2EtejAtOS4tXStcXC5bYS16XXsyLDR9JC8sIHsgRW1haWxWYWxpZGF0aW9uS2V5OiB0aGlzLkVtYWlsVmFsaWRhdGlvbktleSB9KSxcclxuXHJcbiAgICAgICAgXSkpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIElucHV0VHlwZS5FSUQ6XHJcbiAgICAgICAgdGhpcy5NYXNrUGF0dGVybiA9ICcwMDAtMDAwMC0wMDAwMDAwLTAnO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucy5QbGFjZWhvbGRlciA9IHRoaXMuTWFza1BhdHRlcm5cclxuXHJcblxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnB1dFR5cGUuTnVtYmVyOlxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWzAtOV0rKFxcLj9bMC05XSspPyQnKSk7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5OdW1iZXJSYW5nZSAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLm9wdGlvbnMuTnVtYmVyUmFuZ2UuRnJvbSkpO1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLm1heCh0aGlzLm9wdGlvbnMuTnVtYmVyUmFuZ2UuVG8pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSW5wdXRUeXBlLlBhc3N3b3JkOlxyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLlJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24pIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9cXGQvLCB7IFBhc3N3b3JkQ29tcGxleGl0eUhhc051bWJlcjogdGhpcy5QYXNzd29yZENvbXBsZXhpdHlIYXNOdW1iZXIgfSksXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvW0EtWl0vLCB7IFBhc3N3b3JkQ29tcGxleGl0eUhhc0NhcGl0YWxMZXR0ZXI6IHRoaXMuUGFzc3dvcmRDb21wbGV4aXR5SGFzQ2FwaXRhbExldHRlciB9KSxcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9bYS16XS8sIHsgUGFzc3dvcmRDb21wbGV4aXR5SGFzU21hbGxMZXR0ZXI6IHRoaXMuUGFzc3dvcmRDb21wbGV4aXR5SGFzU21hbGxMZXR0ZXIgfSksXHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0dGVyblZhbGlkYXRvcigvWyFAIyQlXiYqKCksLj9cIjp7fXw8Pl0vLCB7IFBhc3N3b3JkQ29tcGxleGl0eUhhc1NwZWNpYWxMZXR0ZXI6IHRoaXMuUGFzc3dvcmRDb21wbGV4aXR5SGFzU3BlY2lhbExldHRlciB9KSxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXHJcbiAgICAgICAgICBdKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBpZiAodGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uPT1Gb3JjZURpcmVjdGlvbi5BcmFiaWMpIFxyXG4gICAgLy8ge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAvLyAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9bXFx1MDYyMS1cXHUwNjRBXSsvLCB7IEFyYWJpY0xldHRlck9ubHk6IHRoaXMuQXJhYmljTGV0dGVyT25seSB9KSxcclxuICAgICAgICAgXHJcbiAgICAvLyAgIF0pKTtcclxuICAgICBcclxuICAgIC8vIH1cclxuICAgIC8vICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuRm9yY2VEaXJlY3Rpb249PUZvcmNlRGlyZWN0aW9uLkVuZ2xpc2gpIFxyXG4gICAgLy8ge1xyXG4gICAgLy8gICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAvLyAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXR0ZXJuVmFsaWRhdG9yKC9eW1xceDAwLVxceDdGXSokLywgeyBFbmdsaXNoTGV0dGVyT25seTogdGhpcy5FbmdsaXNoTGV0dGVyT25seSB9KSxcclxuICAgICAgICAgXHJcbiAgICAvLyAgIF0pKTtcclxuICAgICAgXHJcbiAgICBcclxuICAgICAgXHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5NaW5MZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5vcHRpb25zLk1pbkxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5NYXhMZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5vcHRpb25zLk1heExlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLlRleHRCb3hGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuVGV4dEJveEZvcm1Db250cm9sLnNldEFzeW5jVmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlc2FzeW5jKTtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLlRleHRCb3hGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5UZXh0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcblxyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xVdGlsaXR5LmdldEVycm9yVmFsaWRhdGlvbk1hc3NhZ2UoRXJyb3JMaXN0LCB0aGlzLmdyb3VwLCB0aGlzLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKHR5cGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0SW5wdXRUeXBlKHR5cGUpXHJcbiAgfVxyXG5cclxuICB0cmltQ29udHJvbFZhbHVlKCkge1xyXG4gICAgbGV0IE9yaWduYWxWYWx1ZSA9IHRoaXMuY29udHJvbFV0aWxpdHkudHJpbUNvbnRyb2xWYWx1ZSh0aGlzLlRleHRCb3hGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICB0aGlzLlRleHRCb3hGb3JtQ29udHJvbC5wYXRjaFZhbHVlKE9yaWduYWxWYWx1ZSlcclxuXHJcbiAgfVxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudClcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbUVycm9yc01hc3NhZ2VzKCkge1xyXG4gICAgdGhpcy5FbWFpbFZhbGlkYXRpb25LZXkgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFZhbGlkYXRpb25LZXlcIik7XHJcbiAgICB0aGlzLlBhc3N3b3JkQ29tcGxleGl0eUhhc0NhcGl0YWxMZXR0ZXIgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZENvbXBsZXhpdHlIYXNDYXBpdGFsTGV0dGVyXCIpO1xyXG4gICAgdGhpcy5QYXNzd29yZENvbXBsZXhpdHlIYXNOdW1iZXIgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZENvbXBsZXhpdHlIYXNOdW1iZXJcIik7XHJcbiAgICB0aGlzLlBhc3N3b3JkQ29tcGxleGl0eUhhc1NtYWxsTGV0dGVyID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFzc3dvcmRDb21wbGV4aXR5SGFzU21hbGxMZXR0ZXJcIik7XHJcbiAgICB0aGlzLlBhc3N3b3JkQ29tcGxleGl0eUhhc1NwZWNpYWxMZXR0ZXIgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZENvbXBsZXhpdHlIYXNTcGVjaWFsTGV0dGVyXCIpO1xyXG4gICAgdGhpcy5NYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5ID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4V29yZENvdW50VmFsaWRhdGlvbktleVwiKTtcclxuICAgIHRoaXMuQXJhYmljTGV0dGVyT25seSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFyYWJpY0xldHRlck9ubHlcIik7XHJcbiAgICB0aGlzLkVuZ2xpc2hMZXR0ZXJPbmx5ID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW5nbGlzaExldHRlck9ubHlcIik7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuXHJcbiAgICBpZiAodGhpcy5UZXh0Qm94Rm9ybUNvbnRyb2wudmFsdWUgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLldvcmRDb3VudEFycmF5ID0gMDtcclxuICAgICAgdGhpcy5Xb3JkQ291bnQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLldvcmRDb3VudEFycmF5ID0gdGhpcy5UZXh0Qm94Rm9ybUNvbnRyb2wudmFsdWUuc3BsaXQoXCIgXCIpLmxlbmd0aDtcclxuICAgICAgaWYgKHRoaXMuV29yZENvdW50QXJyYXkgPiAwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuV29yZENvdW50QXJyYXkgPiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50KSB7XHJcbiAgICAgICAgICB0aGlzLldvcmRDb3VudCA9IHRoaXMub3B0aW9ucy5NYXhXb3JkQ291bnQ7XHJcbiAgICAgICAgICB0aGlzLlRleHRCb3hGb3JtQ29udHJvbC5zZXRFcnJvcnMoeyBNYXhXb3JkQ291bnRWYWxpZGF0aW9uS2V5OiB0aGlzLm9wdGlvbnMuTWF4V29yZENvdW50IH0pO1xyXG4gICAgICAgICAgdGhpcy5UZXh0Qm94Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgICAgdGhpcy5UZXh0Qm94Rm9ybUNvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLldvcmRDb3VudCA9IHRoaXMuV29yZENvdW50QXJyYXk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0aGlzLlRleHRCb3hGb3JtQ29udHJvbC52YWx1ZSlcclxuICB9XHJcblxyXG4gIHNob3dXb3JkQ291bnQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuSXNTaG93V29yZENvdW50ID0gdmFsdWVcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLlRleHRCb3hGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLlRleHRCb3hGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5UZXh0Qm94Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuVGV4dEJveEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuVGV4dEJveEZvcm1Db250cm9sKVxyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { Component, Input, Optional } from '@angular/core';
2
+ import { ControlContainer, FormGroupDirective, FormControl } from '@angular/forms';
3
+ import { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';
4
+ import { ControlUtility } from '../../Shared/services/ControlUtility';
5
+ import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
6
+ export class ToggleslideComponent {
7
+ // tslint:disable-next-line: max-line-length
8
+ constructor(ErrorHandler, controlUtility, controlContainer, ToggleslideControlHost, TextControlHost, UtilityService, controlValidationService) {
9
+ this.ErrorHandler = ErrorHandler;
10
+ this.controlUtility = controlUtility;
11
+ this.controlContainer = controlContainer;
12
+ this.ToggleslideControlHost = ToggleslideControlHost;
13
+ this.TextControlHost = TextControlHost;
14
+ this.UtilityService = UtilityService;
15
+ this.controlValidationService = controlValidationService;
16
+ this.SlideValue = false;
17
+ ToggleslideComponent.controlContainerstatic = this.controlContainer;
18
+ }
19
+ ngOnInit() {
20
+ ;
21
+ this.group.addControl(this.options.Name, new FormControl(''));
22
+ this.ToggleslideFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
23
+ let validationRules = [];
24
+ let validationRulesasync = [];
25
+ this.SlideValue = this.options.Value == undefined ? false : this.options.Value;
26
+ if (this.options.IsDisabled) {
27
+ this.ToggleslideFormControl.disable();
28
+ }
29
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
30
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
31
+ }
32
+ ngAfterViewInit() {
33
+ if (this.options.AttributeList != null) {
34
+ var element = document.getElementById(this.options.Name);
35
+ for (let index = 0; index < this.options.AttributeList.length; index++) {
36
+ element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
37
+ }
38
+ }
39
+ }
40
+ resetError() {
41
+ this.controlValidationService.RemoveGlobalError();
42
+ }
43
+ getErrorValidation(Errorsitem) {
44
+ return this.controlUtility.getErrorValidation(Errorsitem, this.options.CustomValidation);
45
+ }
46
+ changeValueToggle() {
47
+ this.ToggleslideFormControl.setValue(this.SlideValue);
48
+ }
49
+ }
50
+ ToggleslideComponent.controlContainerstatic = null;
51
+ ToggleslideComponent.decorators = [
52
+ { type: Component, args: [{
53
+ selector: 'BBSF-Toggleslide',
54
+ template: "<div class=\"b-control b-toggle-slide\">\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\n [hidden]=\"options.HideLabel\">\n {{options.LabelValue}}\n </label>\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\n formControlName=\"{{options.Name}}\" disableRipple=\"true\"\n (change)=\"changeValueToggle()\">\n </mat-slide-toggle>\n \n </div>\n</div>\n",
55
+ styles: [".mat-slide-toggle{padding-left:10px}.mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#e3f4fe}.mat-slide-toggle-thumb-container{width:25px;height:25px;top:1px;left:-2px}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.mat-slide-toggle-thumb{height:25px;width:25px;border-radius:50%}.mat-slide-toggle.mat-checked .mat-ripple-element{background-color:#009ef7}.mat-slide-toggle-bar{width:55px;height:30px;border-radius:3.25rem}\n"]
56
+ },] }
57
+ ];
58
+ ToggleslideComponent.ctorParameters = () => [
59
+ { type: ErrorMassageValidation },
60
+ { type: ControlUtility },
61
+ { type: ControlContainer, decorators: [{ type: Optional }] },
62
+ { type: FormGroupDirective },
63
+ { type: FormGroupDirective },
64
+ { type: UtilityService },
65
+ { type: ControlValidationService }
66
+ ];
67
+ ToggleslideComponent.propDecorators = {
68
+ group: [{ type: Input }],
69
+ options: [{ type: Input }]
70
+ };
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlc2xpZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1RvZ2dsZXNsaWRlL3RvZ2dsZXNsaWRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFhLGdCQUFnQixFQUFFLGtCQUFrQixFQUFtQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHdEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxNQUFPLDBCQUEwQixDQUFDO0FBT3JGLE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsNENBQTRDO0lBQzVDLFlBQW9CLFlBQW9DLEVBQVUsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQVMsc0JBQTBDLEVBQVMsZUFBbUMsRUFBUyxjQUE2QixFQUFTLHdCQUFpRDtRQUFuVSxpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBb0I7UUFBUyxvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFTLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFNdlYsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUwxQixvQkFBb0IsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDdEUsQ0FBQztJQVFELFFBQVE7UUFDVCxDQUFDO1FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdDQUF3QztRQUM5RyxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBRSxTQUFTLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQSxDQUFDLENBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDekUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdkM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBR0QsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3RDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUN0RSxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0RztTQUVGO0lBRUgsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBaUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDMUYsQ0FBQztJQUdELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7O0FBakRNLDJDQUFzQixHQUFHLElBQUksQ0FBQzs7WUFSdEMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLGdxQkFBMkM7O2FBRTVDOzs7WUFWUSxzQkFBc0I7WUFDdEIsY0FBYztZQUZILGdCQUFnQix1QkFpQmlFLFFBQVE7WUFqQnZFLGtCQUFrQjtZQUFsQixrQkFBa0I7WUFLckIsY0FBYztZQUF4Qyx3QkFBd0I7OztvQkFlOUIsS0FBSztzQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSwgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvQ2hlY2tCb3hPcHRpb25zJztcclxuaW1wb3J0IHsgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ub2dnbGVzbGlkZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAgJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ0JCU0YtVG9nZ2xlc2xpZGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9Ub2dnbGVzbGlkZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vVG9nZ2xlc2xpZGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9nZ2xlc2xpZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBFcnJvckhhbmRsZXI6IEVycm9yTWFzc2FnZVZhbGlkYXRpb24sIHByaXZhdGUgY29udHJvbFV0aWxpdHk6IENvbnRyb2xVdGlsaXR5LCBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xDb250YWluZXI6IENvbnRyb2xDb250YWluZXIsIHB1YmxpYyBUb2dnbGVzbGlkZUNvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsIHB1YmxpYyBUZXh0Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOkNvbnRyb2xWYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgVG9nZ2xlc2xpZGVDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBUb2dnbGVTbGlkZU9wdGlvbnM7XHJcbiAgVG9nZ2xlc2xpZGVGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIFNsaWRlVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuIDtcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLlRvZ2dsZXNsaWRlRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgbGV0IHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gICAgbGV0IHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgICB0aGlzLlNsaWRlVmFsdWUgPSB0aGlzLm9wdGlvbnMuVmFsdWU9PXVuZGVmaW5lZD9mYWxzZTp0aGlzLm9wdGlvbnMuVmFsdWU7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5Ub2dnbGVzbGlkZUZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkF0dHJpYnV0ZUxpc3QgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMub3B0aW9ucy5OYW1lKTtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0W2luZGV4XS5LZXksIHRoaXMub3B0aW9ucy5BdHRyaWJ1dGVMaXN0W2luZGV4XS52YWx1ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvcigpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JzaXRlbTogYW55W10pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yc2l0ZW0sIHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcblxyXG4gIGNoYW5nZVZhbHVlVG9nZ2xlKCkge1xyXG4gICAgdGhpcy5Ub2dnbGVzbGlkZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuU2xpZGVWYWx1ZSlcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,208 @@
1
+ import { FullCalendarModule } from '@fullcalendar/angular';
2
+ import dayGridPlugin from '@fullcalendar/daygrid';
3
+ import timeGridPlugin from '@fullcalendar/timegrid';
4
+ import listPlugin from '@fullcalendar/list';
5
+ import interactionPlugin from '@fullcalendar/interaction';
6
+ import { NgModule, Injector, NO_ERRORS_SCHEMA } from '@angular/core';
7
+ import { BlockUIModule } from 'ng-block-ui';
8
+ import { FormGroupDirective, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
+ import { HttpModule } from '@angular/http';
10
+ import { RouterModule } from '@angular/router';
11
+ import { ToastrModule } from 'ngx-toastr';
12
+ import { NgxPermissionsModule } from 'ngx-permissions';
13
+ import { OverlayModule } from '@angular/cdk/overlay';
14
+ import { StoreDevtoolsModule } from '@ngrx/store-devtools';
15
+ import { CommonModule } from '@angular/common';
16
+ import { NgxIntlTelInputModule } from 'ngx-intl-tel-input';
17
+ import { ErrorMassageValidation } from '../Shared/services/validationErrorMassage.service';
18
+ import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
19
+ import { DateInputComponent } from './DateTimePicker/DateTimePicker.component';
20
+ import { FileUploadComponent } from './FileUplaod/FileUplaod.component';
21
+ import { MultiLingualTextBoxComponent } from './MultiLingualTextBox/MultiLingualTextBox.component';
22
+ import { ControlUtility } from '../Shared/services/ControlUtility';
23
+ import { TextAreaComponent } from './TextArea/TextArea.component';
24
+ import { MultiLingualTextAreaComponent } from './MultiLingualTextArea/MultiLingualTextArea.component';
25
+ import { CheckBoxComponent } from './CheckBox/CheckBox.component';
26
+ import { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';
27
+ import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
28
+ import { DropdownListComponent } from './DropdownList/DropdownList.component';
29
+ import { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';
30
+ import { PhoneComponent } from './Phone/Phone.component';
31
+ import { ToggleslideComponent } from './Toggleslide/toggleslide.component';
32
+ import { HtmlEditorComponent } from './HtmlEditor/HtmlEditor.component';
33
+ import { NgxSummernoteModule } from 'ngx-summernote';
34
+ import { MultiLingualHtmlEditorComponent } from './MultiLingualHtmlEditor/MultiLingualHtmlEditor.component';
35
+ import { NgxMaskModule } from 'ngx-mask';
36
+ import { TooltipModule } from '@syncfusion/ej2-angular-popups';
37
+ import { FileUploadModule } from 'ng2-file-upload';
38
+ import { ImageUploaderComponent } from './ImageUpload/ImageUpload.component';
39
+ import { NgxDropzoneModule } from 'ngx-dropzone';
40
+ import { AngularCropperjsModule } from 'angular-cropperjs';
41
+ import { ImageCropperModule } from 'ngx-image-cropper';
42
+ import { NgbActiveModal, NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';
43
+ import { ProfileImageUploaderComponent } from './ProfileImageUploader/ProfileImageUploader.component';
44
+ import { TranslateService } from '@ngx-translate/core';
45
+ import { HttpClientModule } from '@angular/common/http';
46
+ import { NgxTypeaheadModule } from 'ngx-typeahead';
47
+ import { AutocompleteTextBoxComponent } from './AutocompleteTextBox/AutocompleteTextBox.component';
48
+ import { NgxTagsInputModule } from 'ngx-tags-input';
49
+ import { TagsInputComponent } from './TagsInput/TagsInput.component';
50
+ import { PagingComponent } from './Paging/Paging.component';
51
+ import { JwPaginationComponent } from './Paging/JwPagination.component';
52
+ import { NgSelectModule } from '@ng-select/ng-select';
53
+ import { OnPagingFiltersChangeService } from '../Shared/services/OnPagingFiltersChange.service';
54
+ import { InfiniteScrollModule } from 'ngx-infinite-scroll';
55
+ import { RadioButtonComponent } from './RadioButton/RadioButton.component';
56
+ import { TextboxComponent } from './TextBox/TextBox.component';
57
+ import { MapAutoCompleteComponent } from './MapAutoComplete/MapAutoComplete.component';
58
+ import { AgmCoreModule } from '@agm/core';
59
+ import { MatGoogleMapsAutocompleteModule } from '@angular-material-extensions/google-maps-autocomplete';
60
+ import { CalendarComponent } from './Calendar/Calendar.component';
61
+ import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
62
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
63
+ import { AngularEditorModule } from '@kolkov/angular-editor';
64
+ import { AutocompleteLibModule } from 'angular-ng-autocomplete';
65
+ import { InlineSVGModule } from 'ng-inline-svg';
66
+ import { AuthService, BBSFUtilitiesModule, EnvironmentService, RequestHandlerService, UtilityService, BBSFTranslateService, ControlValidationService } from '@bnsights/bbsf-utilities';
67
+ import { FormComponent } from './Form/Form.component';
68
+ export let options;
69
+ export let AppInjector;
70
+ FullCalendarModule.registerPlugins([
71
+ dayGridPlugin,
72
+ timeGridPlugin,
73
+ listPlugin,
74
+ interactionPlugin
75
+ ]);
76
+ export class BBSFControlsModule {
77
+ constructor(injector, translate) {
78
+ this.injector = injector;
79
+ this.translate = translate;
80
+ AppInjector = this.injector;
81
+ }
82
+ }
83
+ BBSFControlsModule.decorators = [
84
+ { type: NgModule, args: [{
85
+ declarations: [
86
+ DateInputComponent,
87
+ FileUploadComponent,
88
+ MultiLingualTextBoxComponent,
89
+ TextboxComponent,
90
+ TextAreaComponent,
91
+ MultiLingualTextAreaComponent,
92
+ CheckBoxComponent,
93
+ DropdownListComponent,
94
+ PhoneComponent,
95
+ ToggleslideComponent,
96
+ HtmlEditorComponent,
97
+ MultiLingualHtmlEditorComponent,
98
+ // MultiLingualHtmlEditorComponent,
99
+ ImageUploaderComponent,
100
+ ProfileImageUploaderComponent,
101
+ CalendarComponent,
102
+ MapAutoCompleteComponent,
103
+ AutocompleteTextBoxComponent,
104
+ TagsInputComponent,
105
+ PagingComponent,
106
+ JwPaginationComponent,
107
+ RadioButtonComponent,
108
+ FormComponent
109
+ ],
110
+ imports: [
111
+ CommonModule,
112
+ InfiniteScrollModule,
113
+ NgSelectModule,
114
+ NgxTagsInputModule,
115
+ NgxTypeaheadModule,
116
+ AgmCoreModule.forRoot({
117
+ // &language=${UtilityService.CurrentLanguage}
118
+ apiKey: `AIzaSyA75ojhZhEhDaO3vfn3mxTY32sq5flAwlY`,
119
+ libraries: ['places'],
120
+ }),
121
+ MatGoogleMapsAutocompleteModule,
122
+ FullCalendarModule,
123
+ AngularCropperjsModule,
124
+ ImageCropperModule,
125
+ NgbModule,
126
+ NgxDropzoneModule,
127
+ FileUploadModule,
128
+ TooltipModule,
129
+ NgxMaskModule.forRoot(),
130
+ NgxSummernoteModule,
131
+ MatSlideToggleModule,
132
+ NgxIntlTelInputModule,
133
+ AngularMultiSelectModule,
134
+ NgMultiSelectDropDownModule.forRoot(),
135
+ OwlDateTimeModule,
136
+ OwlNativeDateTimeModule,
137
+ CommonModule,
138
+ BlockUIModule.forRoot(),
139
+ ReactiveFormsModule,
140
+ HttpModule,
141
+ RouterModule,
142
+ ToastrModule.forRoot(),
143
+ HttpClientModule,
144
+ NgxPermissionsModule.forRoot(),
145
+ OverlayModule,
146
+ StoreDevtoolsModule.instrument(),
147
+ FormsModule,
148
+ NgxIntlTelInputModule,
149
+ NgxIntlTelInputModule,
150
+ BsDatepickerModule.forRoot(),
151
+ FullCalendarModule,
152
+ TypeaheadModule.forRoot(),
153
+ AngularEditorModule,
154
+ AutocompleteLibModule,
155
+ BBSFUtilitiesModule,
156
+ InlineSVGModule.forRoot(),
157
+ ],
158
+ providers: [
159
+ ErrorMassageValidation,
160
+ ControlUtility,
161
+ OnPagingFiltersChangeService,
162
+ EnvironmentService,
163
+ AuthService,
164
+ RequestHandlerService,
165
+ UtilityService,
166
+ TranslateService,
167
+ BBSFTranslateService,
168
+ ControlValidationService,
169
+ FormGroupDirective,
170
+ NgbModal,
171
+ NgbActiveModal
172
+ ],
173
+ schemas: [
174
+ NO_ERRORS_SCHEMA
175
+ ],
176
+ exports: [
177
+ DateInputComponent,
178
+ FileUploadComponent,
179
+ MultiLingualTextBoxComponent,
180
+ TextboxComponent,
181
+ TextAreaComponent,
182
+ MultiLingualTextAreaComponent,
183
+ CheckBoxComponent,
184
+ DropdownListComponent,
185
+ PhoneComponent,
186
+ ToggleslideComponent,
187
+ HtmlEditorComponent,
188
+ MultiLingualHtmlEditorComponent,
189
+ FileUploadComponent,
190
+ ImageUploaderComponent,
191
+ ProfileImageUploaderComponent,
192
+ CalendarComponent,
193
+ MapAutoCompleteComponent,
194
+ AutocompleteTextBoxComponent,
195
+ TagsInputComponent,
196
+ PagingComponent,
197
+ JwPaginationComponent,
198
+ RadioButtonComponent,
199
+ FormComponent,
200
+ PagingComponent
201
+ ]
202
+ },] }
203
+ ];
204
+ BBSFControlsModule.ctorParameters = () => [
205
+ { type: Injector },
206
+ { type: TranslateService }
207
+ ];
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmJzZi1jb250cm9scy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvYmJzZi1jb250cm9scy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxhQUFhLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxjQUFjLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxVQUFVLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxpQkFBaUIsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBMEIsZ0JBQWdCLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVB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QUMsVUFBVSxFQUFFO29CQUNoQyxXQUFXO29CQUNYLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7b0JBQzVCLGtCQUFrQjtvQkFDbEIsZUFBZSxDQUFDLE9BQU8sRUFBRTtvQkFDekIsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLG1CQUFtQjtvQkFDbkIsZUFBZSxDQUFDLE9BQU8sRUFBRTtpQkFFMUI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULHNCQUFzQjtvQkFDdEIsY0FBYztvQkFDZCw0QkFBNEI7b0JBQzVCLGtCQUFrQjtvQkFDbEIsV0FBVztvQkFDWCxxQkFBcUI7b0JBQ3JCLGNBQWM7b0JBQ2QsZ0JBQWdCO29CQUNoQixvQkFBb0I7b0JBQ3BCLHdCQUF3QjtvQkFDeEIsa0JBQWtCO29CQUNsQixRQUFRO29CQUNSLGNBQWM7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLGdCQUFnQjtpQkFDakI7Z0JBRUQsT0FBTyxFQUFFO29CQUVQLGtCQUFrQjtvQkFDbEIsbUJBQW1CO29CQUNuQiw0QkFBNEI7b0JBQzVCLGdCQUFnQjtvQkFDaEIsaUJBQWlCO29CQUNqQiw2QkFBNkI7b0JBQzdCLGlCQUFpQjtvQkFDakIscUJBQXFCO29CQUNyQixjQUFjO29CQUNkLG9CQUFvQjtvQkFDcEIsbUJBQW1CO29CQUNuQiwrQkFBK0I7b0JBQy9CLG1CQUFtQjtvQkFDbkIsc0JBQXNCO29CQUN0Qiw2QkFBNkI7b0JBQzdCLGlCQUFpQjtvQkFDakIsd0JBQXdCO29CQUN4Qiw0QkFBNEI7b0JBQzVCLGtCQUFrQjtvQkFDbEIsZUFBZTtvQkFDZixxQkFBcUI7b0JBQ3JCLG9CQUFvQjtvQkFDcEIsYUFBYTtvQkFDYixlQUFlO2lCQUNoQjthQUNGOzs7WUF6TWtCLFFBQVE7WUF3Q2dCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZ1bGxDYWxlbmRhck1vZHVsZSB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvYW5ndWxhcic7XHJcbmltcG9ydCBkYXlHcmlkUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvZGF5Z3JpZCc7XHJcbmltcG9ydCB0aW1lR3JpZFBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL3RpbWVncmlkJztcclxuaW1wb3J0IGxpc3RQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci9saXN0JztcclxuaW1wb3J0IGludGVyYWN0aW9uUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvaW50ZXJhY3Rpb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSwgSW5qZWN0b3IsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5PX0VSUk9SU19TQ0hFTUEsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmxvY2tVSU1vZHVsZSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwRGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSHR0cE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2h0dHAnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUb2FzdHJNb2R1bGUgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgTmd4UGVybWlzc2lvbnNNb2R1bGUgfSBmcm9tICduZ3gtcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBTdG9yZURldnRvb2xzTW9kdWxlIH0gZnJvbSAnQG5ncngvc3RvcmUtZGV2dG9vbHMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ3hJbnRsVGVsSW5wdXRNb2R1bGUgfSBmcm9tICduZ3gtaW50bC10ZWwtaW5wdXQnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vRGF0ZVRpbWVQaWNrZXIvRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vRmlsZVVwbGFvZC9GaWxlVXBsYW9kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE11bHRpTGluZ3VhbFRleHRCb3hDb21wb25lbnQgfSBmcm9tICcuL011bHRpTGluZ3VhbFRleHRCb3gvTXVsdGlMaW5ndWFsVGV4dEJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi9UZXh0QXJlYS9UZXh0QXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNdWx0aUxpbmd1YWxUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vTXVsdGlMaW5ndWFsVGV4dEFyZWEvTXVsdGlMaW5ndWFsVGV4dEFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hlY2tCb3hDb21wb25lbnQgfSBmcm9tICcuL0NoZWNrQm94L0NoZWNrQm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLCBOb29wQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IE93bERhdGVUaW1lTW9kdWxlLCBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSB9IGZyb20gJ25nLXBpY2stZGF0ZXRpbWUnO1xyXG5pbXBvcnQgeyBOZ011bHRpU2VsZWN0RHJvcERvd25Nb2R1bGUgfSBmcm9tICduZy1tdWx0aXNlbGVjdC1kcm9wZG93bic7XHJcbmltcG9ydCB7IERyb3Bkb3duTGlzdENvbXBvbmVudCB9IGZyb20gJy4vRHJvcGRvd25MaXN0L0Ryb3Bkb3duTGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBbmd1bGFyTXVsdGlTZWxlY3RNb2R1bGUgfSBmcm9tICdhbmd1bGFyMi1tdWx0aXNlbGVjdC1kcm9wZG93bic7XHJcbmltcG9ydCB7IFBob25lQ29tcG9uZW50IH0gZnJvbSAnLi9QaG9uZS9QaG9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVzbGlkZUNvbXBvbmVudCB9IGZyb20gJy4vVG9nZ2xlc2xpZGUvdG9nZ2xlc2xpZGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vSHRtbEVkaXRvci9IdG1sRWRpdG9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neFN1bW1lcm5vdGVNb2R1bGUgfSBmcm9tICduZ3gtc3VtbWVybm90ZSc7XHJcbmltcG9ydCB7IE11bHRpTGluZ3VhbEh0bWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL011bHRpTGluZ3VhbEh0bWxFZGl0b3IvTXVsdGlMaW5ndWFsSHRtbEVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBOZ3hNYXNrTW9kdWxlLCBJQ29uZmlnIH0gZnJvbSAnbmd4LW1hc2snXHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAc3luY2Z1c2lvbi9lajItYW5ndWxhci1wb3B1cHMnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kdWxlIH0gZnJvbSAnbmcyLWZpbGUtdXBsb2FkJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vSW1hZ2VVcGxvYWQvSW1hZ2VVcGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmd4RHJvcHpvbmVNb2R1bGUgfSBmcm9tICduZ3gtZHJvcHpvbmUnO1xyXG5pbXBvcnQgeyBBbmd1bGFyQ3JvcHBlcmpzTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1jcm9wcGVyanMnO1xyXG5pbXBvcnQgeyBJbWFnZUNyb3BwZXJNb2R1bGUgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XHJcblxyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWwsIE5nYk1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgUHJvZmlsZUltYWdlVXBsb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL1Byb2ZpbGVJbWFnZVVwbG9hZGVyL1Byb2ZpbGVJbWFnZVVwbG9hZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUh0dHBMb2FkZXIgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9odHRwLWxvYWRlcic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUsIEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBOZ3hUeXBlYWhlYWRNb2R1bGUgfSBmcm9tICduZ3gtdHlwZWFoZWFkJztcclxuaW1wb3J0IHsgQXV0b2NvbXBsZXRlVGV4dEJveENvbXBvbmVudCB9IGZyb20gJy4vQXV0b2NvbXBsZXRlVGV4dEJveC9BdXRvY29tcGxldGVUZXh0Qm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5neFRhZ3NJbnB1dE1vZHVsZSB9IGZyb20gJ25neC10YWdzLWlucHV0JztcclxuaW1wb3J0IHsgVGFnc0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9UYWdzSW5wdXQvVGFnc0lucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2luZ0NvbXBvbmVudCB9IGZyb20gJy4vUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBKd1BhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL1BhZ2luZy9Kd1BhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IE9uUGFnaW5nRmlsdGVyc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi9TaGFyZWQvc2VydmljZXMvT25QYWdpbmdGaWx0ZXJzQ2hhbmdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbE1vZHVsZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vUmFkaW9CdXR0b24vUmFkaW9CdXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBUZXh0Ym94Q29tcG9uZW50IH0gZnJvbSAnLi9UZXh0Qm94L1RleHRCb3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9NYXBBdXRvQ29tcGxldGUvTWFwQXV0b0NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFnbUNvcmVNb2R1bGUgfSBmcm9tICdAYWdtL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRHb29nbGVNYXBzQXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXItbWF0ZXJpYWwtZXh0ZW5zaW9ucy9nb29nbGUtbWFwcy1hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vQ2FsZW5kYXIvQ2FsZW5kYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHlwZWFoZWFkTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90eXBlYWhlYWQnO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XHJcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3JNb2R1bGUgfSBmcm9tICdAa29sa292L2FuZ3VsYXItZWRpdG9yJztcclxuaW1wb3J0IHtBdXRvY29tcGxldGVMaWJNb2R1bGV9IGZyb20gJ2FuZ3VsYXItbmctYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgSW5saW5lU1ZHTW9kdWxlIH0gZnJvbSAnbmctaW5saW5lLXN2Zyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBCQlNGVXRpbGl0aWVzTW9kdWxlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFN0eWxlc0J1bmRsZVNlcnZpY2UgLFJlcXVlc3RIYW5kbGVyU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLENvbnRyb2xWYWxpZGF0aW9uU2VydmljZX0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vRm9ybS9Gb3JtLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgbGV0IG9wdGlvbnM6IFBhcnRpYWw8SUNvbmZpZz4gfCAoKCkgPT4gUGFydGlhbDxJQ29uZmlnPik7XHJcblxyXG5leHBvcnQgbGV0IEFwcEluamVjdG9yOiBJbmplY3RvcjtcclxuXHJcblxyXG5cclxuRnVsbENhbGVuZGFyTW9kdWxlLnJlZ2lzdGVyUGx1Z2lucyhbXHJcbiAgZGF5R3JpZFBsdWdpbixcclxuICB0aW1lR3JpZFBsdWdpbixcclxuICBsaXN0UGx1Z2luLFxyXG4gIGludGVyYWN0aW9uUGx1Z2luXHJcbl0pXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcblxyXG4gICAgRGF0ZUlucHV0Q29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIE11bHRpTGluZ3VhbFRleHRCb3hDb21wb25lbnQsXHJcbiAgICBUZXh0Ym94Q29tcG9uZW50LFxyXG4gICAgVGV4dEFyZWFDb21wb25lbnQsXHJcbiAgICBNdWx0aUxpbmd1YWxUZXh0QXJlYUNvbXBvbmVudCxcclxuICAgIENoZWNrQm94Q29tcG9uZW50LFxyXG4gICAgRHJvcGRvd25MaXN0Q29tcG9uZW50LFxyXG4gICAgUGhvbmVDb21wb25lbnQsXHJcbiAgICBUb2dnbGVzbGlkZUNvbXBvbmVudCxcclxuICAgIEh0bWxFZGl0b3JDb21wb25lbnQsXHJcbiAgICBNdWx0aUxpbmd1YWxIdG1sRWRpdG9yQ29tcG9uZW50LFxyXG4gICAgLy8gTXVsdGlMaW5ndWFsSHRtbEVkaXRvckNvbXBvbmVudCxcclxuICAgIEltYWdlVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBQcm9maWxlSW1hZ2VVcGxvYWRlckNvbXBvbmVudCxcclxuICAgICBDYWxlbmRhckNvbXBvbmVudCxcclxuICAgIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICAgIEF1dG9jb21wbGV0ZVRleHRCb3hDb21wb25lbnQsXHJcbiAgICBUYWdzSW5wdXRDb21wb25lbnQsXHJcbiAgICBQYWdpbmdDb21wb25lbnQsXHJcbiAgICBKd1BhZ2luYXRpb25Db21wb25lbnQsXHJcbiAgICBSYWRpb0J1dHRvbkNvbXBvbmVudCxcclxuICAgIEZvcm1Db21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXHJcbiAgICBOZ1NlbGVjdE1vZHVsZSxcclxuICAgIE5neFRhZ3NJbnB1dE1vZHVsZSxcclxuICAgIE5neFR5cGVhaGVhZE1vZHVsZSxcclxuICAgIEFnbUNvcmVNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgIC8vICZsYW5ndWFnZT0ke1V0aWxpdHlTZXJ2aWNlLkN1cnJlbnRMYW5ndWFnZX1cclxuICAgICAgYXBpS2V5OiBgQUl6YVN5QTc1b2poWmhFaERhTzN2Zm4zbXhUWTMyc3E1ZmxBd2xZYCxcclxuICAgICAgIGxpYnJhcmllczogWydwbGFjZXMnXSxcclxuICAgIH0pLFxyXG4gICAgTWF0R29vZ2xlTWFwc0F1dG9jb21wbGV0ZU1vZHVsZSxcclxuICAgIEZ1bGxDYWxlbmRhck1vZHVsZSxcclxuICAgIEFuZ3VsYXJDcm9wcGVyanNNb2R1bGUsXHJcbiAgICBJbWFnZUNyb3BwZXJNb2R1bGUsXHJcbiAgICBOZ2JNb2R1bGUsXHJcbiAgICBOZ3hEcm9wem9uZU1vZHVsZSxcclxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgTmd4TWFza01vZHVsZS5mb3JSb290KCksXHJcbiAgICBOZ3hTdW1tZXJub3RlTW9kdWxlLFxyXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXHJcbiAgICBOZ3hJbnRsVGVsSW5wdXRNb2R1bGUsXHJcbiAgICBBbmd1bGFyTXVsdGlTZWxlY3RNb2R1bGUsXHJcbiAgICBOZ011bHRpU2VsZWN0RHJvcERvd25Nb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgT3dsRGF0ZVRpbWVNb2R1bGUsXHJcbiAgICBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJsb2NrVUlNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEh0dHBNb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBUb2FzdHJNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIE5neFBlcm1pc3Npb25zTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIE92ZXJsYXlNb2R1bGUsXHJcbiAgICBTdG9yZURldnRvb2xzTW9kdWxlLmluc3RydW1lbnQoKSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTmd4SW50bFRlbElucHV0TW9kdWxlLFxyXG4gICAgTmd4SW50bFRlbElucHV0TW9kdWxlLFxyXG4gICAgQnNEYXRlcGlja2VyTW9kdWxlLmZvclJvb3QoKSxcclxuICAgIEZ1bGxDYWxlbmRhck1vZHVsZSxcclxuICAgIFR5cGVhaGVhZE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBBbmd1bGFyRWRpdG9yTW9kdWxlLFxyXG4gICAgQXV0b2NvbXBsZXRlTGliTW9kdWxlLFxyXG4gICAgQkJTRlV0aWxpdGllc01vZHVsZSxcclxuICAgIElubGluZVNWR01vZHVsZS5mb3JSb290KCksXHJcblxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLFxyXG4gICAgQ29udHJvbFV0aWxpdHksXHJcbiAgICBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgRW52aXJvbm1lbnRTZXJ2aWNlLFxyXG4gICAgQXV0aFNlcnZpY2UsXHJcbiAgICBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBVdGlsaXR5U2VydmljZSxcclxuICAgIFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBCQlNGVHJhbnNsYXRlU2VydmljZSxcclxuICAgIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSxcclxuICAgIEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICAgIE5nYk1vZGFsLFxyXG4gICAgTmdiQWN0aXZlTW9kYWxcclxuICBdLFxyXG4gIHNjaGVtYXM6IFtcclxuICAgIE5PX0VSUk9SU19TQ0hFTUFcclxuICBdLFxyXG5cclxuICBleHBvcnRzOiBbXHJcblxyXG4gICAgRGF0ZUlucHV0Q29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIE11bHRpTGluZ3VhbFRleHRCb3hDb21wb25lbnQsXHJcbiAgICBUZXh0Ym94Q29tcG9uZW50LFxyXG4gICAgVGV4dEFyZWFDb21wb25lbnQsXHJcbiAgICBNdWx0aUxpbmd1YWxUZXh0QXJlYUNvbXBvbmVudCxcclxuICAgIENoZWNrQm94Q29tcG9uZW50LFxyXG4gICAgRHJvcGRvd25MaXN0Q29tcG9uZW50LFxyXG4gICAgUGhvbmVDb21wb25lbnQsXHJcbiAgICBUb2dnbGVzbGlkZUNvbXBvbmVudCxcclxuICAgIEh0bWxFZGl0b3JDb21wb25lbnQsXHJcbiAgICBNdWx0aUxpbmd1YWxIdG1sRWRpdG9yQ29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIEltYWdlVXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBQcm9maWxlSW1hZ2VVcGxvYWRlckNvbXBvbmVudCxcclxuICAgIENhbGVuZGFyQ29tcG9uZW50LFxyXG4gICAgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgQXV0b2NvbXBsZXRlVGV4dEJveENvbXBvbmVudCxcclxuICAgIFRhZ3NJbnB1dENvbXBvbmVudCxcclxuICAgIFBhZ2luZ0NvbXBvbmVudCxcclxuICAgIEp3UGFnaW5hdGlvbkNvbXBvbmVudCxcclxuICAgIFJhZGlvQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRm9ybUNvbXBvbmVudCxcclxuICAgIFBhZ2luZ0NvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJCU0ZDb250cm9sc01vZHVsZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgQXBwSW5qZWN0b3IgPSB0aGlzLmluamVjdG9yO1xyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==