@bnsights/bbsf-controls 1.0.109 → 1.0.110

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 (274) hide show
  1. package/README.md +4 -0
  2. package/{esm2020 → esm2022}/bnsights-bbsf-controls.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/Shared/Components/app-base-component.mjs +226 -226
  4. package/{esm2020 → esm2022}/lib/Shared/Components/ng-tag-input.mjs +176 -176
  5. package/{esm2020 → esm2022}/lib/Shared/Directives/template-name.directive.mjs +18 -18
  6. package/{esm2020 → esm2022}/lib/Shared/Enums/CalendarView.mjs +7 -7
  7. package/{esm2020 → esm2022}/lib/Shared/Enums/ControlLayout.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/Shared/Enums/Countries.mjs +246 -246
  9. package/{esm2020 → esm2022}/lib/Shared/Enums/Enums.mjs +32 -32
  10. package/{esm2020 → esm2022}/lib/Shared/Enums/FileType.mjs +21 -21
  11. package/{esm2020 → esm2022}/lib/Shared/Enums/FilterType.mjs +10 -10
  12. package/{esm2020 → esm2022}/lib/Shared/Enums/FontSize.mjs +6 -6
  13. package/{esm2020 → esm2022}/lib/Shared/Enums/ForceDirection.mjs +5 -5
  14. package/{esm2020 → esm2022}/lib/Shared/Enums/IconPosition.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/Shared/Enums/ImageType.mjs +9 -9
  16. package/{esm2020 → esm2022}/lib/Shared/Enums/InputType.mjs +9 -9
  17. package/{esm2020 → esm2022}/lib/Shared/Enums/Insert.mjs +8 -8
  18. package/{esm2020 → esm2022}/lib/Shared/Enums/LanguageMode.mjs +10 -10
  19. package/{esm2020 → esm2022}/lib/Shared/Enums/LanguageValidation.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/Shared/Enums/Misc.mjs +6 -6
  21. package/{esm2020 → esm2022}/lib/Shared/Enums/PagingActionMode.mjs +5 -5
  22. package/{esm2020 → esm2022}/lib/Shared/Enums/Para.mjs +8 -8
  23. package/{esm2020 → esm2022}/lib/Shared/Enums/PickerType.mjs +6 -6
  24. package/{esm2020 → esm2022}/lib/Shared/Enums/SelectMode.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/Shared/Enums/StartView.mjs +6 -6
  26. package/{esm2020 → esm2022}/lib/Shared/Enums/Style.mjs +7 -7
  27. package/{esm2020 → esm2022}/lib/Shared/Enums/StyleConfirmationMode.mjs +6 -6
  28. package/{esm2020 → esm2022}/lib/Shared/Enums/TagInputView.mjs +6 -6
  29. package/{esm2020 → esm2022}/lib/Shared/Enums/menu-list-enum.mjs +5 -5
  30. package/{esm2020 → esm2022}/lib/Shared/Models/Attribute.mjs +2 -2
  31. package/{esm2020 → esm2022}/lib/Shared/Models/AutocompleteDTO.mjs +7 -7
  32. package/{esm2020 → esm2022}/lib/Shared/Models/AutocompleteOptions.mjs +23 -23
  33. package/{esm2020 → esm2022}/lib/Shared/Models/CalendarEventDTO.mjs +2 -2
  34. package/{esm2020 → esm2022}/lib/Shared/Models/CalendarOptions.mjs +18 -18
  35. package/{esm2020 → esm2022}/lib/Shared/Models/CancelDTO.mjs +6 -6
  36. package/{esm2020 → esm2022}/lib/Shared/Models/CaptchaStyle.mjs +2 -2
  37. package/{esm2020 → esm2022}/lib/Shared/Models/CheckBoxOptions.mjs +10 -10
  38. package/{esm2020 → esm2022}/lib/Shared/Models/ConfirmationModalOptions.mjs +38 -38
  39. package/{esm2020 → esm2022}/lib/Shared/Models/ControlOptionsBase.mjs +12 -12
  40. package/{esm2020 → esm2022}/lib/Shared/Models/CustomValidation.mjs +13 -13
  41. package/{esm2020 → esm2022}/lib/Shared/Models/DropdownListItem.mjs +2 -2
  42. package/{esm2020 → esm2022}/lib/Shared/Models/DropdownOptions.mjs +15 -15
  43. package/{esm2020 → esm2022}/lib/Shared/Models/EditPersonalImage.mjs +6 -6
  44. package/{esm2020 → esm2022}/lib/Shared/Models/EnglishArabicDTO.mjs +10 -10
  45. package/{esm2020 → esm2022}/lib/Shared/Models/FileDTO.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/Shared/Models/FileUploadModel.mjs +2 -2
  47. package/{esm2020 → esm2022}/lib/Shared/Models/FileUploadOptions.mjs +10 -10
  48. package/{esm2020 → esm2022}/lib/Shared/Models/FilterItem.mjs +7 -7
  49. package/{esm2020 → esm2022}/lib/Shared/Models/FormOptions.mjs +27 -27
  50. package/{esm2020 → esm2022}/lib/Shared/Models/HtmlEditorOptions.mjs +11 -11
  51. package/{esm2020 → esm2022}/lib/Shared/Models/ImageUploadOptions.mjs +13 -13
  52. package/{esm2020 → esm2022}/lib/Shared/Models/MapAutoCompleteOptions.mjs +3 -3
  53. package/{esm2020 → esm2022}/lib/Shared/Models/MapAutocompleteDTO.mjs +5 -5
  54. package/{esm2020 → esm2022}/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs +8 -8
  55. package/{esm2020 → esm2022}/lib/Shared/Models/MultiLingualTextAreaOptions.mjs +8 -8
  56. package/{esm2020 → esm2022}/lib/Shared/Models/MultilingualControlOptionsBase.mjs +15 -15
  57. package/{esm2020 → esm2022}/lib/Shared/Models/MultilingualTextBoxOptions.mjs +13 -13
  58. package/{esm2020 → esm2022}/lib/Shared/Models/MultipleFileUploadModel.mjs +8 -8
  59. package/{esm2020 → esm2022}/lib/Shared/Models/PagingDTO.mjs +12 -12
  60. package/{esm2020 → esm2022}/lib/Shared/Models/PagingOptions.mjs +46 -46
  61. package/{esm2020 → esm2022}/lib/Shared/Models/PagingPayload.mjs +2 -2
  62. package/{esm2020 → esm2022}/lib/Shared/Models/PhoneOptions.mjs +12 -12
  63. package/{esm2020 → esm2022}/lib/Shared/Models/ProfileImageUploadOptions.mjs +10 -10
  64. package/{esm2020 → esm2022}/lib/Shared/Models/ProfilePictureDTO.mjs +2 -2
  65. package/{esm2020 → esm2022}/lib/Shared/Models/RadioButtonItem.mjs +2 -2
  66. package/{esm2020 → esm2022}/lib/Shared/Models/RadioButtonOptions.mjs +3 -3
  67. package/{esm2020 → esm2022}/lib/Shared/Models/RangeNumber.mjs +2 -2
  68. package/{esm2020 → esm2022}/lib/Shared/Models/Recaptcha.mjs +5 -5
  69. package/{esm2020 → esm2022}/lib/Shared/Models/RecaptchaOptions.mjs +21 -21
  70. package/{esm2020 → esm2022}/lib/Shared/Models/RepeaterField.mjs +2 -2
  71. package/{esm2020 → esm2022}/lib/Shared/Models/RepeaterOptions.mjs +12 -12
  72. package/{esm2020 → esm2022}/lib/Shared/Models/SaveDTO.mjs +6 -6
  73. package/{esm2020 → esm2022}/lib/Shared/Models/TagsInputDTO.mjs +2 -2
  74. package/{esm2020 → esm2022}/lib/Shared/Models/TagsInputOptions.mjs +40 -40
  75. package/{esm2020 → esm2022}/lib/Shared/Models/TextAreaOptions.mjs +3 -3
  76. package/{esm2020 → esm2022}/lib/Shared/Models/TextBoxOptions.mjs +22 -22
  77. package/{esm2020 → esm2022}/lib/Shared/Models/ToggleslideOptions.mjs +8 -8
  78. package/{esm2020 → esm2022}/lib/Shared/Models/UploadPersonalImage.mjs +6 -6
  79. package/{esm2020 → esm2022}/lib/Shared/Models/bread-crumb.mjs +7 -7
  80. package/{esm2020 → esm2022}/lib/Shared/Models/control-filter-Item.mjs +5 -5
  81. package/{esm2020 → esm2022}/lib/Shared/Models/datePickerOptions.mjs +22 -22
  82. package/{esm2020 → esm2022}/lib/Shared/Models/filter-options.mjs +8 -8
  83. package/{esm2020 → esm2022}/lib/Shared/Models/page-header-options.mjs +77 -77
  84. package/{esm2020 → esm2022}/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -21
  85. package/{esm2020 → esm2022}/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -21
  86. package/{esm2020 → esm2022}/lib/Shared/config/environment.mjs +11 -11
  87. package/{esm2020 → esm2022}/lib/Shared/default_intl.mjs +29 -29
  88. package/{esm2020 → esm2022}/lib/Shared/services/ControlUtility.mjs +162 -162
  89. package/{esm2020 → esm2022}/lib/Shared/services/GlobalSettings.service.mjs +30 -30
  90. package/esm2022/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  91. package/{esm2020 → esm2022}/lib/Shared/services/render-component-service.service.mjs +30 -30
  92. package/esm2022/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
  93. package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
  94. package/esm2022/lib/controls/Calendar/Calendar.component.mjs +173 -0
  95. package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
  96. package/{esm2020 → esm2022}/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -136
  97. package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
  98. package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +193 -0
  99. package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
  100. package/{esm2020 → esm2022}/lib/controls/Form/Form.component.mjs +101 -101
  101. package/esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
  102. package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  103. package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +324 -0
  104. package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  105. package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
  106. package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
  107. package/{esm2020 → esm2022}/lib/controls/Paging/JwPagination.component.mjs +121 -121
  108. package/{esm2020 → esm2022}/lib/controls/Paging/Paging.component.mjs +312 -312
  109. package/esm2022/lib/controls/Phone/Phone.component.mjs +129 -0
  110. package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
  111. package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
  112. package/{esm2020 → esm2022}/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -135
  113. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater/repeater.component.mjs +125 -125
  114. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -750
  115. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -21
  116. package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -108
  117. package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
  118. package/esm2022/lib/controls/TextArea/TextArea.component.mjs +196 -0
  119. package/esm2022/lib/controls/TextBox/TextBox.component.mjs +306 -0
  120. package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
  121. package/esm2022/lib/controls/bbsf-controls.module.mjs +350 -0
  122. package/{esm2020 → esm2022}/lib/controls/page-header-component/page-header-component.component.mjs +37 -37
  123. package/{esm2020 → esm2022}/public-api.mjs +130 -130
  124. package/{fesm2020 → fesm2022}/bnsights-bbsf-controls.mjs +8718 -8735
  125. package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -0
  126. package/index.d.ts +5 -5
  127. package/lib/Shared/Components/app-base-component.d.ts +58 -58
  128. package/lib/Shared/Components/ng-tag-input.d.ts +50 -50
  129. package/lib/Shared/Directives/template-name.directive.d.ts +9 -9
  130. package/lib/Shared/Enums/CalendarView.d.ts +6 -6
  131. package/lib/Shared/Enums/ControlLayout.d.ts +4 -4
  132. package/lib/Shared/Enums/Countries.d.ts +245 -245
  133. package/lib/Shared/Enums/Enums.d.ts +30 -30
  134. package/lib/Shared/Enums/FileType.d.ts +20 -20
  135. package/lib/Shared/Enums/FilterType.d.ts +9 -9
  136. package/lib/Shared/Enums/FontSize.d.ts +5 -5
  137. package/lib/Shared/Enums/ForceDirection.d.ts +4 -4
  138. package/lib/Shared/Enums/IconPosition.d.ts +4 -4
  139. package/lib/Shared/Enums/ImageType.d.ts +8 -8
  140. package/lib/Shared/Enums/InputType.d.ts +8 -8
  141. package/lib/Shared/Enums/Insert.d.ts +7 -7
  142. package/lib/Shared/Enums/LanguageMode.d.ts +9 -9
  143. package/lib/Shared/Enums/LanguageValidation.d.ts +4 -4
  144. package/lib/Shared/Enums/Misc.d.ts +5 -5
  145. package/lib/Shared/Enums/PagingActionMode.d.ts +4 -4
  146. package/lib/Shared/Enums/Para.d.ts +7 -7
  147. package/lib/Shared/Enums/PickerType.d.ts +5 -5
  148. package/lib/Shared/Enums/SelectMode.d.ts +4 -4
  149. package/lib/Shared/Enums/StartView.d.ts +5 -5
  150. package/lib/Shared/Enums/Style.d.ts +6 -6
  151. package/lib/Shared/Enums/StyleConfirmationMode.d.ts +5 -5
  152. package/lib/Shared/Enums/TagInputView.d.ts +5 -5
  153. package/lib/Shared/Enums/menu-list-enum.d.ts +4 -4
  154. package/lib/Shared/Models/Attribute.d.ts +4 -4
  155. package/lib/Shared/Models/AutocompleteDTO.d.ts +5 -5
  156. package/lib/Shared/Models/AutocompleteOptions.d.ts +40 -40
  157. package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -8
  158. package/lib/Shared/Models/CalendarOptions.d.ts +23 -23
  159. package/lib/Shared/Models/CancelDTO.d.ts +5 -5
  160. package/lib/Shared/Models/CaptchaStyle.d.ts +7 -7
  161. package/lib/Shared/Models/CheckBoxOptions.d.ts +7 -7
  162. package/lib/Shared/Models/ConfirmationModalOptions.d.ts +21 -21
  163. package/lib/Shared/Models/ControlOptionsBase.d.ts +44 -44
  164. package/lib/Shared/Models/CustomValidation.d.ts +10 -10
  165. package/lib/Shared/Models/DropdownListItem.d.ts +4 -4
  166. package/lib/Shared/Models/DropdownOptions.d.ts +33 -33
  167. package/lib/Shared/Models/EditPersonalImage.d.ts +5 -5
  168. package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -4
  169. package/lib/Shared/Models/FileDTO.d.ts +19 -19
  170. package/lib/Shared/Models/FileUploadModel.d.ts +4 -4
  171. package/lib/Shared/Models/FileUploadOptions.d.ts +19 -19
  172. package/lib/Shared/Models/FilterItem.d.ts +13 -13
  173. package/lib/Shared/Models/FormOptions.d.ts +16 -16
  174. package/lib/Shared/Models/HtmlEditorOptions.d.ts +31 -31
  175. package/lib/Shared/Models/ImageUploadOptions.d.ts +23 -23
  176. package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +6 -6
  177. package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -7
  178. package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +22 -22
  179. package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +12 -12
  180. package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +77 -77
  181. package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +12 -12
  182. package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -7
  183. package/lib/Shared/Models/PagingDTO.d.ts +11 -11
  184. package/lib/Shared/Models/PagingOptions.d.ts +56 -56
  185. package/lib/Shared/Models/PagingPayload.d.ts +5 -5
  186. package/lib/Shared/Models/PhoneOptions.d.ts +21 -21
  187. package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +28 -28
  188. package/lib/Shared/Models/ProfilePictureDTO.d.ts +13 -13
  189. package/lib/Shared/Models/RadioButtonItem.d.ts +4 -4
  190. package/lib/Shared/Models/RadioButtonOptions.d.ts +8 -8
  191. package/lib/Shared/Models/RangeNumber.d.ts +4 -4
  192. package/lib/Shared/Models/Recaptcha.d.ts +6 -6
  193. package/lib/Shared/Models/RecaptchaOptions.d.ts +18 -18
  194. package/lib/Shared/Models/RepeaterField.d.ts +7 -7
  195. package/lib/Shared/Models/RepeaterOptions.d.ts +19 -19
  196. package/lib/Shared/Models/SaveDTO.d.ts +5 -5
  197. package/lib/Shared/Models/TagsInputDTO.d.ts +6 -6
  198. package/lib/Shared/Models/TagsInputOptions.d.ts +57 -57
  199. package/lib/Shared/Models/TextAreaOptions.d.ts +23 -23
  200. package/lib/Shared/Models/TextBoxOptions.d.ts +37 -37
  201. package/lib/Shared/Models/ToggleslideOptions.d.ts +9 -9
  202. package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -5
  203. package/lib/Shared/Models/bread-crumb.d.ts +6 -6
  204. package/lib/Shared/Models/control-filter-Item.d.ts +6 -6
  205. package/lib/Shared/Models/datePickerOptions.d.ts +29 -29
  206. package/lib/Shared/Models/filter-options.d.ts +7 -7
  207. package/lib/Shared/Models/page-header-options.d.ts +71 -71
  208. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +10 -10
  209. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +10 -10
  210. package/lib/Shared/config/environment.d.ts +1 -1
  211. package/lib/Shared/default_intl.d.ts +21 -21
  212. package/lib/Shared/services/ControlUtility.d.ts +32 -32
  213. package/lib/Shared/services/GlobalSettings.service.d.ts +17 -17
  214. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +10 -10
  215. package/lib/Shared/services/render-component-service.service.d.ts +10 -10
  216. package/lib/Shared/services/validationErrorMassage.service.d.ts +14 -14
  217. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +59 -59
  218. package/lib/controls/Calendar/Calendar.component.d.ts +42 -42
  219. package/lib/controls/CheckBox/CheckBox.component.d.ts +37 -37
  220. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +29 -29
  221. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +61 -61
  222. package/lib/controls/DropdownList/DropdownList.component.d.ts +55 -55
  223. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +58 -58
  224. package/lib/controls/Form/Form.component.d.ts +28 -28
  225. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +49 -49
  226. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +70 -70
  227. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +49 -54
  228. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +65 -65
  229. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +74 -74
  230. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +73 -73
  231. package/lib/controls/Paging/JwPagination.component.d.ts +27 -27
  232. package/lib/controls/Paging/Paging.component.d.ts +57 -57
  233. package/lib/controls/Phone/Phone.component.d.ts +43 -43
  234. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +69 -69
  235. package/lib/controls/RadioButton/RadioButton.component.d.ts +37 -37
  236. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +41 -41
  237. package/lib/controls/Repeater/repeater/repeater.component.d.ts +29 -29
  238. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +23 -23
  239. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +11 -11
  240. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +19 -19
  241. package/lib/controls/TagsInput/TagsInput.component.d.ts +58 -58
  242. package/lib/controls/TextArea/TextArea.component.d.ts +51 -51
  243. package/lib/controls/TextBox/TextBox.component.d.ts +66 -66
  244. package/lib/controls/Toggleslide/toggleslide.component.d.ts +33 -33
  245. package/lib/controls/bbsf-controls.module.d.ts +68 -77
  246. package/lib/controls/page-header-component/page-header-component.component.d.ts +20 -20
  247. package/package.json +50 -63
  248. package/public-api.d.ts +117 -117
  249. package/src/lib/assets/Style.scss +4 -4
  250. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
  251. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -170
  252. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -262
  253. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -173
  254. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -117
  255. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -223
  256. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -194
  257. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -447
  258. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -226
  259. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -350
  260. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -325
  261. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -427
  262. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -429
  263. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -428
  264. package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -129
  265. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -376
  266. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -109
  267. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -277
  268. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -196
  269. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -312
  270. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -90
  271. package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -361
  272. package/fesm2015/bnsights-bbsf-controls.mjs +0 -9159
  273. package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
  274. package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
@@ -1,173 +0,0 @@
1
- import dayGridPlugin from '@fullcalendar/daygrid';
2
- import timeGrigPlugin from '@fullcalendar/timegrid';
3
- import interactionPlugin from '@fullcalendar/interaction'; // for dateClick
4
- import timeGridPlugin from '@fullcalendar/timegrid';
5
- import listPlugin from '@fullcalendar/list';
6
- import { Component, Input, Optional, ViewChild } from '@angular/core';
7
- import { FormControl } from '@angular/forms';
8
- import { CalendarView } from '../../Shared/Enums/CalendarView';
9
- // import { CalendarOptions as CalendarOptionsModel, DateSelectArg, EventApi, EventClickArg } from '@fullcalendar/angular';
10
- import enGbLocale from '@fullcalendar/core/locales/en-gb';
11
- import ArLocale from '@fullcalendar/core/locales/ar';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../../Shared/services/validationErrorMassage.service";
14
- import * as i2 from "../../Shared/services/ControlUtility";
15
- import * as i3 from "@angular/forms";
16
- import * as i4 from "@bnsights/bbsf-utilities";
17
- import * as i5 from "@angular/common";
18
- import * as i6 from "@fullcalendar/angular";
19
- import * as i7 from "ngx-intl-tel-input";
20
- export class CalendarComponent {
21
- // tslint:disable-next-line: max-line-length
22
- constructor(ErrorHandler, controlUtility, controlContainer, PhoneControlHost, UtilityService, translate, controlValidationService) {
23
- this.ErrorHandler = ErrorHandler;
24
- this.controlUtility = controlUtility;
25
- this.controlContainer = controlContainer;
26
- this.PhoneControlHost = PhoneControlHost;
27
- this.UtilityService = UtilityService;
28
- this.translate = translate;
29
- this.controlValidationService = controlValidationService;
30
- this.calendarVisible = true;
31
- this.currentEvents = [];
32
- this.calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin, listPlugin];
33
- this.calendarWeekends = true;
34
- this.calendarEvents = [];
35
- this.DefaultView = "";
36
- this.CalendarViews = '';
37
- this.locales = [];
38
- this.CurrentLanguage = "";
39
- this.resetError = () => {
40
- this.controlValidationService.removeGlobalError();
41
- };
42
- CalendarComponent.controlContainerstatic = this.controlContainer;
43
- }
44
- async ngOnInit() {
45
- switch (await this.UtilityService.getCurrentLanguage()) {
46
- case 'ar':
47
- this.locales = [ArLocale];
48
- this.CurrentLanguage = "Ar";
49
- break;
50
- case 'en':
51
- this.locales = [enGbLocale];
52
- this.CurrentLanguage = "En";
53
- break;
54
- default:
55
- break;
56
- }
57
- this.translate.onLangChange.subscribe((event) => {
58
- switch (event.lang) {
59
- case 'ar':
60
- this.locales = [ArLocale];
61
- this.CurrentLanguage = "Ar";
62
- break;
63
- case 'en':
64
- this.locales = [enGbLocale];
65
- this.CurrentLanguage = "En";
66
- break;
67
- default:
68
- break;
69
- }
70
- });
71
- this.calendarEvents = this.options.EventList;
72
- this.calendarWeekends = this.options.AllowCalendarWeekends;
73
- switch (this.options.DefaultView) {
74
- case CalendarView.Month:
75
- this.DefaultView = "dayGridMonth";
76
- break;
77
- case CalendarView.Weekly:
78
- this.DefaultView = "timeGridWeek";
79
- break;
80
- case CalendarView.Daily:
81
- this.DefaultView = "timeGridDay";
82
- break;
83
- default:
84
- break;
85
- }
86
- if (this.options.CalendarViews != null && this.options.CalendarViews.length > 0)
87
- for (let index = 0; index < this.options.CalendarViews.length; index++) {
88
- const element = this.options.CalendarViews[index];
89
- switch (element) {
90
- case CalendarView.Agenda:
91
- this.CalendarViews += "listWeek,";
92
- break;
93
- case CalendarView.Daily:
94
- this.CalendarViews += "timeGridDay,";
95
- break;
96
- case CalendarView.Weekly:
97
- this.CalendarViews += "timeGridWeek,";
98
- break;
99
- case CalendarView.Month:
100
- this.CalendarViews += "dayGridMonth,";
101
- break;
102
- default:
103
- break;
104
- }
105
- }
106
- this.group.addControl(this.options.Name, new FormControl(''));
107
- this.CalendarFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
108
- this.calendarOptions = {
109
- plugins: [
110
- dayGridPlugin,
111
- timeGridPlugin,
112
- listPlugin,
113
- interactionPlugin
114
- ],
115
- headerToolbar: {
116
- left: 'prev,next today',
117
- center: 'title',
118
- right: this.CalendarViews.substring(0, this.CalendarViews.length - 1)
119
- },
120
- locales: this.locales,
121
- locale: this.CurrentLanguage,
122
- initialView: this.CalendarViews.split(',')[0],
123
- initialEvents: this.calendarEvents,
124
- initialDate: this.options.DefaultDate,
125
- weekends: this.options.AllowCalendarWeekends,
126
- editable: this.options.Eventeditable,
127
- selectable: this.options.Eventselectable,
128
- // selectMirror: true,
129
- dayMaxEvents: this.options.dayMaxEvents,
130
- select: this.OnDayClickFunction.bind(this),
131
- eventClick: this.OnEventClickFunction.bind(this),
132
- // eventsSet: this.handleEvents.bind(this)
133
- /* you can update a remote database when these fire:
134
- eventAdd:
135
- eventChange:
136
- eventRemove:
137
- */
138
- };
139
- }
140
- ngAfterViewInit() {
141
- }
142
- getErrorValidation(Errorsitem) {
143
- }
144
- OnDayClickFunction(arg) {
145
- if (this.options.OnDayClickFunction != null) {
146
- let DayClickFunction = this.options.OnDayClickFunction;
147
- DayClickFunction(arg);
148
- }
149
- }
150
- OnEventClickFunction(arg) {
151
- if (this.options.OnEventClickFunction != null) {
152
- let EventClickFunction = this.options.OnEventClickFunction;
153
- EventClickFunction(arg.event);
154
- }
155
- }
156
- }
157
- CalendarComponent.controlContainerstatic = null;
158
- CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.ErrorMassageValidation }, { token: i2.ControlUtility }, { token: i3.ControlContainer, optional: true }, { token: i3.FormGroupDirective }, { token: i4.UtilityService }, { token: i4.BBSFTranslateService }, { token: i4.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component });
159
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CalendarComponent, selector: "BBSF-Calendar", inputs: { group: "group", options: "options" }, viewQueries: [{ propertyName: "calendarComponent", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"b-control b-calendar\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <!-- <full-calendar #calendar\r\n [defaultDate]=\"options.DefaultDate\"\r\n [defaultView]=\"DefaultView\"\r\n [header]=\"{\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: CalendarViews\r\n }\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [locales]=\"locales\"\r\n [plugins]=\"calendarPlugins\"\r\n [weekends]=\"calendarWeekends\"\r\n [events]=\"calendarEvents\"\r\n (dateClick)=\"OnDayClickFunction($event)\"\r\n (eventClick)=\"OnEventClickFunction($event)\"\r\n id=\"{{options.Name}}\"></full-calendar> -->\r\n\r\n\r\n <full-calendar\r\n *ngIf=\"options.CalendarVisible\"\r\n [options]='calendarOptions'\r\n id=\"{{options.Name}}\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n ></full-calendar>\r\n\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FullCalendarComponent, selector: "full-calendar", inputs: ["options", "deepChangeDetection", "events", "eventSources", "resources"] }, { kind: "directive", type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CalendarComponent, decorators: [{
161
- type: Component,
162
- args: [{ selector: 'BBSF-Calendar', template: "\r\n<div class=\"b-control b-calendar\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <!-- <full-calendar #calendar\r\n [defaultDate]=\"options.DefaultDate\"\r\n [defaultView]=\"DefaultView\"\r\n [header]=\"{\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: CalendarViews\r\n }\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [locales]=\"locales\"\r\n [plugins]=\"calendarPlugins\"\r\n [weekends]=\"calendarWeekends\"\r\n [events]=\"calendarEvents\"\r\n (dateClick)=\"OnDayClickFunction($event)\"\r\n (eventClick)=\"OnEventClickFunction($event)\"\r\n id=\"{{options.Name}}\"></full-calendar> -->\r\n\r\n\r\n <full-calendar\r\n *ngIf=\"options.CalendarVisible\"\r\n [options]='calendarOptions'\r\n id=\"{{options.Name}}\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n ></full-calendar>\r\n\r\n </div>\r\n</div>\r\n" }]
163
- }], ctorParameters: function () { return [{ type: i1.ErrorMassageValidation }, { type: i2.ControlUtility }, { type: i3.ControlContainer, decorators: [{
164
- type: Optional
165
- }] }, { type: i3.FormGroupDirective }, { type: i4.UtilityService }, { type: i4.BBSFTranslateService }, { type: i4.ControlValidationService }]; }, propDecorators: { group: [{
166
- type: Input
167
- }], options: [{
168
- type: Input
169
- }], calendarComponent: [{
170
- type: ViewChild,
171
- args: ['calendar', { static: false }]
172
- }] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NhbGVuZGFyL0NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9DYWxlbmRhci9DYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLGFBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLGlCQUFpQixNQUFNLDJCQUEyQixDQUFDLENBQUMsZ0JBQWdCO0FBQzNFLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sVUFBVSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBK0csTUFBTSxnQkFBZ0IsQ0FBQztBQUkxSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsMkhBQTJIO0FBQzNILE9BQU8sVUFBVSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sUUFBUSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7QUFTckQsTUFBTSxPQUFPLGlCQUFpQjtJQUk1Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsWUFBb0MsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyxnQkFBb0MsRUFBUyxjQUE2QixFQUFTLFNBQStCLEVBQVMsd0JBQWlEO1FBQXpULGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFzQixxQkFBZ0IsR0FBaEIs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QyxPQUFPLENBQUMsb0JBQW9CLENBQUM7WUFDM0Qsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQy9CO0lBRUgsQ0FBQzs7QUEzSk0sd0NBQXNCLEdBQUcsSUFBSSxDQUFDOytHQUgxQixpQkFBaUI7bUdBQWpCLGlCQUFpQixvTkN4QjlCLHN5Q0FnQ0E7NEZEUmEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLGVBQWU7OzBCQVMwRSxRQUFRO29MQUdsRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVvQyxpQkFBaUI7c0JBQTFELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZ1bGxDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvYW5ndWxhcic7XHJcbmltcG9ydCAqIGFzIGNvcmUgZnJvbSAnQGZ1bGxjYWxlbmRhci9jb3JlJztcclxuaW1wb3J0IGRheUdyaWRQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci9kYXlncmlkJztcclxuaW1wb3J0IHRpbWVHcmlnUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvdGltZWdyaWQnO1xyXG5pbXBvcnQgaW50ZXJhY3Rpb25QbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci9pbnRlcmFjdGlvbic7IC8vIGZvciBkYXRlQ2xpY2tcclxuaW1wb3J0IHRpbWVHcmlkUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvdGltZWdyaWQnO1xyXG5pbXBvcnQgbGlzdFBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL2xpc3QnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9DYWxlbmRhck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ2FsZW5kYXJWaWV3JztcclxuLy8gaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIGFzIENhbGVuZGFyT3B0aW9uc01vZGVsLCBEYXRlU2VsZWN0QXJnLCBFdmVudEFwaSwgRXZlbnRDbGlja0FyZyB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvYW5ndWxhcic7XHJcbmltcG9ydCBlbkdiTG9jYWxlIGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZS9sb2NhbGVzL2VuLWdiJztcclxuaW1wb3J0IEFyTG9jYWxlIGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZS9sb2NhbGVzL2FyJztcclxuaW1wb3J0IHsgTGFuZ0NoYW5nZUV2ZW50IH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1DYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9DYWxlbmRhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIFBob25lQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgdHJhbnNsYXRlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTpDb250cm9sVmFsaWRhdGlvblNlcnZpY2UpIHtcclxuICAgIENhbGVuZGFyQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogQ2FsZW5kYXJPcHRpb25zO1xyXG4gIENhbGVuZGFyRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjYWxlbmRhckNvbXBvbmVudDogRnVsbENhbGVuZGFyQ29tcG9uZW50OyAvLyB0aGUgI2NhbGVuZGFyIGluIHRoZSB0ZW1wbGF0ZVxyXG5cclxuXHJcblxyXG4gIGNhbGVuZGFyVmlzaWJsZSA9IHRydWU7XHJcbiAgY2FsZW5kYXJPcHRpb25zOiBjb3JlLkNhbGVuZGFyT3B0aW9ucztcclxuICBjdXJyZW50RXZlbnRzOiBjb3JlLkV2ZW50QXBpW10gPSBbXTtcclxuICBjYWxlbmRhclBsdWdpbnMgPSBbZGF5R3JpZFBsdWdpbiwgdGltZUdyaWdQbHVnaW4sIGludGVyYWN0aW9uUGx1Z2luLCBsaXN0UGx1Z2luXTtcclxuICBjYWxlbmRhcldlZWtlbmRzID0gdHJ1ZTtcclxuICBjYWxlbmRhckV2ZW50czogY29yZS5FdmVudElucHV0W10gPSBbXTtcclxuICBEZWZhdWx0VmlldyA9IFwiXCJcclxuICBDYWxlbmRhclZpZXdzID0gJydcclxuICBsb2NhbGVzID0gW107XHJcbiAgQ3VycmVudExhbmd1YWdlID0gXCJcIlxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgc3dpdGNoIChhd2FpdCB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2FyJzpcclxuICAgICAgICB0aGlzLmxvY2FsZXMgPSBbQXJMb2NhbGVdXHJcbiAgICAgICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBcIkFyXCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgIHRoaXMubG9jYWxlcyA9IFtlbkdiTG9jYWxlXVxyXG4gICAgICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gXCJFblwiXHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQ6IExhbmdDaGFuZ2VFdmVudCkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50LmxhbmcpIHtcclxuICAgICAgICBjYXNlICdhcic6XHJcbiAgICAgICAgICB0aGlzLmxvY2FsZXMgPSBbQXJMb2NhbGVdXHJcbiAgICAgICAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IFwiQXJcIlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgICAgdGhpcy5sb2NhbGVzID0gW2VuR2JMb2NhbGVdXHJcbiAgICAgICAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IFwiRW5cIlxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jYWxlbmRhckV2ZW50cyA9IHRoaXMub3B0aW9ucy5FdmVudExpc3RcclxuICAgIHRoaXMuY2FsZW5kYXJXZWVrZW5kcyA9IHRoaXMub3B0aW9ucy5BbGxvd0NhbGVuZGFyV2Vla2VuZHNcclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLkRlZmF1bHRWaWV3KSB7XHJcbiAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3Lk1vbnRoOlxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZpZXcgPSBcImRheUdyaWRNb250aFwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LldlZWtseTpcclxuICAgICAgICB0aGlzLkRlZmF1bHRWaWV3ID0gXCJ0aW1lR3JpZFdlZWtcIlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENhbGVuZGFyVmlldy5EYWlseTpcclxuICAgICAgICB0aGlzLkRlZmF1bHRWaWV3ID0gXCJ0aW1lR3JpZERheVwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkNhbGVuZGFyVmlld3MgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuQ2FsZW5kYXJWaWV3cy5sZW5ndGggPiAwKVxyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5vcHRpb25zLkNhbGVuZGFyVmlld3MubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMub3B0aW9ucy5DYWxlbmRhclZpZXdzW2luZGV4XTtcclxuICAgICAgICBzd2l0Y2ggKGVsZW1lbnQpIHtcclxuICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkFnZW5kYTpcclxuICAgICAgICAgICAgdGhpcy5DYWxlbmRhclZpZXdzICs9IFwibGlzdFdlZWssXCJcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5EYWlseTpcclxuICAgICAgICAgICAgdGhpcy5DYWxlbmRhclZpZXdzICs9IFwidGltZUdyaWREYXksXCJcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIENhbGVuZGFyVmlldy5XZWVrbHk6XHJcbiAgICAgICAgICAgIHRoaXMuQ2FsZW5kYXJWaWV3cyArPSBcInRpbWVHcmlkV2VlayxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3Lk1vbnRoOlxyXG4gICAgICAgICAgICB0aGlzLkNhbGVuZGFyVmlld3MgKz0gXCJkYXlHcmlkTW9udGgsXCJcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuQ2FsZW5kYXJGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcblxyXG5cclxuICAgIHRoaXMuY2FsZW5kYXJPcHRpb25zID0ge1xyXG4gICAgICBwbHVnaW5zOiBbXHJcbiAgICAgICAgZGF5R3JpZFBsdWdpbixcclxuICAgICAgICB0aW1lR3JpZFBsdWdpbixcclxuICAgICAgICBsaXN0UGx1Z2luLFxyXG4gICAgICAgIGludGVyYWN0aW9uUGx1Z2luXHJcbiAgICAgIF0sXHJcbiAgICAgIGhlYWRlclRvb2xiYXI6IHtcclxuICAgICAgICBsZWZ0OiAncHJldixuZXh0IHRvZGF5JyxcclxuICAgICAgICBjZW50ZXI6ICd0aXRsZScsXHJcbiAgICAgICAgcmlnaHQ6IHRoaXMuQ2FsZW5kYXJWaWV3cy5zdWJzdHJpbmcoMCwgdGhpcy5DYWxlbmRhclZpZXdzLmxlbmd0aCAtIDEpXHJcbiAgICAgIH0sXHJcbiAgICAgIGxvY2FsZXM6IHRoaXMubG9jYWxlcyxcclxuICAgICAgbG9jYWxlOiB0aGlzLkN1cnJlbnRMYW5ndWFnZSxcclxuICAgICAgaW5pdGlhbFZpZXc6IHRoaXMuQ2FsZW5kYXJWaWV3cy5zcGxpdCgnLCcpWzBdLFxyXG4gICAgICBpbml0aWFsRXZlbnRzOiB0aGlzLmNhbGVuZGFyRXZlbnRzLFxyXG4gICAgICBpbml0aWFsRGF0ZTogdGhpcy5vcHRpb25zLkRlZmF1bHREYXRlLFxyXG4gICAgICB3ZWVrZW5kczogdGhpcy5vcHRpb25zLkFsbG93Q2FsZW5kYXJXZWVrZW5kcyxcclxuICAgICAgZWRpdGFibGU6IHRoaXMub3B0aW9ucy5FdmVudGVkaXRhYmxlLFxyXG4gICAgICBzZWxlY3RhYmxlOiB0aGlzLm9wdGlvbnMuRXZlbnRzZWxlY3RhYmxlLFxyXG4gICAgICAvLyBzZWxlY3RNaXJyb3I6IHRydWUsXHJcbiAgICAgIGRheU1heEV2ZW50czogdGhpcy5vcHRpb25zLmRheU1heEV2ZW50cyxcclxuICAgICAgc2VsZWN0OiB0aGlzLk9uRGF5Q2xpY2tGdW5jdGlvbi5iaW5kKHRoaXMpLFxyXG4gICAgICBldmVudENsaWNrOiB0aGlzLk9uRXZlbnRDbGlja0Z1bmN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAgIC8vIGV2ZW50c1NldDogdGhpcy5oYW5kbGVFdmVudHMuYmluZCh0aGlzKVxyXG4gICAgICAvKiB5b3UgY2FuIHVwZGF0ZSBhIHJlbW90ZSBkYXRhYmFzZSB3aGVuIHRoZXNlIGZpcmU6XHJcbiAgICAgIGV2ZW50QWRkOlxyXG4gICAgICBldmVudENoYW5nZTpcclxuICAgICAgZXZlbnRSZW1vdmU6XHJcbiAgICAgICovXHJcbiAgICB9O1xyXG5cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5yZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yc2l0ZW06IGFueVtdKSB7XHJcbiAgfVxyXG5cclxuXHJcbiAgT25EYXlDbGlja0Z1bmN0aW9uKGFyZykge1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuT25EYXlDbGlja0Z1bmN0aW9uICE9IG51bGwpIHtcclxuICAgICAgbGV0IERheUNsaWNrRnVuY3Rpb24gPSB0aGlzLm9wdGlvbnMuT25EYXlDbGlja0Z1bmN0aW9uO1xyXG4gICAgICBEYXlDbGlja0Z1bmN0aW9uKGFyZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBPbkV2ZW50Q2xpY2tGdW5jdGlvbihhcmcpIHtcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuT25FdmVudENsaWNrRnVuY3Rpb24gIT0gbnVsbCkge1xyXG4gICAgICBsZXQgRXZlbnRDbGlja0Z1bmN0aW9uID0gdGhpcy5vcHRpb25zLk9uRXZlbnRDbGlja0Z1bmN0aW9uO1xyXG4gICAgICBFdmVudENsaWNrRnVuY3Rpb24oYXJnLmV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIC8vIGhhbmRsZURhdGVTZWxlY3Qoc2VsZWN0SW5mbzogRGF0ZVNlbGVjdEFyZykge1xyXG4gIC8vICAgY29uc3QgdGl0bGUgPSBwcm9tcHQoJ1BsZWFzZSBlbnRlciBhIG5ldyB0aXRsZSBmb3IgeW91ciBldmVudCcpO1xyXG4gIC8vICAgY29uc3QgY2FsZW5kYXJBcGkgPSBzZWxlY3RJbmZvLnZpZXcuY2FsZW5kYXI7XHJcblxyXG4gIC8vICAgY2FsZW5kYXJBcGkudW5zZWxlY3QoKTsgLy8gY2xlYXIgZGF0ZSBzZWxlY3Rpb25cclxuXHJcbiAgLy8gICBpZiAodGl0bGUpIHtcclxuICAvLyAgICAgY2FsZW5kYXJBcGkuYWRkRXZlbnQoe1xyXG4gIC8vICAgICAgIGlkOiBcIjFcIixcclxuICAvLyAgICAgICB0aXRsZSxcclxuICAvLyAgICAgICBzdGFydDogc2VsZWN0SW5mby5zdGFydFN0cixcclxuICAvLyAgICAgICBlbmQ6IHNlbGVjdEluZm8uZW5kU3RyLFxyXG4gIC8vICAgICAgIGFsbERheTogc2VsZWN0SW5mby5hbGxEYXlcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBoYW5kbGVFdmVudENsaWNrKGNsaWNrSW5mbzogRXZlbnRDbGlja0FyZykge1xyXG4gIC8vICAgaWYgKGNvbmZpcm0oYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIGV2ZW50ICcke2NsaWNrSW5mby5ldmVudC50aXRsZX0nYCkpIHtcclxuICAvLyAgICAgY2xpY2tJbmZvLmV2ZW50LnJlbW92ZSgpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gaGFuZGxlRXZlbnRzKGV2ZW50czogRXZlbnRBcGlbXSkge1xyXG4gIC8vICAgdGhpcy5jdXJyZW50RXZlbnRzID0gZXZlbnRzO1xyXG4gIC8vIH1cclxuXHJcblxyXG5cclxuXHJcbn1cclxuXHJcblxyXG4iLCJcclxuPGRpdiBjbGFzcz1cImItY29udHJvbCBiLWNhbGVuZGFyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdmFsaWRhdGUgaXMtaW52YWxpZFwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICAgIDwhLS0gPGZ1bGwtY2FsZW5kYXIgI2NhbGVuZGFyXHJcbiAgICAgICAgICAgICAgICAgICBbZGVmYXVsdERhdGVdPVwib3B0aW9ucy5EZWZhdWx0RGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZpZXddPVwiRGVmYXVsdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgW2hlYWRlcl09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogJ3ByZXYsbmV4dCB0b2RheScsXHJcbiAgICAgICAgICAgICAgICAgICAgY2VudGVyOiAndGl0bGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBDYWxlbmRhclZpZXdzXHJcbiAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbFxyXG4gICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbG9jYWxlc109XCJsb2NhbGVzXCJcclxuICAgICAgICAgICAgICAgICAgIFtwbHVnaW5zXT1cImNhbGVuZGFyUGx1Z2luc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbd2Vla2VuZHNdPVwiY2FsZW5kYXJXZWVrZW5kc1wiXHJcbiAgICAgICAgICAgICAgICAgICBbZXZlbnRzXT1cImNhbGVuZGFyRXZlbnRzXCJcclxuICAgICAgICAgICAgICAgICAgIChkYXRlQ2xpY2spPVwiT25EYXlDbGlja0Z1bmN0aW9uKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgKGV2ZW50Q2xpY2spPVwiT25FdmVudENsaWNrRnVuY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICBpZD1cInt7b3B0aW9ucy5OYW1lfX1cIj48L2Z1bGwtY2FsZW5kYXI+IC0tPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICA8ZnVsbC1jYWxlbmRhclxyXG4gICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25zLkNhbGVuZGFyVmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109J2NhbGVuZGFyT3B0aW9ucydcclxuICAgICAgICAgICAgICAgICAgIGlkPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMuTmFtZX19XCJcclxuICAgICAgICAgICAgICAgICA+PC9mdWxsLWNhbGVuZGFyPlxyXG5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,117 +0,0 @@
1
- import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../Shared/services/ControlUtility";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "@bnsights/bbsf-utilities";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/cdk/bidi";
9
- import * as i6 from "ngx-intl-tel-input";
10
- export class CheckBoxComponent {
11
- // tslint:disable-next-line: max-line-length
12
- constructor(controlUtility, controlContainer, CheckBoxControlHost, UtilityService, translate, controlValidationService) {
13
- this.controlUtility = controlUtility;
14
- this.controlContainer = controlContainer;
15
- this.CheckBoxControlHost = CheckBoxControlHost;
16
- this.UtilityService = UtilityService;
17
- this.translate = translate;
18
- this.controlValidationService = controlValidationService;
19
- this.OnChange = new EventEmitter();
20
- this.markAllAsTouched = false;
21
- this.validationRules = [];
22
- this.validationRulesasync = [];
23
- this.resetError = () => {
24
- this.controlValidationService.removeGlobalError();
25
- };
26
- //External Method
27
- this.RemoveRequiredValidation = () => {
28
- this.controlUtility.RemoveRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options);
29
- };
30
- //External Method
31
- this.AddRequiredValidation = () => {
32
- this.controlUtility.AddRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options);
33
- };
34
- //External Method
35
- this.RemoveCustomValidation = (CustomValidation) => {
36
- this.controlUtility.RemoveCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation);
37
- };
38
- //External Method
39
- this.AddCustomValidation = (CustomValidation) => {
40
- this.controlUtility.AddCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation);
41
- };
42
- //External Method
43
- this.IsValid = () => {
44
- this.controlUtility.IsValid(this.CheckBoxFormControl);
45
- };
46
- CheckBoxComponent.controlContainerstatic = this.controlContainer;
47
- }
48
- ngOnInit() {
49
- if (this.options.ForceDirection)
50
- this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
51
- else
52
- this.textDir = localStorage.getItem('language') == 'ar' ? 'rtl' : 'ltr';
53
- this.controlValidationService.isCreatedBefor = false;
54
- this.group.addControl(this.options.Name, new FormControl(''));
55
- this.CheckBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
56
- this.validationRules = [];
57
- this.validationRulesasync = [];
58
- this.CheckBoxFormControl.setValue(this.options.Value);
59
- if (this.options.LabelKey != null && this.options.LabelKey != "")
60
- this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
61
- if (this.options.IsRequired) {
62
- this.validationRules.push(Validators.required);
63
- }
64
- if (this.options.CustomValidation.length > 0) {
65
- let Validations = this.options.CustomValidation;
66
- for (let index = 0; index < Validations.length; index++) {
67
- const Validation = Validations[index];
68
- this.validationRules.push(Validation.functionBody);
69
- }
70
- }
71
- this.CheckBoxFormControl.setValidators(this.validationRules);
72
- this.CheckBoxFormControl.setAsyncValidators(this.validationRulesasync);
73
- if (this.options.IsDisabled) {
74
- this.CheckBoxFormControl.disable();
75
- }
76
- this.CheckBoxControlHost.ngSubmit.subscribe((value) => {
77
- this.group.markAllAsTouched();
78
- this.markAllAsTouched = true;
79
- });
80
- }
81
- ngAfterViewInit() {
82
- this.controlUtility.setAttributeForControl(this.options);
83
- }
84
- showGlobalError() {
85
- this.controlUtility.showGlobalError();
86
- }
87
- getErrorValidation(ErrorList) {
88
- if (this.markAllAsTouched && this.group.invalid) {
89
- this.showGlobalError();
90
- this.markAllAsTouched = false;
91
- }
92
- return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
93
- }
94
- onValueChanged() {
95
- this.OnChange.emit(this.CheckBoxFormControl.value);
96
- let originalValue = this.CheckBoxFormControl.value;
97
- if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
98
- this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
99
- }
100
- }
101
- }
102
- CheckBoxComponent.controlContainerstatic = null;
103
- CheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i1.ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component });
104
- CheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CheckBoxComponent, selector: "BBSF-CheckBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input *ngIf=\"!options.IsReadonly\" class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{options.Value}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i6.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i4.KeyValuePipe, name: "keyvalue" }] });
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CheckBoxComponent, decorators: [{
106
- type: Component,
107
- args: [{ selector: 'BBSF-CheckBox', template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input *ngIf=\"!options.IsReadonly\" class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&!options.IsReadonly\" class=\"text-danger\">*</span>\r\n </label>\r\n <!-- readonly -->\r\n <div *ngIf=\"options.IsReadonly\"><span class=\"readonly-view\">{{options.Value}}</span>\r\n </div>\r\n <div class=\"subtext-container\" *ngIf=\"!options.IsReadonly\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
108
- }], ctorParameters: function () { return [{ type: i1.ControlUtility }, { type: i2.ControlContainer, decorators: [{
109
- type: Optional
110
- }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }]; }, propDecorators: { group: [{
111
- type: Input
112
- }], options: [{
113
- type: Input
114
- }], OnChange: [{
115
- type: Output
116
- }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2tCb3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NoZWNrQm94L0NoZWNrQm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9DaGVja0JveC9DaGVja0JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFXM0gsTUFBTSxPQUFPLGlCQUFpQjtJQUk1Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQVMsbUJBQXVDLEVBQVMsY0FBNkIsRUFBUyxTQUErQixFQUFTLHdCQUFpRDtRQUE5USxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQUt4UixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd4QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBa0QxQixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FB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aW9uYWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9DaGVja0JveE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1DaGVja0JveCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0NoZWNrQm94LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIENoZWNrQm94Q29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgdHJhbnNsYXRlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTpDb250cm9sVmFsaWRhdGlvblNlcnZpY2UpIHtcclxuICAgIENoZWNrQm94Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEBPdXRwdXQoKSBPbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQ2hlY2tCb3hGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIHRleHREaXI7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYodGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uKVxyXG4gICAgdGhpcy50ZXh0RGlyPXRoaXMub3B0aW9ucy5Gb3JjZURpcmVjdGlvbj09Mj8ncnRsJzonbHRyJztcclxuICAgIGVsc2VcclxuICAgIHRoaXMudGV4dERpcj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKT09J2FyJz8ncnRsJzonbHRyJztcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMgPSBbXTtcclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnMuVmFsdWUpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpO1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5DaGVja0JveENvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICByZXNldEVycm9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UucmVtb3ZlR2xvYmFsRXJyb3IoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBvblZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wudmFsdWUpXHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9dGhpcy5DaGVja0JveEZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5DaGVja0JveEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbiA9IChDdXN0b21WYWxpZGF0aW9uKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZUN1c3RvbVZhbGlkYXRpb24odGhpcy5DaGVja0JveEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbClcclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi1jaGVja2JveFwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cclxuICA8ZGl2IGNsYXNzPVwiYmJzZi1pbnB1dC1jb250YWluZXJcIj5cclxuICAgIDwhLS1pbnB1dC0tPlxyXG4gICAgPGlucHV0ICpuZ0lmPVwiIW9wdGlvbnMuSXNSZWFkb25seVwiIGNsYXNzPVwiYmJzZi1jaGVja2JveC1pbnB1dCB7e29wdGlvbnMuRXh0cmFDbGFzc2VzfX1cIiBbZGlyXT1cInRleHREaXJcIiBbY2hlY2tlZF09XCJvcHRpb25zLlZhbHVlPT10cnVlP3RydWU6bnVsbFwiXHJcbiAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImVtYWlsLWVycm9yXCIgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5OYW1lfX1cIlxyXG4gICAgICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZWQoKVwiXHJcbiAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiQ2hlY2tCb3hGb3JtQ29udHJvbC5pbnZhbGlkICYmIENoZWNrQm94Rm9ybUNvbnRyb2wudG91Y2hlZFwiXHJcbiAgICAgICAgICAgaWQ9XCJ7e29wdGlvbnMuTmFtZX19XCIgdHlwZT1cImNoZWNrYm94XCIgdmFsdWU9XCJvcHRpb25zLlZhbHVlPT10cnVlP3RydWU6bnVsbFwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1zdWJ0ZXh0LWNvbnRhaW5lclwiPlxyXG4gICAgICA8IS0tbGFiZWwtLT5cclxuICAgICAgPGxhYmVsICpuZ0lmPVwiIW9wdGlvbnMuSGlkZUxhYmVsXCIgY2xhc3M9XCJiYnNmLWxhYmVsIHt7b3B0aW9ucy5MYWJlbEV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgICAge3tvcHRpb25zLkxhYmVsVmFsdWV9fVxyXG4gICAgICAgIDwhLS1Bc3Rlcmlzay0tPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiKChvcHRpb25zLlNob3dBc3RlcmlzayYmb3B0aW9ucy5Jc1JlcXVpcmVkKXx8KG9wdGlvbnMuSXNSZXF1aXJlZCkpJiYhb3B0aW9ucy5Jc1JlYWRvbmx5XCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgICA8IS0tIHJlYWRvbmx5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIm9wdGlvbnMuSXNSZWFkb25seVwiPjxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmlld1wiPnt7b3B0aW9ucy5WYWx1ZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiICpuZ0lmPVwiIW9wdGlvbnMuSXNSZWFkb25seVwiPlxyXG4gICAgICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLkxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKENoZWNrQm94Rm9ybUNvbnRyb2wuaW52YWxpZCAmJiBDaGVja0JveEZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihDaGVja0JveEZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj57e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=