@bnsights/bbsf-controls 1.0.86 → 1.0.87

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 (219) hide show
  1. package/README.md +5 -0
  2. package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
  3. package/bnsights-bbsf-controls.d.ts +1 -1
  4. package/esm2020/bnsights-bbsf-controls.mjs +5 -0
  5. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
  6. package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
  7. package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
  8. package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
  9. package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
  10. package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
  11. package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
  12. package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
  13. package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
  14. package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
  15. package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
  16. package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
  17. package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
  18. package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
  19. package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
  20. package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
  21. package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
  22. package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
  23. package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
  24. package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
  25. package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
  26. package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
  27. package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
  28. package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
  29. package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
  30. package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
  31. package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
  32. package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
  33. package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
  34. package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
  35. package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
  36. package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
  37. package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
  38. package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
  39. package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
  40. package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
  41. package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +0 -0
  42. package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
  43. package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
  44. package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
  45. package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
  46. package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
  47. package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
  48. package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
  49. package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
  50. package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
  51. package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
  52. package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
  53. package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
  54. package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
  55. package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
  56. package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
  57. package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
  58. package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
  59. package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
  60. package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
  61. package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
  62. package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
  63. package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
  64. package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
  65. package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
  66. package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
  67. package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
  68. package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
  69. package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
  70. package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
  71. package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
  72. package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
  73. package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
  74. package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
  75. package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
  76. package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
  77. package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
  78. package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
  79. package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
  80. package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
  81. package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +1 -1
  82. package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
  83. package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
  84. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
  85. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
  86. package/esm2020/lib/Shared/components/app-base-component.mjs +198 -0
  87. package/esm2020/lib/Shared/components/ng-tag-input.mjs +336 -0
  88. package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
  89. package/esm2020/lib/Shared/default_intl.mjs +29 -0
  90. package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
  91. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
  92. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
  93. package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
  94. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +137 -0
  95. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +245 -0
  96. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +172 -0
  97. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +114 -0
  98. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
  99. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +217 -0
  100. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +179 -0
  101. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +453 -0
  102. package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
  103. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +223 -0
  104. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
  105. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
  106. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
  107. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +427 -0
  108. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +426 -0
  109. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
  110. package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
  111. package/esm2020/lib/controls/Phone/Phone.component.mjs +124 -0
  112. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +354 -0
  113. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +106 -0
  114. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +132 -0
  115. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
  116. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
  117. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
  118. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
  119. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +268 -0
  120. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +192 -0
  121. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +266 -0
  122. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +84 -0
  123. package/esm2020/lib/controls/bbsf-controls.module.mjs +401 -0
  124. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
  125. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  126. package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +1787 -1644
  127. package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
  128. package/fesm2020/bnsights-bbsf-controls.mjs +8938 -0
  129. package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
  130. package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
  131. package/lib/Shared/Models/datePickerOptions.d.ts +1 -1
  132. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
  133. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
  134. package/lib/Shared/components/app-base-component.d.ts +3 -0
  135. package/lib/Shared/components/ng-tag-input.d.ts +3 -0
  136. package/lib/Shared/default_intl.d.ts +3 -0
  137. package/lib/Shared/services/ControlUtility.d.ts +3 -0
  138. package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
  139. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
  140. package/lib/Shared/services/render-component-service.service.d.ts +3 -0
  141. package/lib/Shared/services/validationErrorMassage.service.d.ts +3 -0
  142. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +4 -0
  143. package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
  144. package/lib/controls/CheckBox/CheckBox.component.d.ts +4 -0
  145. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
  146. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +8 -2
  147. package/lib/controls/DropdownList/DropdownList.component.d.ts +4 -0
  148. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +3 -0
  149. package/lib/controls/Form/Form.component.d.ts +3 -0
  150. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +4 -0
  151. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
  152. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
  153. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
  154. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
  155. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
  156. package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
  157. package/lib/controls/Paging/Paging.component.d.ts +3 -0
  158. package/lib/controls/Phone/Phone.component.d.ts +7 -1
  159. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
  160. package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
  161. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +4 -0
  162. package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
  163. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  164. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
  165. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
  166. package/lib/controls/TagsInput/TagsInput.component.d.ts +4 -0
  167. package/lib/controls/TextArea/TextArea.component.d.ts +4 -0
  168. package/lib/controls/TextBox/TextBox.component.d.ts +4 -0
  169. package/lib/controls/Toggleslide/toggleslide.component.d.ts +4 -0
  170. package/lib/controls/bbsf-controls.module.d.ts +74 -0
  171. package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
  172. package/package.json +20 -8
  173. package/bnsights-bbsf-controls-1.0.86.tgz +0 -0
  174. package/bnsights-bbsf-controls.metadata.json +0 -1
  175. package/bundles/bnsights-bbsf-controls.umd.js +0 -9430
  176. package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
  177. package/esm2015/bnsights-bbsf-controls.js +0 -6
  178. package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
  179. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
  180. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
  181. package/esm2015/lib/Shared/components/app-base-component.js +0 -198
  182. package/esm2015/lib/Shared/components/ng-tag-input.js +0 -323
  183. package/esm2015/lib/Shared/default_intl.js +0 -29
  184. package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
  185. package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
  186. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
  187. package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
  188. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -137
  189. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -248
  190. package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -176
  191. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -114
  192. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
  193. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -215
  194. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -178
  195. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -451
  196. package/esm2015/lib/controls/Form/Form.component.js +0 -106
  197. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +0 -222
  198. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
  199. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
  200. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
  201. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -430
  202. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -429
  203. package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
  204. package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
  205. package/esm2015/lib/controls/Phone/Phone.component.js +0 -119
  206. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -349
  207. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -108
  208. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -131
  209. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
  210. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
  211. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
  212. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
  213. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -268
  214. package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -191
  215. package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -262
  216. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -83
  217. package/esm2015/lib/controls/bbsf-controls.module.js +0 -243
  218. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
  219. package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
@@ -1,52 +1,83 @@
1
+ import * as i5$2 from '@fullcalendar/angular';
1
2
  import { FullCalendarModule } from '@fullcalendar/angular';
2
3
  import dayGridPlugin from '@fullcalendar/daygrid';
3
4
  import timeGridPlugin from '@fullcalendar/timegrid';
4
5
  import listPlugin from '@fullcalendar/list';
5
6
  import interactionPlugin from '@fullcalendar/interaction';
6
7
  import * as i0 from '@angular/core';
7
- import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, Directive, TemplateRef, ViewChildren, ComponentFactoryResolver, ViewContainerRef, Pipe, forwardRef, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
8
+ import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, forwardRef, Directive, ViewContainerRef, ViewChildren, Pipe, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
9
+ import * as i5$3 from 'ng-block-ui';
8
10
  import { BlockUIModule } from 'ng-block-ui';
9
- import { ControlContainer, Validators, FormControl, FormGroupDirective, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
10
- import { Http, HttpModule } from '@angular/http';
11
- import { Router, RouterModule } from '@angular/router';
11
+ import * as i2 from '@angular/forms';
12
+ import { Validators, FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule, FormGroupDirective } from '@angular/forms';
13
+ import * as i1 from '@angular/http';
14
+ import { HttpModule } from '@angular/http';
15
+ import * as i3$2 from '@angular/router';
16
+ import { RouterModule } from '@angular/router';
17
+ import * as i6$5 from 'ngx-toastr';
12
18
  import { ToastrModule } from 'ngx-toastr';
19
+ import * as i7$6 from 'ngx-permissions';
13
20
  import { NgxPermissionsModule } from 'ngx-permissions';
14
21
  import { OverlayModule } from '@angular/cdk/overlay';
22
+ import * as i8$2 from '@ngrx/store-devtools';
15
23
  import { StoreDevtoolsModule } from '@ngrx/store-devtools';
16
- import { DatePipe, CommonModule } from '@angular/common';
24
+ import * as i6 from '@angular/common';
25
+ import { CommonModule, DatePipe } from '@angular/common';
26
+ import * as i7$1 from 'ngx-intl-tel-input';
17
27
  import { SearchCountryField, NgxIntlTelInputModule } from 'ngx-intl-tel-input';
18
- import { UtilityService, ControlValidationService, BBSFTranslateService, RequestOptionsModel, RequestHandlerService, environment as environment$1, BBSFUtilitiesModule, ConfigurationService, EnvironmentService, AuthService } from '@bnsights/bbsf-utilities';
28
+ import * as i3 from '@bnsights/bbsf-utilities';
29
+ import { RequestOptionsModel, environment as environment$1, BBSFUtilitiesModule, UtilityService, ConfigurationService, EnvironmentService, AuthService } from '@bnsights/bbsf-utilities';
30
+ import * as i9 from 'ngx-bootstrap/datepicker';
19
31
  import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
32
+ import * as i7 from 'ng-pick-datetime';
33
+ import { OwlDateTimeIntl, OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
20
34
  import { Subject, Observable, noop as noop$1, of, EMPTY, Subscription } from 'rxjs';
21
- import { OwlDateTimeIntl, DateTimeAdapter, OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
35
+ import * as i8 from '@angular/cdk/bidi';
36
+ import * as i6$1 from 'ng2-file-upload';
22
37
  import { FileUploader, FileLikeObject, FileUploadModule } from 'ng2-file-upload';
23
38
  import { __decorate, __awaiter } from 'tslib';
24
39
  import { Expose, plainToClass } from 'class-transformer';
40
+ import * as i6$2 from 'ng-inline-svg';
41
+ import { InlineSVGModule } from 'ng-inline-svg';
42
+ import * as i4$1 from 'ng-multiselect-dropdown';
25
43
  import { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';
44
+ import * as i6$3 from '@ng-select/ng-select';
45
+ import { NgSelectModule } from '@ng-select/ng-select';
26
46
  import { AngularMultiSelectModule } from 'angular2-multiselect-dropdown';
47
+ import * as i5 from '@angular/material/slide-toggle';
48
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
49
+ import * as i5$1 from '@kolkov/angular-editor';
50
+ import { AngularEditorModule } from '@kolkov/angular-editor';
27
51
  import { NgxSummernoteModule } from 'ngx-summernote';
52
+ import * as i7$4 from 'ngx-mask';
28
53
  import { NgxMaskModule } from 'ngx-mask';
29
54
  import { TooltipModule } from '@syncfusion/ej2-angular-popups';
30
- import { NgbModal, NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';
55
+ import * as i3$1 from '@ng-bootstrap/ng-bootstrap';
56
+ import { NgbModule, NgbModal, NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
57
+ import * as i6$4 from 'ngx-dropzone';
31
58
  import { NgxDropzoneModule } from 'ngx-dropzone';
59
+ import * as i7$2 from 'angular-cropperjs';
32
60
  import { AngularCropperjsModule } from 'angular-cropperjs';
33
61
  import { ImageCropperModule } from 'ngx-image-cropper';
62
+ import * as i1$3 from '@ngx-translate/core';
34
63
  import { TranslateService } from '@ngx-translate/core';
35
- import { HttpHeaders, HttpParams, HttpClient, HttpClientModule } from '@angular/common/http';
64
+ import * as i1$1 from '@angular/common/http';
65
+ import { HttpHeaders, HttpParams, HttpClientModule } from '@angular/common/http';
36
66
  import { NgxTypeaheadModule } from 'ngx-typeahead';
37
67
  import { switchMap, map, tap } from 'rxjs/operators';
68
+ import * as i7$3 from 'angular-ng-autocomplete';
69
+ import { AutocompleteLibModule } from 'angular-ng-autocomplete';
38
70
  import { NgxTagsInputModule } from 'ngx-tags-input';
39
- import { NgSelectModule } from '@ng-select/ng-select';
71
+ import * as i4 from 'ngx-bootstrap/typeahead';
72
+ import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
73
+ import * as i8$1 from 'ngx-infinite-scroll';
40
74
  import { InfiniteScrollModule } from 'ngx-infinite-scroll';
41
- import { LazyMapsAPILoader, MapsAPILoader, AgmCoreModule } from '@agm/core';
75
+ import * as i1$2 from '@agm/core';
76
+ import { LazyMapsAPILoader, AgmCoreModule } from '@agm/core';
77
+ import * as i7$5 from '@angular-material-extensions/google-maps-autocomplete';
42
78
  import { MatGoogleMapsAutocompleteModule } from '@angular-material-extensions/google-maps-autocomplete';
43
79
  import enGbLocale from '@fullcalendar/core/locales/en-gb';
44
80
  import ArLocale from '@fullcalendar/core/locales/ar';
45
- import { TypeaheadModule } from 'ngx-bootstrap/typeahead';
46
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
47
- import { AngularEditorModule } from '@kolkov/angular-editor';
48
- import { AutocompleteLibModule } from 'angular-ng-autocomplete';
49
- import { InlineSVGModule } from 'ng-inline-svg';
50
81
  import Swal from 'sweetalert2';
51
82
  import { SweetAlert2Module } from '@sweetalert2/ngx-sweetalert2';
52
83
  import { Title } from '@angular/platform-browser';
@@ -176,14 +207,81 @@ class ErrorMassageValidation {
176
207
  }
177
208
  }
178
209
  ErrorMassageValidation.controlContainerstatic = null;
179
- ErrorMassageValidation.decorators = [
180
- { type: Injectable }
181
- ];
182
- ErrorMassageValidation.ctorParameters = () => [
183
- { type: Http },
184
- { type: ControlContainer, decorators: [{ type: Optional }] },
185
- { type: UtilityService }
186
- ];
210
+ ErrorMassageValidation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ErrorMassageValidation, deps: [{ token: i1.Http }, { token: i2.ControlContainer, optional: true }, { token: i3.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
211
+ ErrorMassageValidation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ErrorMassageValidation });
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ErrorMassageValidation, decorators: [{
213
+ type: Injectable
214
+ }], ctorParameters: function () {
215
+ return [{ type: i1.Http }, { type: i2.ControlContainer, decorators: [{
216
+ type: Optional
217
+ }] }, { type: i3.UtilityService }];
218
+ } });
219
+
220
+ var PickerType;
221
+ (function (PickerType) {
222
+ PickerType[PickerType["Both"] = 1] = "Both";
223
+ PickerType[PickerType["Calendar"] = 2] = "Calendar";
224
+ PickerType[PickerType["Timer"] = 3] = "Timer";
225
+ })(PickerType || (PickerType = {}));
226
+
227
+ var StartView;
228
+ (function (StartView) {
229
+ StartView[StartView["Month"] = 1] = "Month";
230
+ StartView[StartView["Year"] = 2] = "Year";
231
+ StartView[StartView["MultiYear"] = 3] = "MultiYear";
232
+ })(StartView || (StartView = {}));
233
+
234
+ var SelectMode;
235
+ (function (SelectMode) {
236
+ SelectMode[SelectMode["Single"] = 1] = "Single";
237
+ SelectMode[SelectMode["Range"] = 2] = "Range";
238
+ })(SelectMode || (SelectMode = {}));
239
+
240
+ // here is the default text string - just adjust the strings to reflect your preferred language
241
+ class DefaultIntl extends OwlDateTimeIntl {
242
+ constructor(utilityService) {
243
+ super();
244
+ this.utilityService = utilityService;
245
+ /** A label for the range 'from' in picker info */
246
+ this.rangeFromLabel = this.utilityService.getResourceValue('From');
247
+ /** A label for the range 'to' in picker info */
248
+ this.rangeToLabel = this.utilityService.getResourceValue('To');
249
+ /** A label for the cancel button */
250
+ this.cancelBtnLabel = this.utilityService.getResourceValue('Cancel');
251
+ /** A label for the set button */
252
+ this.setBtnLabel = this.utilityService.getResourceValue('Save');
253
+ /** A label for the hour12 button (AM) */
254
+ this.hour12AMLabel = this.utilityService.getResourceValue('AM');
255
+ /** A label for the hour12 button (PM) */
256
+ this.hour12PMLabel = this.utilityService.getResourceValue('PM');
257
+ }
258
+ }
259
+ DefaultIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl, deps: [{ token: i3.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
260
+ DefaultIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl });
261
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl, decorators: [{
262
+ type: Injectable
263
+ }], ctorParameters: function () { return [{ type: i3.UtilityService }]; } });
264
+
265
+ class OnPagingFiltersChangeService {
266
+ constructor() {
267
+ this.subject = new Subject();
268
+ }
269
+ ChangeValue(value) {
270
+ this.subject.next(value);
271
+ }
272
+ ClearValue() {
273
+ this.subject.next();
274
+ }
275
+ GetValue() {
276
+ return this.subject.asObservable();
277
+ }
278
+ }
279
+ OnPagingFiltersChangeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: OnPagingFiltersChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
280
+ OnPagingFiltersChangeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: OnPagingFiltersChangeService, providedIn: 'root' });
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: OnPagingFiltersChangeService, decorators: [{
282
+ type: Injectable,
283
+ args: [{ providedIn: 'root' }]
284
+ }] });
187
285
 
188
286
  var InputType;
189
287
  (function (InputType) {
@@ -344,79 +442,11 @@ class ControlUtility {
344
442
  FormControl.markAsTouched();
345
443
  }
346
444
  }
347
- ControlUtility.decorators = [
348
- { type: Injectable }
349
- ];
350
- ControlUtility.ctorParameters = () => [
351
- { type: ErrorMassageValidation },
352
- { type: ControlValidationService },
353
- { type: UtilityService }
354
- ];
355
-
356
- var PickerType;
357
- (function (PickerType) {
358
- PickerType[PickerType["Both"] = 1] = "Both";
359
- PickerType[PickerType["Calendar"] = 2] = "Calendar";
360
- PickerType[PickerType["Timer"] = 3] = "Timer";
361
- })(PickerType || (PickerType = {}));
362
-
363
- var StartView;
364
- (function (StartView) {
365
- StartView[StartView["Month"] = 1] = "Month";
366
- StartView[StartView["Year"] = 2] = "Year";
367
- StartView[StartView["MultiYear"] = 3] = "MultiYear";
368
- })(StartView || (StartView = {}));
369
-
370
- var SelectMode;
371
- (function (SelectMode) {
372
- SelectMode[SelectMode["Single"] = 1] = "Single";
373
- SelectMode[SelectMode["Range"] = 2] = "Range";
374
- })(SelectMode || (SelectMode = {}));
375
-
376
- class OnPagingFiltersChangeService {
377
- constructor() {
378
- this.subject = new Subject();
379
- }
380
- ChangeValue(value) {
381
- this.subject.next(value);
382
- }
383
- ClearValue() {
384
- this.subject.next();
385
- }
386
- GetValue() {
387
- return this.subject.asObservable();
388
- }
389
- }
390
- OnPagingFiltersChangeService.ɵprov = i0.ɵɵdefineInjectable({ factory: function OnPagingFiltersChangeService_Factory() { return new OnPagingFiltersChangeService(); }, token: OnPagingFiltersChangeService, providedIn: "root" });
391
- OnPagingFiltersChangeService.decorators = [
392
- { type: Injectable, args: [{ providedIn: 'root' },] }
393
- ];
394
-
395
- // here is the default text string - just adjust the strings to reflect your preferred language
396
- class DefaultIntl extends OwlDateTimeIntl {
397
- constructor(utilityService) {
398
- super();
399
- this.utilityService = utilityService;
400
- /** A label for the range 'from' in picker info */
401
- this.rangeFromLabel = this.utilityService.getResourceValue('From');
402
- /** A label for the range 'to' in picker info */
403
- this.rangeToLabel = this.utilityService.getResourceValue('To');
404
- /** A label for the cancel button */
405
- this.cancelBtnLabel = this.utilityService.getResourceValue('Cancel');
406
- /** A label for the set button */
407
- this.setBtnLabel = this.utilityService.getResourceValue('Save');
408
- /** A label for the hour12 button (AM) */
409
- this.hour12AMLabel = this.utilityService.getResourceValue('AM');
410
- /** A label for the hour12 button (PM) */
411
- this.hour12PMLabel = this.utilityService.getResourceValue('PM');
412
- }
413
- }
414
- DefaultIntl.decorators = [
415
- { type: Injectable }
416
- ];
417
- DefaultIntl.ctorParameters = () => [
418
- { type: UtilityService }
419
- ];
445
+ ControlUtility.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility, deps: [{ token: ErrorMassageValidation }, { token: i3.ControlValidationService }, { token: i3.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
446
+ ControlUtility.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility });
447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility, decorators: [{
448
+ type: Injectable
449
+ }], ctorParameters: function () { return [{ type: ErrorMassageValidation }, { type: i3.ControlValidationService }, { type: i3.UtilityService }]; } });
420
450
 
421
451
  class DateInputComponent {
422
452
  // tslint:disable-next-line: max-line-length
@@ -489,6 +519,12 @@ class DateInputComponent {
489
519
  DateInputComponent.controlContainerstatic = this.controlContainer;
490
520
  }
491
521
  ngOnInit() {
522
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
523
+ if (this.options.StartView == 3)
524
+ this.startView = 'multi-year';
525
+ else {
526
+ this.startView = StartView[this.options.StartView].toLowerCase();
527
+ }
492
528
  // Update the DateTimeAdapter Language with the current thread langauge
493
529
  this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
494
530
  this.controlValidationService.isCreatedBefor = false;
@@ -549,10 +585,10 @@ class DateInputComponent {
549
585
  }
550
586
  getStartView(type) {
551
587
  if (type == 3)
552
- return "multi-year";
588
+ return 'multi-year';
553
589
  else {
554
- let Value = StartView[type];
555
- return Value.toLowerCase();
590
+ const Value = StartView[type].toLowerCase();
591
+ return Value;
556
592
  }
557
593
  }
558
594
  onDateSelect(item) {
@@ -593,32 +629,26 @@ class DateInputComponent {
593
629
  }
594
630
  }
595
631
  DateInputComponent.controlContainerstatic = null;
596
- DateInputComponent.decorators = [
597
- { type: Component, args: [{
598
- selector: 'BBSF-DateTimePicker',
599
- template: "\r\n<div class=\"form-group bbsf-control bbsf-datetime-picker\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"getStartView(options.StartView)\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n",
600
- providers: [
601
- { provide: OwlDateTimeIntl, useClass: DefaultIntl }
602
- ]
603
- },] }
604
- ];
605
- DateInputComponent.ctorParameters = () => [
606
- { type: DatePipe },
607
- { type: OnPagingFiltersChangeService },
608
- { type: ErrorMassageValidation },
609
- { type: ControlUtility },
610
- { type: ControlContainer, decorators: [{ type: Optional }] },
611
- { type: FormGroupDirective },
612
- { type: UtilityService },
613
- { type: BBSFTranslateService },
614
- { type: ControlValidationService },
615
- { type: DateTimeAdapter }
616
- ];
617
- DateInputComponent.propDecorators = {
618
- group: [{ type: Input }],
619
- options: [{ type: Input }],
620
- OnChange: [{ type: Output }]
621
- };
632
+ DateInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateInputComponent, deps: [{ token: i6.DatePipe }, { token: OnPagingFiltersChangeService }, { token: ErrorMassageValidation }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }, { token: i7.DateTimeAdapter }], target: i0.ɵɵFactoryTarget.Component });
633
+ DateInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DateInputComponent, selector: "BBSF-DateTimePicker", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, providers: [
634
+ { provide: OwlDateTimeIntl, useClass: DefaultIntl }
635
+ ], ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-datetime-picker\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n [dir]=\"textDir\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"startView\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", components: [{ type: i7.OwlDateTimeComponent, selector: "owl-date-time", inputs: ["startAt", "pickerType", "pickerMode", "disabled", "opened", "backdropClass", "panelClass", "scrollStrategy"], outputs: ["afterPickerClosed", "afterPickerOpen", "yearSelected", "monthSelected"], exportAs: ["owlDateTime"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.OwlDateTimeInputDirective, selector: "input[owlDateTime]", inputs: ["rangeSeparator", "owlDateTime", "owlDateTimeFilter", "min", "max", "selectMode", "value", "values", "_disabled"], outputs: ["dateTimeChange", "dateTimeInput"], exportAs: ["owlDateTimeInput"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.OwlDateTimeTriggerDirective, selector: "[owlDateTimeTrigger]", inputs: ["disabled", "owlDateTimeTrigger"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
636
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
637
+ type: Component,
638
+ args: [{ selector: 'BBSF-DateTimePicker', providers: [
639
+ { provide: OwlDateTimeIntl, useClass: DefaultIntl }
640
+ ], template: "\r\n<div class=\"form-group bbsf-control bbsf-datetime-picker\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n [dir]=\"textDir\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"startView\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n <!--icon-->\r\n <span class=\"copy-clipboard\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
641
+ }], ctorParameters: function () {
642
+ return [{ type: i6.DatePipe }, { type: OnPagingFiltersChangeService }, { type: ErrorMassageValidation }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
643
+ type: Optional
644
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }, { type: i7.DateTimeAdapter }];
645
+ }, propDecorators: { group: [{
646
+ type: Input
647
+ }], options: [{
648
+ type: Input
649
+ }], OnChange: [{
650
+ type: Output
651
+ }] } });
622
652
 
623
653
  class FileUploadModel {
624
654
  }
@@ -668,10 +698,12 @@ class GlobalSettings {
668
698
  this.DefaultImageSrc = "./src/assets/images/uploadimg.png";
669
699
  }
670
700
  }
671
- GlobalSettings.ɵprov = i0.ɵɵdefineInjectable({ factory: function GlobalSettings_Factory() { return new GlobalSettings(); }, token: GlobalSettings, providedIn: "root" });
672
- GlobalSettings.decorators = [
673
- { type: Injectable, args: [{ providedIn: 'root' },] }
674
- ];
701
+ GlobalSettings.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GlobalSettings, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
702
+ GlobalSettings.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GlobalSettings, providedIn: 'root' });
703
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GlobalSettings, decorators: [{
704
+ type: Injectable,
705
+ args: [{ providedIn: 'root' }]
706
+ }] });
675
707
 
676
708
  class FileUploadComponent {
677
709
  constructor(controlContainer, MultipleFileUplaodControlHost, controlUtility, UtilityService, controlValidationService, globalSettings) {
@@ -1082,7 +1114,7 @@ class FileUploadComponent {
1082
1114
  this.multipleFileUploadModel.UploadedFiles =
1083
1115
  this.multipleFileUploadModel.UploadedFiles.filter((Object) => Object.NameWithExtension != item._file.name);
1084
1116
  if ((this.multipleFileUploadModel.UploadedFiles == null ||
1085
- this.multipleFileUploadModel.UploadedFiles == []) &&
1117
+ this.multipleFileUploadModel.UploadedFiles.length == 0) &&
1086
1118
  this.options.IsRequired) {
1087
1119
  this.fileUploadFormControl.markAsTouched();
1088
1120
  this.fileUploadFormControl.invalid;
@@ -1095,26 +1127,25 @@ class FileUploadComponent {
1095
1127
  }
1096
1128
  }
1097
1129
  FileUploadComponent.controlContainerstatic = null;
1098
- FileUploadComponent.decorators = [
1099
- { type: Component, args: [{
1100
- selector: 'BBSF-FileUplaod',
1101
- template: "<div class=\"form-group bbsf-control bbsf-file-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div ng2FileDrop class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n *ngIf=\"(options.IsDropZone)&&(!((options.IsMultipleFile==false)&&(uploader.queue.length)>0))\"\r\n [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\" (onFileDrop)=\"onFileChange()\"\r\n (fileOver)=\"fileOverAnother($event)\" [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange()\" id=\"{{options.Name}}\" multiple=\"{{options.IsMultipleFile?'multiple':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\" formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"DragAndDropHere\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\" *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"(!options.IsDropZone)&&!(isHideInput())\" (click)=\"fileInput.click();\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"Upload\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\" *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n <input ng2FileSelect [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"fileSelector customFileUploadPlacment hidden v-required-multiplefiles d-none\"\r\n multiple=\"{{options.IsMultipleFile?'multiple':''}}\" name=\"file\" type=\"file\" value=\"\"\r\n autocomplete=\"off\" (change)=\"onFileChange()\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n id=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n </div>\r\n </div>\r\n <!--items uploaded-->\r\n <div class=\"uploaded-items\">\r\n <div class=\"btn-group\" *ngFor=\"let item of uploader.queue\">\r\n <button type=\"button\" class=\"btn btn-download-file btn-sm\" href=\"{{ item?._file?.url}}\" download>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M21 22H3C2.4 22 2 21.6 2 21C2 20.4 2.4 20 3 20H21C21.6 20 22 20.4 22 21C22 21.6 21.6 22 21 22ZM13 13.4V3C13 2.4 12.6 2 12 2C11.4 2 11 2.4 11 3V13.4H13Z\" fill=\"currentColor\"></path>\r\n <path opacity=\"0.3\" d=\"M7 13.4H17L12.7 17.7C12.3 18.1 11.7 18.1 11.3 17.7L7 13.4Z\" fill=\"currentColor\"></path>\r\n </svg>\r\n <span class=\"file-name\">{{ item?.file?.name }}</span>\r\n </button>\r\n <button class=\"btn btn-download-file btn-sm btn-danger\"\r\n (click)=\"item.remove();removeFromControlValue(item)\">\r\n <i class=\"fa fa-times px-0\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(fileUploadFormControl.invalid && fileUploadFormControl.touched)\">\r\n {{getErrorValidation(fileUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\"> {{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n\r\n"
1102
- },] }
1103
- ];
1104
- FileUploadComponent.ctorParameters = () => [
1105
- { type: ControlContainer, decorators: [{ type: Optional }] },
1106
- { type: FormGroupDirective },
1107
- { type: ControlUtility },
1108
- { type: UtilityService },
1109
- { type: ControlValidationService },
1110
- { type: GlobalSettings }
1111
- ];
1112
- FileUploadComponent.propDecorators = {
1113
- fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
1114
- group: [{ type: Input }],
1115
- options: [{ type: Input }],
1116
- OnChange: [{ type: Output }]
1117
- };
1130
+ FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FileUploadComponent, deps: [{ token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: ControlUtility }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
1131
+ FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FileUploadComponent, selector: "BBSF-FileUplaod", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-file-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div ng2FileDrop class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n *ngIf=\"(options.IsDropZone)&&(!((options.IsMultipleFile==false)&&(uploader.queue.length)>0))\"\r\n [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\" (onFileDrop)=\"onFileChange()\"\r\n (fileOver)=\"fileOverAnother($event)\" [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange()\" id=\"{{options.Name}}\" multiple=\"{{options.IsMultipleFile?'multiple':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\" formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"DragAndDropHere\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\" *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"(!options.IsDropZone)&&!(isHideInput())\" (click)=\"fileInput.click();\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"Upload\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\" *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n <input ng2FileSelect [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"fileSelector customFileUploadPlacment hidden v-required-multiplefiles d-none\"\r\n multiple=\"{{options.IsMultipleFile?'multiple':''}}\" name=\"file\" type=\"file\" value=\"\"\r\n autocomplete=\"off\" (change)=\"onFileChange()\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n id=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n </div>\r\n </div>\r\n <!--items uploaded-->\r\n <div class=\"uploaded-items\">\r\n <div class=\"btn-group\" *ngFor=\"let item of uploader.queue\">\r\n <button type=\"button\" class=\"btn btn-download-file btn-sm\" href=\"{{ item?._file?.webkitRelativePath}}\" download>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M21 22H3C2.4 22 2 21.6 2 21C2 20.4 2.4 20 3 20H21C21.6 20 22 20.4 22 21C22 21.6 21.6 22 21 22ZM13 13.4V3C13 2.4 12.6 2 12 2C11.4 2 11 2.4 11 3V13.4H13Z\" fill=\"currentColor\"></path>\r\n <path opacity=\"0.3\" d=\"M7 13.4H17L12.7 17.7C12.3 18.1 11.7 18.1 11.3 17.7L7 13.4Z\" fill=\"currentColor\"></path>\r\n </svg>\r\n <span class=\"file-name\">{{ item?.file?.name }}</span>\r\n </button>\r\n <button class=\"btn btn-download-file btn-sm btn-danger\"\r\n (click)=\"item.remove();removeFromControlValue(item)\">\r\n <i class=\"fa fa-times px-0\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(fileUploadFormControl.invalid && fileUploadFormControl.touched)\">\r\n {{getErrorValidation(fileUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\"> {{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6$1.FileDropDirective, selector: "[ng2FileDrop]", inputs: ["uploader"], outputs: ["fileOver", "onFileDrop"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6$1.FileSelectDirective, selector: "[ng2FileSelect]", inputs: ["uploader"], outputs: ["onFileSelected"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
1132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FileUploadComponent, decorators: [{
1133
+ type: Component,
1134
+ args: [{ selector: 'BBSF-FileUplaod', template: "<div class=\"form-group bbsf-control bbsf-file-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div ng2FileDrop class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n *ngIf=\"(options.IsDropZone)&&(!((options.IsMultipleFile==false)&&(uploader.queue.length)>0))\"\r\n [ngClass]=\"{'another-file-over-class': hasAnotherDropZoneOver}\" (onFileDrop)=\"onFileChange()\"\r\n (fileOver)=\"fileOverAnother($event)\" [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange()\" id=\"{{options.Name}}\" multiple=\"{{options.IsMultipleFile?'multiple':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" type=\"file\" formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"DragAndDropHere\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\" *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div class=\"bbsf-input-container\" *ngIf=\"(!options.IsDropZone)&&!(isHideInput())\" (click)=\"fileInput.click();\">\r\n <div class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg text-center\">{{UtilityService.getResourceValue(\"Upload\")}} </div>\r\n <div class=\"bbsf-validation-msg text-center\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n <div class=\"bbsf-validation-msg ng-star-inserted text-center text-danger\" *ngIf=\"ValidationCountMessage &&options.IsMultipleFile &&options.MaxNoOfFiles>0\" [innerHTML]=\"ValidationCountMessage\"></div>\r\n </div>\r\n </div>\r\n <input ng2FileSelect [uploader]=\"uploader\" [accept]=\"AcceptedType\"\r\n class=\"fileSelector customFileUploadPlacment hidden v-required-multiplefiles d-none\"\r\n multiple=\"{{options.IsMultipleFile?'multiple':''}}\" name=\"file\" type=\"file\" value=\"\"\r\n autocomplete=\"off\" (change)=\"onFileChange()\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n id=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" #fileInput\r\n [class.is-invalid]=\"fileUploadFormControl.invalid && fileUploadFormControl.touched\">\r\n </div>\r\n </div>\r\n <!--items uploaded-->\r\n <div class=\"uploaded-items\">\r\n <div class=\"btn-group\" *ngFor=\"let item of uploader.queue\">\r\n <button type=\"button\" class=\"btn btn-download-file btn-sm\" href=\"{{ item?._file?.webkitRelativePath}}\" download>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M21 22H3C2.4 22 2 21.6 2 21C2 20.4 2.4 20 3 20H21C21.6 20 22 20.4 22 21C22 21.6 21.6 22 21 22ZM13 13.4V3C13 2.4 12.6 2 12 2C11.4 2 11 2.4 11 3V13.4H13Z\" fill=\"currentColor\"></path>\r\n <path opacity=\"0.3\" d=\"M7 13.4H17L12.7 17.7C12.3 18.1 11.7 18.1 11.3 17.7L7 13.4Z\" fill=\"currentColor\"></path>\r\n </svg>\r\n <span class=\"file-name\">{{ item?.file?.name }}</span>\r\n </button>\r\n <button class=\"btn btn-download-file btn-sm btn-danger\"\r\n (click)=\"item.remove();removeFromControlValue(item)\">\r\n <i class=\"fa fa-times px-0\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(fileUploadFormControl.invalid && fileUploadFormControl.touched)\">\r\n {{getErrorValidation(fileUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\"> {{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n\r\n" }]
1135
+ }], ctorParameters: function () {
1136
+ return [{ type: i2.ControlContainer, decorators: [{
1137
+ type: Optional
1138
+ }] }, { type: i2.FormGroupDirective }, { type: ControlUtility }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
1139
+ }, propDecorators: { fileInput: [{
1140
+ type: ViewChild,
1141
+ args: ['fileInput', { static: false }]
1142
+ }], group: [{
1143
+ type: Input
1144
+ }], options: [{
1145
+ type: Input
1146
+ }], OnChange: [{
1147
+ type: Output
1148
+ }] } });
1118
1149
 
1119
1150
  class EnglishArabicDTO {
1120
1151
  }
@@ -1523,26 +1554,22 @@ class MultiLingualTextBoxComponent {
1523
1554
  }
1524
1555
  }
1525
1556
  MultiLingualTextBoxComponent.controlContainerstatic = null;
1526
- MultiLingualTextBoxComponent.decorators = [
1527
- { type: Component, args: [{
1528
- selector: 'BBSF-MultiLingualTextBox',
1529
- template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox form-group mb-0\" [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEnglishTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"ltr\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\"(click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
1530
- },] }
1531
- ];
1532
- MultiLingualTextBoxComponent.ctorParameters = () => [
1533
- { type: FormGroupDirective },
1534
- { type: ControlContainer, decorators: [{ type: Optional }] },
1535
- { type: ControlUtility },
1536
- { type: UtilityService },
1537
- { type: BBSFTranslateService },
1538
- { type: ControlValidationService },
1539
- { type: GlobalSettings }
1540
- ];
1541
- MultiLingualTextBoxComponent.propDecorators = {
1542
- group: [{ type: Input }],
1543
- options: [{ type: Input }],
1544
- OnChange: [{ type: Output }]
1545
- };
1557
+ MultiLingualTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiLingualTextBoxComponent, deps: [{ token: i2.FormGroupDirective }, { token: i2.ControlContainer, optional: true }, { token: ControlUtility }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
1558
+ MultiLingualTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox form-group mb-0\" [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEnglishTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"ltr\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\"(click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6$2.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
1559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiLingualTextBoxComponent, decorators: [{
1560
+ type: Component,
1561
+ args: [{ selector: 'BBSF-MultiLingualTextBox', template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textbox form-group mb-0\" [formGroup]=\"MultiLanguagegroup\">\r\n <div class=\"row\">\r\n <!--English textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEnglishTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'left-icon':'right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"ltr\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"English\"\r\n [hidden]=\"options.IsHideEnglishFields\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"EnglishFormControl.invalid && EnglishFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.English\" [(ngModel)]=\"options.Value.English\"\r\n #userinputEnglish>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishFormControl.invalid && EnglishFormControl.touched)\">\r\n {{getErrorValidation(EnglishFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextBox\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPositionEN==1)?'right-icon':'left-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control\" dir=\"rtl\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicFormControl.invalid && ArabicFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (keyup)=\"onTextChange()\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n autocomplete=\"{{options.AutoComplete}}\"\r\n id=\"{{options.Name}}.Arabic\"\r\n (change)=\"trimControlValue('Ar')\" #userinputArabic>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\"(click)=\"copyInputMessage(userinputArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicFormControl.invalid && ArabicFormControl.touched)\">\r\n {{getErrorValidation(ArabicFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"group.valid\">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n" }]
1562
+ }], ctorParameters: function () {
1563
+ return [{ type: i2.FormGroupDirective }, { type: i2.ControlContainer, decorators: [{
1564
+ type: Optional
1565
+ }] }, { type: ControlUtility }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
1566
+ }, propDecorators: { group: [{
1567
+ type: Input
1568
+ }], options: [{
1569
+ type: Input
1570
+ }], OnChange: [{
1571
+ type: Output
1572
+ }] } });
1546
1573
 
1547
1574
  class TextAreaComponent {
1548
1575
  constructor(controlUtility, controlContainer, TextAreaControlHost, UtilityService, controlValidationService, globalSettings) {
@@ -1591,6 +1618,7 @@ class TextAreaComponent {
1591
1618
  TextAreaComponent.controlContainerstatic = this.controlContainer;
1592
1619
  }
1593
1620
  ngOnInit() {
1621
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
1594
1622
  this.controlValidationService.isCreatedBefor = false;
1595
1623
  this.group.addControl(this.options.Name, new FormControl(''));
1596
1624
  this.TextAreaFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
@@ -1710,25 +1738,22 @@ class TextAreaComponent {
1710
1738
  }
1711
1739
  }
1712
1740
  TextAreaComponent.controlContainerstatic = null;
1713
- TextAreaComponent.decorators = [
1714
- { type: Component, args: [{
1715
- selector: 'BBSF-TextArea',
1716
- template: "<div class=\"form-group bbsf-control bbsf-textarea\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control {{options.ExtraClasses}}\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"TextAreaFormControl.invalid && TextAreaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" rows=\"{{options.Rows}}\" (keyup)=\"onTextChange()\" cols=\"{{options.Cols}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
1717
- },] }
1718
- ];
1719
- TextAreaComponent.ctorParameters = () => [
1720
- { type: ControlUtility },
1721
- { type: ControlContainer, decorators: [{ type: Optional }] },
1722
- { type: FormGroupDirective },
1723
- { type: UtilityService },
1724
- { type: ControlValidationService },
1725
- { type: GlobalSettings }
1726
- ];
1727
- TextAreaComponent.propDecorators = {
1728
- group: [{ type: Input }],
1729
- options: [{ type: Input }],
1730
- OnChange: [{ type: Output }]
1731
- };
1741
+ TextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaComponent, deps: [{ token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
1742
+ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextAreaComponent, selector: "BBSF-TextArea", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-textarea\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control {{options.ExtraClasses}}\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n [dir]=\"textDir\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"TextAreaFormControl.invalid && TextAreaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" rows=\"{{options.Rows}}\" (keyup)=\"onTextChange()\" cols=\"{{options.Cols}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
1743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextAreaComponent, decorators: [{
1744
+ type: Component,
1745
+ args: [{ selector: 'BBSF-TextArea', template: "<div class=\"form-group bbsf-control bbsf-textarea\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control {{options.ExtraClasses}}\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n [dir]=\"textDir\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"TextAreaFormControl.invalid && TextAreaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" rows=\"{{options.Rows}}\" (keyup)=\"onTextChange()\" cols=\"{{options.Cols}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #TextAreainput></textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(TextAreainput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\"\r\n *ngIf=\"(TextAreaFormControl.invalid && TextAreaFormControl.touched)\">\r\n {{getErrorValidation(TextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
1746
+ }], ctorParameters: function () {
1747
+ return [{ type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
1748
+ type: Optional
1749
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
1750
+ }, propDecorators: { group: [{
1751
+ type: Input
1752
+ }], options: [{
1753
+ type: Input
1754
+ }], OnChange: [{
1755
+ type: Output
1756
+ }] } });
1732
1757
 
1733
1758
  class MultiLingualTextAreaComponent {
1734
1759
  constructor(MultiLingualTextAreaFormControlHost, controlContainer, controlUtility, UtilityService, controlValidationService, globalSettings) {
@@ -2130,25 +2155,22 @@ class MultiLingualTextAreaComponent {
2130
2155
  }
2131
2156
  }
2132
2157
  MultiLingualTextAreaComponent.controlContainerstatic = null;
2133
- MultiLingualTextAreaComponent.decorators = [
2134
- { type: Component, args: [{
2135
- selector: 'BBSF-MultiLingualTextArea',
2136
- template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea form-group mb-0\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n"
2137
- },] }
2138
- ];
2139
- MultiLingualTextAreaComponent.ctorParameters = () => [
2140
- { type: FormGroupDirective },
2141
- { type: ControlContainer, decorators: [{ type: Optional }] },
2142
- { type: ControlUtility },
2143
- { type: UtilityService },
2144
- { type: ControlValidationService },
2145
- { type: GlobalSettings }
2146
- ];
2147
- MultiLingualTextAreaComponent.propDecorators = {
2148
- group: [{ type: Input }],
2149
- options: [{ type: Input }],
2150
- OnChange: [{ type: Output }]
2151
- };
2158
+ MultiLingualTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiLingualTextAreaComponent, deps: [{ token: i2.FormGroupDirective }, { token: i2.ControlContainer, optional: true }, { token: ControlUtility }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
2159
+ MultiLingualTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea form-group mb-0\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
2160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiLingualTextAreaComponent, decorators: [{
2161
+ type: Component,
2162
+ args: [{ selector: 'BBSF-MultiLingualTextArea', template: "<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control bbsf-multilang-textarea form-group mb-0\" [formGroup]=\"MultiLanguageTextAreagroup\">\r\n <div class=\"row\">\r\n <!--English textarea-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowEngishTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}} <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInEnglish\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control\" dir=\"ltr\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onEnglishFocus(true)\" (focusout)=\"onEnglishFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"English\" [hidden]=\"options.IsHideEnglishFields\"\r\n [class.is-invalid]=\"EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched\"\r\n placeholder=\"{{options.EnglishPlaceholder}}\" (change)=\"trimControlValue('En')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.English\"\r\n (keydown)=\"EnglishWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaEnglish>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideEnglishFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaEnglish)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowEnglishWordCount\">{{EnglishWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showEnglishCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': englishCharsLimitMsgClass === 'warning', 'badge-light-danger' : englishCharsLimitMsgClass === 'danger' }\">\r\n {{englishMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishTextAreaFormControl.invalid && EnglishTextAreaFormControl.touched)\">\r\n {{getErrorValidation(EnglishTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n <!--Arabic textbox-->\r\n <div [ngClass]=\"(options.MultiControlPlacementType==1)?'col-md-12':'col-md-6'\" *ngIf=\"ShowArabicTextArea\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--input-->\r\n <textarea class=\"form-control bnsights-control\" dir=\"rtl\" rows=\"{{options.Rows}}\" cols=\"{{options.Cols}}\"\r\n (focus)=\"onArabicFocus(true)\" (focusout)=\"onArabicFocus(false)\"\r\n [hidden]=\"options.IsHideArabicFields\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"Arabic\" rows=\"{{options.Rows}}\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n [class.is-invalid]=\"ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched\"\r\n placeholder=\"{{options.ArabicPlaceholder}}\" (change)=\"trimControlValue('Ar')\"\r\n (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value.Arabic\"\r\n (keydown)=\"ArabicWordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinputTextAreaArabic>\r\n </textarea>\r\n <!--CopyToClipboard-->\r\n <div class=\"copy-clipboard\" [hidden]=\"options.IsHideArabicFields\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinputTextAreaArabic)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowArabicWordCount\">{{ArabicWordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showArabicCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': arabicCharsLimitMsgClass === 'warning', 'badge-light-danger' : arabicCharsLimitMsgClass === 'danger' }\">\r\n {{arabicMaxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicTextAreaFormControl.invalid && ArabicTextAreaFormControl.touched)\">\r\n {{getErrorValidation(ArabicTextAreaFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n" }]
2163
+ }], ctorParameters: function () {
2164
+ return [{ type: i2.FormGroupDirective }, { type: i2.ControlContainer, decorators: [{
2165
+ type: Optional
2166
+ }] }, { type: ControlUtility }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
2167
+ }, propDecorators: { group: [{
2168
+ type: Input
2169
+ }], options: [{
2170
+ type: Input
2171
+ }], OnChange: [{
2172
+ type: Output
2173
+ }] } });
2152
2174
 
2153
2175
  class CheckBoxComponent {
2154
2176
  // tslint:disable-next-line: max-line-length
@@ -2189,6 +2211,7 @@ class CheckBoxComponent {
2189
2211
  CheckBoxComponent.controlContainerstatic = this.controlContainer;
2190
2212
  }
2191
2213
  ngOnInit() {
2214
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
2192
2215
  this.controlValidationService.isCreatedBefor = false;
2193
2216
  this.group.addControl(this.options.Name, new FormControl(''));
2194
2217
  this.CheckBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
@@ -2239,26 +2262,22 @@ class CheckBoxComponent {
2239
2262
  }
2240
2263
  }
2241
2264
  CheckBoxComponent.controlContainerstatic = null;
2242
- CheckBoxComponent.decorators = [
2243
- { type: Component, args: [{
2244
- // tslint:disable-next-line: component-selector
2245
- selector: 'BBSF-CheckBox',
2246
- template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
2247
- },] }
2248
- ];
2249
- CheckBoxComponent.ctorParameters = () => [
2250
- { type: ControlUtility },
2251
- { type: ControlContainer, decorators: [{ type: Optional }] },
2252
- { type: FormGroupDirective },
2253
- { type: UtilityService },
2254
- { type: BBSFTranslateService },
2255
- { type: ControlValidationService }
2256
- ];
2257
- CheckBoxComponent.propDecorators = {
2258
- group: [{ type: Input }],
2259
- options: [{ type: Input }],
2260
- OnChange: [{ type: Output }]
2261
- };
2265
+ CheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CheckBoxComponent, deps: [{ token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component });
2266
+ CheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", 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 class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
2267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CheckBoxComponent, decorators: [{
2268
+ type: Component,
2269
+ 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 class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
2270
+ }], ctorParameters: function () {
2271
+ return [{ type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
2272
+ type: Optional
2273
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }];
2274
+ }, propDecorators: { group: [{
2275
+ type: Input
2276
+ }], options: [{
2277
+ type: Input
2278
+ }], OnChange: [{
2279
+ type: Output
2280
+ }] } });
2262
2281
 
2263
2282
  class DropdownListComponent {
2264
2283
  // tslint:disable-next-line: max-line-length
@@ -2309,6 +2328,7 @@ class DropdownListComponent {
2309
2328
  //console.log(environment["BBSF_AdminUrl"]);
2310
2329
  }
2311
2330
  ngOnInit() {
2331
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
2312
2332
  this.controlValidationService.isCreatedBefor = false;
2313
2333
  this.SelectedList = this.options.SelectedItems;
2314
2334
  this.dropdownSettings = {
@@ -2402,35 +2422,31 @@ class DropdownListComponent {
2402
2422
  }
2403
2423
  }
2404
2424
  onDropDownClose() {
2405
- if ((this.SelectedItems == undefined || this.SelectedItems == []) && this.options.IsRequired == true) {
2425
+ if ((this.SelectedItems == undefined || this.SelectedItems.length == 0) && this.options.IsRequired == true) {
2406
2426
  this.DropdownListFormControl.markAsTouched();
2407
2427
  this.DropdownListFormControl.invalid;
2408
2428
  }
2409
2429
  }
2410
2430
  }
2411
2431
  DropdownListComponent.controlContainerstatic = null;
2412
- DropdownListComponent.decorators = [
2413
- { type: Component, args: [{
2414
- // tslint:disable-next-line: component-selector
2415
- selector: 'BBSF-DropdownList',
2416
- template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.DisableBootstrapSelect==false\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"options.NotFoundText\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n [selectableGroup]=\"true\" [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\"\r\n [(ngModel)]=\"options.SelectedItems\" (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.DisabledItemsTooltipValue : ''}}\" id={{item.key}}>{{item.value}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\" [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.key}}>{{item.value}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.DisableBootstrapSelect\" class=\"form-control\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" (change)=\"onItemSelect()\" [(ngModel)]=\"options.SelectedItems\" [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--{{UtilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.key}}\" [ngValue]=\"item.key\">\r\n {{item.value}}\r\n </option>\r\n </select>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n"
2417
- },] }
2418
- ];
2419
- DropdownListComponent.ctorParameters = () => [
2420
- { type: OnPagingFiltersChangeService },
2421
- { type: ControlUtility },
2422
- { type: ControlContainer, decorators: [{ type: Optional }] },
2423
- { type: FormGroupDirective },
2424
- { type: UtilityService },
2425
- { type: ControlValidationService },
2426
- { type: GlobalSettings }
2427
- ];
2428
- DropdownListComponent.propDecorators = {
2429
- group: [{ type: Input }],
2430
- options: [{ type: Input }],
2431
- OnChange: [{ type: Output }],
2432
- onClear: [{ type: Output }]
2433
- };
2432
+ DropdownListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DropdownListComponent, deps: [{ token: OnPagingFiltersChangeService }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
2433
+ DropdownListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange", onClear: "onClear" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.DisableBootstrapSelect==false\" [dir]=\"textDir\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"options.NotFoundText\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n [selectableGroup]=\"true\" [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\"\r\n [(ngModel)]=\"options.SelectedItems\" (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.DisabledItemsTooltipValue : ''}}\" id={{item.id}}>{{item.itemName}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\" [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.id}}>{{item.itemName}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.DisableBootstrapSelect\" class=\"form-control\"\r\n [dir]=\"textDir\" (change)=\"onItemSelect()\" [(ngModel)]=\"options.SelectedItems\" [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--{{UtilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.id}}\" [ngValue]=\"item.id\">\r\n {{item.itemName}}\r\n </option>\r\n </select>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n", components: [{ type: i6$3.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6$3.ɵf, selector: "[ng-option-tmp]" }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
2434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DropdownListComponent, decorators: [{
2435
+ type: Component,
2436
+ args: [{ selector: 'BBSF-DropdownList', template: "<div class=\"form-group bbsf-control bbsf-dropdown\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input enabled bootstrap select-->\r\n <ng-select class=\"form-control\" *ngIf=\"options.DisableBootstrapSelect==false\" [dir]=\"textDir\"\r\n [bindValue]=\"options.ItemTempletkey\" [bindLabel]=\"options.ItemTempletvalue\" [items]=\"options.DataSource\"\r\n [notFoundText]=\"options.NotFoundText\" [maxSelectedItems]=\"options.LimitSelection\"\r\n [searchable]=\"options.AllowSearchFilter\" [multiple]=\"!options.SingleSelection\" [readonly]=\"options.IsDisabled\"\r\n [clearable]=\"true\" placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n [selectableGroup]=\"true\" [selectableGroupAsModel]=\"false\" formControlName=\"{{options.Name}}\"\r\n [(ngModel)]=\"options.SelectedItems\" (change)=\"onItemSelect()\" (clear)=\"Clear()\"\r\n [class.is-invalid]=\"DropdownListFormControl.invalid && DropdownListFormControl.touched\"\r\n [closeOnSelect]=\"options.SingleSelection ? true : false\">\r\n <!--No checkbox-->\r\n <ng-template *ngIf=\"!options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <label class=\"bbsf-label\" title=\"{{item.disabled ? options.DisabledItemsTooltipValue : ''}}\" id={{item.id}}>{{item.itemName}}</label>\r\n </ng-template>\r\n <!--checkbox-->\r\n <ng-template *ngIf=\"options.ShowCheckbox\" ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\">\r\n <div class=\" bbsf-checkbox\">\r\n <div class=\"bbsf-input-container align-items-center\">\r\n <input class=\"bbsf-checkbox-input\" id=\"item-{{index}}\" type=\"checkbox\" [ngModelOptions]=\"{standalone: true}\" [ngModel]=\"item$.selected\" />\r\n <div class=\"label-subtext-container\">\r\n <label class=\"bbsf-label\" id={{item.id}}>{{item.itemName}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ng-select>\r\n <!--input disabled bootstrap select-->\r\n <select *ngIf=\"options.DisableBootstrapSelect\" class=\"form-control\"\r\n [dir]=\"textDir\" (change)=\"onItemSelect()\" [(ngModel)]=\"options.SelectedItems\" [disabled]=\"options.IsDisabled\" formControlName=\"{{options.Name}}\">\r\n <option value=\"\" disabled>--{{UtilityService.getResourceValue(\"select\")}}--</option>\r\n <option *ngFor=\"let item of options.DataSource\" value=\"{{item.id}}\" [ngValue]=\"item.id\">\r\n {{item.itemName}}\r\n </option>\r\n </select>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(DropdownListFormControl.invalid && DropdownListFormControl.touched)\">\r\n {{getErrorValidation(DropdownListFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n" }]
2437
+ }], ctorParameters: function () {
2438
+ return [{ type: OnPagingFiltersChangeService }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
2439
+ type: Optional
2440
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
2441
+ }, propDecorators: { group: [{
2442
+ type: Input
2443
+ }], options: [{
2444
+ type: Input
2445
+ }], OnChange: [{
2446
+ type: Output
2447
+ }], onClear: [{
2448
+ type: Output
2449
+ }] } });
2434
2450
 
2435
2451
  class PhoneComponent {
2436
2452
  // tslint:disable-next-line: max-line-length
@@ -2474,6 +2490,7 @@ class PhoneComponent {
2474
2490
  PhoneComponent.controlContainerstatic = this.controlContainer;
2475
2491
  }
2476
2492
  ngOnInit() {
2493
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
2477
2494
  this.controlValidationService.isCreatedBefor = false;
2478
2495
  this.group.addControl(this.options.Name, new FormControl(''));
2479
2496
  this.PhoneFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
@@ -2523,27 +2540,28 @@ class PhoneComponent {
2523
2540
  }
2524
2541
  this.OnChange.emit(originalValue);
2525
2542
  }
2543
+ getSelectedCountry(selectedCountry) {
2544
+ let value = selectedCountry;
2545
+ return value;
2546
+ }
2526
2547
  }
2527
2548
  PhoneComponent.controlContainerstatic = null;
2528
- PhoneComponent.decorators = [
2529
- { type: Component, args: [{
2530
- selector: 'BBSF-Phone',
2531
- template: "\r\n<div class=\"form-group bbsf-control bbsf-phone\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"options.ExtraClasses\" [preferredCountries]=\"options.PreferredCountries\"\r\n [enableAutoCountrySelect]=\"true\" [enablePlaceholder]=\"options.EnablePlaceholder\" [searchCountryFlag]=\"options.AllowSearch\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2, SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"options.SelectFirstCountry\" [selectedCountryISO]=\"options.SelectedCountryISO\"\r\n [separateDialCode]=\"separateDialCode\"\r\n [maxLength]=\"15\" [(ngModel)]=\"options.Value\"\r\n [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\"\r\n name=\"{{options.Name}}\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"PhoneFormControl.invalid && PhoneFormControl.touched\" aria-invalid=\"true\"\r\n class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(PhoneFormControl.invalid && PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
2532
- },] }
2533
- ];
2534
- PhoneComponent.ctorParameters = () => [
2535
- { type: ControlUtility },
2536
- { type: ControlContainer, decorators: [{ type: Optional }] },
2537
- { type: FormGroupDirective },
2538
- { type: UtilityService },
2539
- { type: ControlValidationService },
2540
- { type: GlobalSettings }
2541
- ];
2542
- PhoneComponent.propDecorators = {
2543
- group: [{ type: Input }],
2544
- options: [{ type: Input }],
2545
- OnChange: [{ type: Output }]
2546
- };
2549
+ PhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PhoneComponent, deps: [{ token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
2550
+ PhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PhoneComponent, selector: "BBSF-Phone", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-phone\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input [dir]=\"textDir\" [cssClass]=\"options.ExtraClasses\" [preferredCountries]=\"options.PreferredCountries\"\r\n [enableAutoCountrySelect]=\"true\" [enablePlaceholder]=\"options.EnablePlaceholder\" [searchCountryFlag]=\"options.AllowSearch\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2, SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"options.SelectFirstCountry\" [selectedCountryISO]=\"getSelectedCountry(options.SelectedCountryISO)\"\r\n [separateDialCode]=\"separateDialCode\"\r\n maxlength=\"15\" [(ngModel)]=\"options.Value\"\r\n [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\"\r\n name=\"{{options.Name}}\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"PhoneFormControl.invalid && PhoneFormControl.touched\" aria-invalid=\"true\"\r\n class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(PhoneFormControl.invalid && PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", components: [{ type: i7$1.NgxIntlTelInputComponent, selector: "ngx-intl-tel-input", inputs: ["value", "preferredCountries", "enablePlaceholder", "numberFormat", "cssClass", "onlyCountries", "enableAutoCountrySelect", "searchCountryFlag", "searchCountryField", "searchCountryPlaceholder", "maxLength", "selectFirstCountry", "phoneValidation", "inputId", "separateDialCode", "customPlaceholder", "selectedCountryISO"], outputs: ["countryChange"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
2551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PhoneComponent, decorators: [{
2552
+ type: Component,
2553
+ args: [{ selector: 'BBSF-Phone', template: "\r\n<div class=\"form-group bbsf-control bbsf-phone\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ngx-intl-tel-input [dir]=\"textDir\" [cssClass]=\"options.ExtraClasses\" [preferredCountries]=\"options.PreferredCountries\"\r\n [enableAutoCountrySelect]=\"true\" [enablePlaceholder]=\"options.EnablePlaceholder\" [searchCountryFlag]=\"options.AllowSearch\"\r\n [searchCountryField]=\"[SearchCountryField.Iso2, SearchCountryField.Name]\"\r\n [selectFirstCountry]=\"options.SelectFirstCountry\" [selectedCountryISO]=\"getSelectedCountry(options.SelectedCountryISO)\"\r\n [separateDialCode]=\"separateDialCode\"\r\n maxlength=\"15\" [(ngModel)]=\"options.Value\"\r\n [phoneValidation]=\"options.PhoneValidation\" [id]=\"options.Name\"\r\n name=\"{{options.Name}}\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"PhoneFormControl.invalid && PhoneFormControl.touched\" aria-invalid=\"true\"\r\n class=\"form-control\">\r\n </ngx-intl-tel-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(PhoneFormControl.invalid && PhoneFormControl.touched)\">\r\n {{getErrorValidation(PhoneFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
2554
+ }], ctorParameters: function () {
2555
+ return [{ type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
2556
+ type: Optional
2557
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
2558
+ }, propDecorators: { group: [{
2559
+ type: Input
2560
+ }], options: [{
2561
+ type: Input
2562
+ }], OnChange: [{
2563
+ type: Output
2564
+ }] } });
2547
2565
 
2548
2566
  class ToggleslideComponent {
2549
2567
  // tslint:disable-next-line: max-line-length
@@ -2561,6 +2579,7 @@ class ToggleslideComponent {
2561
2579
  ToggleslideComponent.controlContainerstatic = this.controlContainer;
2562
2580
  }
2563
2581
  ngOnInit() {
2582
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
2564
2583
  this.group.addControl(this.options.Name, new FormControl(''));
2565
2584
  this.ToggleslideFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
2566
2585
  let validationRules = [];
@@ -2602,26 +2621,22 @@ class ToggleslideComponent {
2602
2621
  }
2603
2622
  }
2604
2623
  ToggleslideComponent.controlContainerstatic = null;
2605
- ToggleslideComponent.decorators = [
2606
- { type: Component, args: [{
2607
- selector: 'BBSF-Toggleslide',
2608
- template: "<div class=\"form-group bbsf-control bbsf-toggleslide\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" disabled=\"{{options.IsDisabled}}\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n </div>\r\n</div>\r\n"
2609
- },] }
2610
- ];
2611
- ToggleslideComponent.ctorParameters = () => [
2612
- { type: ControlUtility },
2613
- { type: ControlContainer, decorators: [{ type: Optional }] },
2614
- { type: FormGroupDirective },
2615
- { type: FormGroupDirective },
2616
- { type: UtilityService },
2617
- { type: ControlValidationService },
2618
- { type: GlobalSettings }
2619
- ];
2620
- ToggleslideComponent.propDecorators = {
2621
- group: [{ type: Input }],
2622
- options: [{ type: Input }],
2623
- OnChange: [{ type: Output }]
2624
- };
2624
+ ToggleslideComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ToggleslideComponent, deps: [{ token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
2625
+ ToggleslideComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-toggleslide\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" [dir]=\"textDir\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" [disabled]=\"options.IsDisabled\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n </div>\r\n</div>\r\n", components: [{ type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ToggleslideComponent, decorators: [{
2627
+ type: Component,
2628
+ args: [{ selector: 'BBSF-Toggleslide', template: "<div class=\"form-group bbsf-control bbsf-toggleslide\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" [dir]=\"textDir\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" [disabled]=\"options.IsDisabled\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n </div>\r\n</div>\r\n" }]
2629
+ }], ctorParameters: function () {
2630
+ return [{ type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
2631
+ type: Optional
2632
+ }] }, { type: i2.FormGroupDirective }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
2633
+ }, propDecorators: { group: [{
2634
+ type: Input
2635
+ }], options: [{
2636
+ type: Input
2637
+ }], OnChange: [{
2638
+ type: Output
2639
+ }] } });
2625
2640
 
2626
2641
  class HtmlEditorComponent {
2627
2642
  constructor(zone, controlUtility, controlContainer, HtmlEditorControlHost, UtilityService, controlValidationService, globalSettings) {
@@ -2664,6 +2679,7 @@ class HtmlEditorComponent {
2664
2679
  HtmlEditorComponent.controlContainerstatic = this.controlContainer;
2665
2680
  }
2666
2681
  ngOnInit() {
2682
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
2667
2683
  this.editorConfig = {
2668
2684
  editable: !this.options.IsDisabled,
2669
2685
  spellcheck: true,
@@ -2819,26 +2835,22 @@ class HtmlEditorComponent {
2819
2835
  }
2820
2836
  }
2821
2837
  HtmlEditorComponent.controlContainerstatic = null;
2822
- HtmlEditorComponent.decorators = [
2823
- { type: Component, args: [{
2824
- selector: 'BBSF-HtmlEditor',
2825
- template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
2826
- },] }
2827
- ];
2828
- HtmlEditorComponent.ctorParameters = () => [
2829
- { type: NgZone },
2830
- { type: ControlUtility },
2831
- { type: ControlContainer, decorators: [{ type: Optional }] },
2832
- { type: FormGroupDirective },
2833
- { type: UtilityService },
2834
- { type: ControlValidationService },
2835
- { type: GlobalSettings }
2836
- ];
2837
- HtmlEditorComponent.propDecorators = {
2838
- group: [{ type: Input }],
2839
- options: [{ type: Input }],
2840
- OnChange: [{ type: Output }]
2841
- };
2838
+ HtmlEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HtmlEditorComponent, deps: [{ token: i0.NgZone }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
2839
+ HtmlEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: HtmlEditorComponent, selector: "BBSF-HtmlEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", components: [{ type: i5$1.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["viewMode", "blur", "focus", "html"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
2840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: HtmlEditorComponent, decorators: [{
2841
+ type: Component,
2842
+ args: [{ selector: 'BBSF-HtmlEditor', template: "\r\n<div class=\"form-group bbsf-control bbsf-htmleditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <angular-editor\r\n (change)=\"onValueChanged()\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" formControlName=\"{{options.Name}}\"\r\n [config]=\"editorConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(HtmlEditorFormControl.invalid && HtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(HtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
2843
+ }], ctorParameters: function () {
2844
+ return [{ type: i0.NgZone }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
2845
+ type: Optional
2846
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
2847
+ }, propDecorators: { group: [{
2848
+ type: Input
2849
+ }], options: [{
2850
+ type: Input
2851
+ }], OnChange: [{
2852
+ type: Output
2853
+ }] } });
2842
2854
 
2843
2855
  class MultiLingualHtmlEditorComponent {
2844
2856
  constructor(MultiLingualHtmlEditorFormControlHost, controlContainer, controlUtility, UtilityService, controlValidationService, globalSettings) {
@@ -3240,25 +3252,22 @@ class MultiLingualHtmlEditorComponent {
3240
3252
  }
3241
3253
  }
3242
3254
  MultiLingualHtmlEditorComponent.controlContainerstatic = null;
3243
- MultiLingualHtmlEditorComponent.decorators = [
3244
- { type: Component, args: [{
3245
- selector: 'BBSF-MultiLingualHtmlEditor',
3246
- template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control form-group bbsf-multilang-htmleditor mb-0\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"row\">\r\n <!--English htmleditor-->\r\n <div [ngClass] =\"ShowArabicHtmlEditor? 'col-md-6' : 'col-md-12'\" *ngIf=\"ShowEnglishHtmlEditor\" class=\" bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor class=\"{{options.ExtraClasses_EN}}\" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic htmleditor-->\r\n <div *ngIf=\"ShowArabicHtmlEditor\" [ngClass] =\"ShowEnglishHtmlEditor? 'col-md-6' : 'col-md-12'\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor dir=\"rtl\" class=\"{{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
3247
- },] }
3248
- ];
3249
- MultiLingualHtmlEditorComponent.ctorParameters = () => [
3250
- { type: FormGroupDirective },
3251
- { type: ControlContainer, decorators: [{ type: Optional }] },
3252
- { type: ControlUtility },
3253
- { type: UtilityService },
3254
- { type: ControlValidationService },
3255
- { type: GlobalSettings }
3256
- ];
3257
- MultiLingualHtmlEditorComponent.propDecorators = {
3258
- group: [{ type: Input }],
3259
- options: [{ type: Input }],
3260
- OnChange: [{ type: Output }]
3261
- };
3255
+ MultiLingualHtmlEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiLingualHtmlEditorComponent, deps: [{ token: i2.FormGroupDirective }, { token: i2.ControlContainer, optional: true }, { token: ControlUtility }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
3256
+ MultiLingualHtmlEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiLingualHtmlEditorComponent, selector: "BBSF-MultiLingualHtmlEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control form-group bbsf-multilang-htmleditor mb-0\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"row\">\r\n <!--English htmleditor-->\r\n <div [ngClass] =\"ShowArabicHtmlEditor? 'col-md-6' : 'col-md-12'\" *ngIf=\"ShowEnglishHtmlEditor\" class=\" bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor class=\"{{options.ExtraClasses_EN}}\" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic htmleditor-->\r\n <div *ngIf=\"ShowArabicHtmlEditor\" [ngClass] =\"ShowEnglishHtmlEditor? 'col-md-6' : 'col-md-12'\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor dir=\"rtl\" class=\"{{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", components: [{ type: i5$1.AngularEditorComponent, selector: "angular-editor", inputs: ["id", "config", "placeholder", "tabIndex"], outputs: ["viewMode", "blur", "focus", "html"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
3257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiLingualHtmlEditorComponent, decorators: [{
3258
+ type: Component,
3259
+ args: [{ selector: 'BBSF-MultiLingualHtmlEditor', template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"bbsf-control form-group bbsf-multilang-htmleditor mb-0\" [formGroup]=\"MultilingualHtmlEditorgroup\">\r\n <div class=\"row\">\r\n <!--English htmleditor-->\r\n <div [ngClass] =\"ShowArabicHtmlEditor? 'col-md-6' : 'col-md-12'\" *ngIf=\"ShowEnglishHtmlEditor\" class=\" bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideEnglishLabel\">\r\n {{(options.EnglishLabelValue!=null&&options.EnglishLabelValue!=\"\")?options.EnglishLabelValue:options.LabelValue+\"in English\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)&&IsShowAsteriskInEnglish)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor class=\"{{options.ExtraClasses_EN}}\" (change)=\"onTextChange('en')\" [class.is-invalid]=\"EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched\"\r\n formControlName=\"English\" [config]=\"editorEnglishConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='') ||(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!='')\">\r\n {{(options.EnglishLabelDescription!=null&&options.EnglishLabelDescription!=\"\")?options.EnglishLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(EnglishHtmlEditorFormControl.invalid && EnglishHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(EnglishHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n\r\n <!--Arabic htmleditor-->\r\n <div *ngIf=\"ShowArabicHtmlEditor\" [ngClass] =\"ShowEnglishHtmlEditor? 'col-md-6' : 'col-md-12'\" class=\"bbsf-multilang-form-group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label class=\"bbsf-label {{options.LabelExtraClasses}}\" [hidden]=\"options.IsHideArabicLabel\">\r\n {{(options.ArabicLabelValue!=null&&options.ArabicLabelValue!=\"\")?options.ArabicLabelValue:options.LabelValue+\"in Arabic\"}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"((options.ShowAsterisk&&options.IsRequired)||(options.IsRequired))&&IsShowAsteriskInArabic\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <angular-editor dir=\"rtl\" class=\"{{options.ExtraClasses_AR}} \" (change)=\"onTextChange('ar')\" [class.is-invalid]=\"ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched\"\r\n formControlName=\"Arabic\" [config]=\"editorArabicConfig\"></angular-editor>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"(options.LabelDescription!=null&&options.LabelDescription!='')||(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!='')\">\r\n {{(options.ArabicLabelDescription!=null&&options.ArabicLabelDescription!=\"\")?options.ArabicLabelDescription:options.LabelDescription}}\r\n </div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(ArabicHtmlEditorFormControl.invalid && ArabicHtmlEditorFormControl.touched)\">\r\n {{getErrorValidation(ArabicHtmlEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n" }]
3260
+ }], ctorParameters: function () {
3261
+ return [{ type: i2.FormGroupDirective }, { type: i2.ControlContainer, decorators: [{
3262
+ type: Optional
3263
+ }] }, { type: ControlUtility }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
3264
+ }, propDecorators: { group: [{
3265
+ type: Input
3266
+ }], options: [{
3267
+ type: Input
3268
+ }], OnChange: [{
3269
+ type: Output
3270
+ }] } });
3262
3271
 
3263
3272
  class ImageUploaderComponent {
3264
3273
  constructor(zone, controlUtility, controlContainer, ImageUplaoderControlHost, UtilityService, controlValidationService, globalSettings, modalService) {
@@ -3576,29 +3585,28 @@ class ImageUploaderComponent {
3576
3585
  }
3577
3586
  }
3578
3587
  ImageUploaderComponent.controlContainerstatic = null;
3579
- ImageUploaderComponent.decorators = [
3580
- { type: Component, args: [{
3581
- selector: 'BBSF-ImageUpload',
3582
- template: "<div class=\"form-group bbsf-control bbsf-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <img *ngIf=\"ImageSource\" [src]=\"ImageSource\" style=\"align-items: center;border-radius: 5px;display: flex;height: 100px;justify-content: center;margin: 10px;max-width: 180px;min-height: 100px;min-width: 180px;padding: 0px 20px;position: relative;\" />\r\n <div class=\"svg-and-validation\" *ngIf=\"!ImageSource\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomIn\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomOut\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveLeft\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveUp\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveDown\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateLeft\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
3583
- },] }
3584
- ];
3585
- ImageUploaderComponent.ctorParameters = () => [
3586
- { type: NgZone },
3587
- { type: ControlUtility },
3588
- { type: ControlContainer, decorators: [{ type: Optional }] },
3589
- { type: FormGroupDirective },
3590
- { type: UtilityService },
3591
- { type: ControlValidationService },
3592
- { type: GlobalSettings },
3593
- { type: NgbModal }
3594
- ];
3595
- ImageUploaderComponent.propDecorators = {
3596
- fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
3597
- group: [{ type: Input }],
3598
- options: [{ type: Input }],
3599
- OnChange: [{ type: Output }],
3600
- angularCropper: [{ type: ViewChild, args: ['angularCropper', { static: false },] }]
3601
- };
3588
+ ImageUploaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImageUploaderComponent, deps: [{ token: i0.NgZone }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }, { token: i3$1.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
3589
+ ImageUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ImageUploaderComponent, selector: "BBSF-ImageUpload", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "angularCropper", first: true, predicate: ["angularCropper"], descendants: true }], ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <img *ngIf=\"ImageSource\" [src]=\"ImageSource\" style=\"align-items: center;border-radius: 5px;display: flex;height: 100px;justify-content: center;margin: 10px;max-width: 180px;min-height: 100px;min-width: 180px;padding: 0px 20px;position: relative;\" />\r\n <div class=\"svg-and-validation\" *ngIf=\"!ImageSource\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomIn\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomOut\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveLeft\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveUp\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveDown\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateLeft\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", components: [{ type: i6$4.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }, { type: i6$4.NgxDropzoneImagePreviewComponent, selector: "ngx-dropzone-image-preview", inputs: ["file"] }, { type: i7$2.CropperComponent, selector: "angular-cropper", inputs: ["cropperOptions", "imageUrl", "settings", "cropbox", "loadImageErrorText"], outputs: ["export", "ready"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6$4.ɵb, selector: "ngx-dropzone-label" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
3590
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImageUploaderComponent, decorators: [{
3591
+ type: Component,
3592
+ args: [{ selector: 'BBSF-ImageUpload', template: "<div class=\"form-group bbsf-control bbsf-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <img *ngIf=\"ImageSource\" [src]=\"ImageSource\" style=\"align-items: center;border-radius: 5px;display: flex;height: 100px;justify-content: center;margin: 10px;max-width: 180px;min-height: 100px;min-width: 180px;padding: 0px 20px;position: relative;\" />\r\n <div class=\"svg-and-validation\" *ngIf=\"!ImageSource\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n [multiple]=\"options.IsMultiple\"\r\n (change)=\"onFileChange($event)\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [maxFileSize]=\"maxFileSize\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ImageUploadFormControl.invalid && ImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ImageUploadFormControl.invalid && ImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomIn\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"ZoomOut\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveLeft\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveUp\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"MoveDown\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateLeft\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" ngbTooltip='{{UtilityService.getResourceValue(\"RotateRight\")}}'>\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n" }]
3593
+ }], ctorParameters: function () {
3594
+ return [{ type: i0.NgZone }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
3595
+ type: Optional
3596
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }, { type: i3$1.NgbModal }];
3597
+ }, propDecorators: { fileInput: [{
3598
+ type: ViewChild,
3599
+ args: ['fileInput', { static: false }]
3600
+ }], group: [{
3601
+ type: Input
3602
+ }], options: [{
3603
+ type: Input
3604
+ }], OnChange: [{
3605
+ type: Output
3606
+ }], angularCropper: [{
3607
+ type: ViewChild,
3608
+ args: ['angularCropper', { static: false }]
3609
+ }] } });
3602
3610
 
3603
3611
  class ProfilePictureDTO {
3604
3612
  }
@@ -3922,28 +3930,28 @@ class ProfileImageUploaderComponent {
3922
3930
  }
3923
3931
  }
3924
3932
  ProfileImageUploaderComponent.controlContainerstatic = null;
3925
- ProfileImageUploaderComponent.decorators = [
3926
- { type: Component, args: [{
3927
- selector: 'BBSF-ProfileImageUploader',
3928
- template: "<div class=\"form-group bbsf-control bbsf-profile-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\" style=\"width:fit-content\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"profile-upload-img\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ProfileImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom in\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom out\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" ngbTooltip=\"Move left\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" ngbTooltip=\"Move right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" ngbTooltip=\"Move up\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" ngbTooltip=\"Move down\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" ngbTooltip=\"Rotate left\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" ngbTooltip=\"Rotate right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n"
3929
- },] }
3930
- ];
3931
- ProfileImageUploaderComponent.ctorParameters = () => [
3932
- { type: NgZone },
3933
- { type: ControlUtility },
3934
- { type: ControlContainer, decorators: [{ type: Optional }] },
3935
- { type: FormGroupDirective },
3936
- { type: UtilityService },
3937
- { type: ControlValidationService },
3938
- { type: GlobalSettings }
3939
- ];
3940
- ProfileImageUploaderComponent.propDecorators = {
3941
- fileInput: [{ type: ViewChild, args: ['fileInput', { static: false },] }],
3942
- group: [{ type: Input }],
3943
- options: [{ type: Input }],
3944
- OnChange: [{ type: Output }],
3945
- angularCropper: [{ type: ViewChild, args: ['angularCropper', { static: false },] }]
3946
- };
3933
+ ProfileImageUploaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ProfileImageUploaderComponent, deps: [{ token: i0.NgZone }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
3934
+ ProfileImageUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ProfileImageUploaderComponent, selector: "BBSF-ProfileImageUploader", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "angularCropper", first: true, predicate: ["angularCropper"], descendants: true }], ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-profile-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\" style=\"width:fit-content\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"profile-upload-img\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ProfileImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom in\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom out\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" ngbTooltip=\"Move left\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" ngbTooltip=\"Move right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" ngbTooltip=\"Move up\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" ngbTooltip=\"Move down\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" ngbTooltip=\"Rotate left\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" ngbTooltip=\"Rotate right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n", components: [{ type: i6$4.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }, { type: i6$4.NgxDropzoneImagePreviewComponent, selector: "ngx-dropzone-image-preview", inputs: ["file"] }, { type: i7$2.CropperComponent, selector: "angular-cropper", inputs: ["cropperOptions", "imageUrl", "settings", "cropbox", "loadImageErrorText"], outputs: ["export", "ready"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6$4.ɵb, selector: "ngx-dropzone-label" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
3935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ProfileImageUploaderComponent, decorators: [{
3936
+ type: Component,
3937
+ args: [{ selector: 'BBSF-ProfileImageUploader', template: "<div class=\"form-group bbsf-control bbsf-profile-image-upload\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Allow dropZone-->\r\n <div *ngIf=\"options.AllowDropZone\" class=\"bbsf-input-container {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n <ngx-dropzone-label class=\"dropzone-label\">\r\n <div class=\"svg-and-validation\">\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width: 50px; height: 50px;\">\r\n <path opacity=\"0.3\" d=\"M5 16C3.3 16 2 14.7 2 13C2 11.3 3.3 10 5 10H5.1C5 9.7 5 9.3 5 9C5 6.2 7.2 4 10 4C11.9 4 13.5 5 14.3 6.5C14.8 6.2 15.4 6 16 6C17.7 6 19 7.3 19 9C19 9.4 18.9 9.7 18.8 10C18.9 10 18.9 10 19 10C20.7 10 22 11.3 22 13C22 14.7 20.7 16 19 16H5ZM8 13.6H16L12.7 10.3C12.3 9.89999 11.7 9.89999 11.3 10.3L8 13.6Z\" fill=\"currentColor\" style=\"fill: #a1a1a1;\"></path>\r\n <path d=\"M11 13.6V19C11 19.6 11.4 20 12 20C12.6 20 13 19.6 13 19V13.6H11Z\" fill=\"currentColor\" style=\"fill: #989898;\"></path>\r\n </svg>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </ngx-dropzone-label>\r\n <ngx-dropzone-image-preview class=\"dropzone-preview\" *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n </div>\r\n <!--Not allowed dropZone-->\r\n <div *ngIf=\"!options.AllowDropZone\" style=\"width:fit-content\">\r\n <ngx-dropzone-label *ngIf=\"files.length==0\">\r\n <div #element (click)=\"showImageUploader(element)\">\r\n <img [src]=\"ImageSource\" class=\"profile-upload-img\" />\r\n </div>\r\n </ngx-dropzone-label>\r\n <div class=\"d-none {{options.ExtraClasses}}\"\r\n ngx-dropzone\r\n [disabled]=\"options.IsDisabled\"\r\n [accept]=\"AcceptedType\"\r\n (change)=\"onFileChange($event)\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n ngDefaultControl formControlName=\"{{options.Name}}\"\r\n id=\"{{options.Name}}\"\r\n [class.is-invalid]=\"ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched\">\r\n </div>\r\n <ngx-dropzone-image-preview *ngFor=\"let f of files\" [file]=\"f\" [removable]=\"true\" (removed)=\"removeFromControlValue(f)\" ngProjectAs=\"ngx-dropzone-preview\">\r\n </ngx-dropzone-image-preview>\r\n <!--Validation text-->\r\n <div class=\"bbsf-validation-msg\" *ngIf=\"ValidationMessage\" [innerHTML]=\"ValidationMessage\"></div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- required text-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(ProfileImageUploadFormControl.invalid && ProfileImageUploadFormControl.touched)\">\r\n {{getErrorValidation(ProfileImageUploadFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n <!-- image cropper modal-->\r\n <div id=\"mdlSample\" class=\"modal bbsf-cropper-modal\" role=\"dialog\" [ngStyle]=\"{'display': mdlSampleIsOpen ? 'block' : 'none', 'opacity': 1}\">\r\n <div class=\"modal-dialog modal-lg\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">\r\n {{UtilityService.getResourceValue(\"CropImage\")}}\r\n </h4>\r\n <button type=\"button\" class=\"btn-close\" data-dismiss=\"modal\" (click)=\"openModal(false)\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"imageUrl\">\r\n <angular-cropper #angularCropper [cropperOptions]=\"config\" [imageUrl]=\"imageUrl\">\r\n </angular-cropper>\r\n <img [src]=\"imgwUrl\" />\r\n </div>\r\n <div class=\"cropper-btns\">\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"zoomImage(0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom in\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"zoomImage(-0.1)\" class=\"btn btn-default\" ngbTooltip=\"Zoom out\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"moveImage(-10,0)\" class=\"btn btn-default\" ngbTooltip=\"Move left\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-left\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(10,0)\" class=\"btn btn-default\" ngbTooltip=\"Move right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-right\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,-10)\" class=\"btn btn-default\" ngbTooltip=\"Move up\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-up\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"moveImage(0,10)\" class=\"btn btn-default\" ngbTooltip=\"Move down\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-arrow-down\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"btn-group\">\r\n <button type=\"button\" (click)=\"rotateImage(-45)\" class=\"btn btn-default\" ngbTooltip=\"Rotate left\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-undo-alt\"></span>\r\n </span>\r\n </button>\r\n <button type=\"button\" (click)=\"rotateImage(45)\" class=\"btn btn-default\" ngbTooltip=\"Rotate right\">\r\n <span class=\"docs-tooltip\">\r\n <span class=\"fa fa-redo-alt\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\" align=\"right\">\r\n <button type=\"button\" id=\"btnClose\" class=\"btn btn-sm btn-light\" (click)=\"openModal(false)\">\r\n {{UtilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" (click)=\"cropImage()\" id=\"btnOK\" class=\"btn btn-sm btn-brand\">\r\n {{UtilityService.getResourceValue(\"Crop\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n" }]
3938
+ }], ctorParameters: function () {
3939
+ return [{ type: i0.NgZone }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
3940
+ type: Optional
3941
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
3942
+ }, propDecorators: { fileInput: [{
3943
+ type: ViewChild,
3944
+ args: ['fileInput', { static: false }]
3945
+ }], group: [{
3946
+ type: Input
3947
+ }], options: [{
3948
+ type: Input
3949
+ }], OnChange: [{
3950
+ type: Output
3951
+ }], angularCropper: [{
3952
+ type: ViewChild,
3953
+ args: ['angularCropper', { static: false }]
3954
+ }] } });
3947
3955
 
3948
3956
  class AutocompleteDTO {
3949
3957
  constructor() {
@@ -4036,6 +4044,7 @@ class AutocompleteTextBoxComponent {
4036
4044
  AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;
4037
4045
  }
4038
4046
  ngOnInit() {
4047
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
4039
4048
  this.controlValidationService.isCreatedBefor = false;
4040
4049
  this.group.addControl(this.options.Name, new FormControl(''));
4041
4050
  this.AutocompleteTextBoxControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
@@ -4150,7 +4159,7 @@ class AutocompleteTextBoxComponent {
4150
4159
  this.Search = search;
4151
4160
  this.SelectedValue = "";
4152
4161
  yield this.suggestions$.subscribe((result) => {
4153
- if ((result == null || result == [] || result.length == 0) && this.options.AllowNewSelection == true) {
4162
+ if ((result == null || result.length == 0 || result.length == 0) && this.options.AllowNewSelection == true) {
4154
4163
  this.dataList = [
4155
4164
  {
4156
4165
  key: 0,
@@ -4166,161 +4175,491 @@ class AutocompleteTextBoxComponent {
4166
4175
  }
4167
4176
  }
4168
4177
  AutocompleteTextBoxComponent.controlContainerstatic = null;
4169
- AutocompleteTextBoxComponent.decorators = [
4170
- { type: Component, args: [{
4171
- // tslint:disable-next-line: component-selector
4172
- selector: 'BBSF-AutocompleteTextBox',
4173
- template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\"> {{resetError()}} </div>\r\n</div>\r\n\r\n"
4174
- },] }
4175
- ];
4176
- AutocompleteTextBoxComponent.ctorParameters = () => [
4177
- { type: HttpClient },
4178
- { type: ErrorMassageValidation },
4179
- { type: RequestHandlerService },
4180
- { type: ControlUtility },
4181
- { type: ControlContainer, decorators: [{ type: Optional }] },
4182
- { type: FormGroupDirective },
4183
- { type: UtilityService },
4184
- { type: ControlValidationService },
4185
- { type: GlobalSettings }
4186
- ];
4187
- AutocompleteTextBoxComponent.propDecorators = {
4188
- group: [{ type: Input }],
4189
- options: [{ type: Input }],
4190
- OnChange: [{ type: Output }]
4191
- };
4178
+ AutocompleteTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AutocompleteTextBoxComponent, deps: [{ token: i1$1.HttpClient }, { token: ErrorMassageValidation }, { token: i3.RequestHandlerService }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
4179
+ AutocompleteTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: AutocompleteTextBoxComponent, selector: "BBSF-AutocompleteTextBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\"> {{resetError()}} </div>\r\n</div>\r\n\r\n", components: [{ type: i7$3.AutocompleteComponent, selector: "ng-autocomplete", inputs: ["data", "placeholder", "heading", "historyHeading", "historyListMaxNumber", "notFoundText", "minQueryLength", "focusFirst", "disabled", "searchKeyword", "initialValue", "historyIdentifier", "isLoading", "debounceTime", "customFilter", "itemTemplate", "notFoundTemplate"], outputs: ["selected", "inputChanged", "inputFocused", "inputCleared", "opened", "closed", "scrolledToEnd"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
4180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AutocompleteTextBoxComponent, decorators: [{
4181
+ type: Component,
4182
+ args: [{ selector: 'BBSF-AutocompleteTextBox', template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\"> {{resetError()}} </div>\r\n</div>\r\n\r\n" }]
4183
+ }], ctorParameters: function () {
4184
+ return [{ type: i1$1.HttpClient }, { type: ErrorMassageValidation }, { type: i3.RequestHandlerService }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
4185
+ type: Optional
4186
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
4187
+ }, propDecorators: { group: [{
4188
+ type: Input
4189
+ }], options: [{
4190
+ type: Input
4191
+ }], OnChange: [{
4192
+ type: Output
4193
+ }] } });
4192
4194
 
4193
- class TagsInputComponent {
4194
- // tslint:disable-next-line: max-line-length
4195
- constructor(http, controlUtility, requestHandlerService, controlContainer, TagsInputControlHost, UtilityService, controlValidationService, globalSettings) {
4196
- this.http = http;
4197
- this.controlUtility = controlUtility;
4198
- this.requestHandlerService = requestHandlerService;
4199
- this.controlContainer = controlContainer;
4200
- this.TagsInputControlHost = TagsInputControlHost;
4201
- this.UtilityService = UtilityService;
4202
- this.controlValidationService = controlValidationService;
4203
- this.globalSettings = globalSettings;
4204
- this.OnChange = new EventEmitter();
4205
- // TagInputControl: AbstractControl;
4206
- this.SelectedId = [];
4207
- this.tags = [];
4208
- this.NewSelectionValidationKey = "";
4209
- this.markAllAsTouched = false;
4210
- this.validationRules = [];
4211
- this.validationRulesasync = [];
4212
- this.SearchResultHasItems = false;
4213
- this.resetError = () => {
4214
- this.controlValidationService.RemoveGlobalError();
4215
- };
4216
- //External Method
4217
- this.RemoveRequiredValidation = () => {
4218
- this.controlUtility.RemoveRequiredValidation(this.TagsFormControl, this.validationRules, this.options);
4219
- };
4220
- //External Method
4221
- this.AddRequiredValidation = () => {
4222
- this.controlUtility.AddRequiredValidation(this.TagsFormControl, this.validationRules, this.options);
4223
- };
4224
- //External Method
4225
- this.RemoveCustomValidation = (CustomValidation) => {
4226
- this.controlUtility.RemoveCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation);
4227
- };
4228
- //External Method
4229
- this.AddCustomValidation = (CustomValidation) => {
4230
- this.controlUtility.AddCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation);
4231
- };
4232
- //External Method
4233
- this.IsValid = () => {
4234
- this.controlUtility.IsValid(this.TagsFormControl);
4235
- };
4236
- TagsInputComponent.controlContainerstatic = this.controlContainer;
4237
- }
4238
- static showErrorOfInputs(errors) {
4239
- const controlContainerstatic = TagsInputComponent.controlContainerstatic;
4240
- const formGroup = controlContainerstatic.control;
4241
- for (const key in errors) {
4242
- if (errors.hasOwnProperty(key)) {
4243
- for (const iterator of errors[key]) {
4244
- const formControl = formGroup.get(key);
4245
- formControl.setErrors({ "FluentApi": iterator });
4246
- formControl.markAsTouched();
4247
- }
4248
- }
4249
- }
4250
- }
4251
- ngOnDestroy() {
4252
- if (this.changeValueSubscription)
4253
- this.changeValueSubscription.unsubscribe();
4254
- }
4255
- ngOnInit() {
4256
- this.controlValidationService.isCreatedBefor = false;
4257
- this.options.DatasourceItemText = this.options.DatasourceItemText.toLowerCase();
4258
- this.TagsFormGroup = new FormGroup({});
4259
- ;
4260
- this.TagsFormGroup.addControl("tags", new FormControl(''));
4261
- this.TagsFormControl = this.TagsFormGroup.controls["tags"]; // new FormControl('',validationRules);
4262
- this.group.addControl(this.options.Name, this.TagsFormControl);
4263
- if (!this.options.ViewType)
4264
- this.options.ViewType = this.globalSettings.ViewType;
4265
- if (this.options.LabelKey != null && this.options.LabelKey != "")
4266
- this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
4267
- if (!this.options.NoResultText)
4268
- this.options.NoResultText = this.UtilityService.getResourceValue("NoItemsMatch");
4269
- // this.group.addControl(this.options.Name, new FormControl(''));
4270
- // this.TagInputControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
4271
- this.TagsFormControl.setValue(this.options.Value);
4272
- if (this.options.IsRequired) {
4273
- this.validationRules.push(Validators.required);
4274
- }
4275
- if (this.options.CustomValidation.length > 0) {
4276
- let Validations = this.options.CustomValidation;
4277
- for (let index = 0; index < Validations.length; index++) {
4278
- const Validation = Validations[index];
4279
- this.validationRules.push(Validation.functionBody);
4280
- }
4281
- }
4282
- this.TagsFormControl.setValidators(this.validationRules);
4283
- this.TagsFormControl.setAsyncValidators(this.validationRulesasync);
4284
- if (this.options.IsDisabled) {
4285
- this.TagsFormControl.disable();
4286
- }
4287
- if (this.options.Value != undefined && this.options.Value != []) {
4288
- for (let index = 0; index < this.options.Value.length; index++) {
4289
- const element = this.options.Value[index];
4290
- this.SelectedId.push(element.id);
4291
- }
4292
- this.tags = this.options.Value;
4293
- this.TagsFormControl.setValue(this.options.Value);
4294
- }
4295
- this.TagsInputControlHost.ngSubmit.subscribe((value) => {
4296
- this.group.markAllAsTouched();
4297
- this.markAllAsTouched = true;
4298
- });
4299
- //Check for changing in value
4300
- this.changeValueSubscription = this.TagsFormControl.valueChanges.subscribe(c => {
4301
- var _a;
4302
- this.tags = this.TagsFormControl.value;
4303
- this.SelectedId = (_a = this.tags) === null || _a === void 0 ? void 0 : _a.filter(item => item.id).map(item => item.id);
4304
- if (this.tags == null) {
4305
- this.SearchKey.selected = "";
4306
- this.tags = [];
4307
- this.TagsFormControl.setValue([]);
4308
- }
4309
- });
4310
- }
4311
- ngAfterViewInit() {
4312
- if (this.options.AttributeList != null) {
4313
- var element = document.getElementById(this.options.Name);
4314
- for (let index = 0; index < this.options.AttributeList.length; index++) {
4315
- element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
4316
- }
4317
- }
4318
- let inputElement = document.getElementById(this.options.Name).getElementsByTagName("input")[0];
4319
- inputElement.setAttribute("autocomplete", "off");
4320
- }
4321
- showGlobalError() {
4322
- this.controlUtility.showGlobalError();
4323
- }
4195
+ var TagInputView;
4196
+ (function (TagInputView) {
4197
+ TagInputView[TagInputView["WithImage"] = 1] = "WithImage";
4198
+ TagInputView[TagInputView["WithoutImage"] = 2] = "WithoutImage";
4199
+ TagInputView[TagInputView["WithInitial"] = 3] = "WithInitial";
4200
+ })(TagInputView || (TagInputView = {}));
4201
+
4202
+ const noop = () => { };
4203
+ const TAGS_INPUT_TEMPLATE = `
4204
+
4205
+ <div class="tags-input">
4206
+ <span class="tags-input__tag label label-primary badge badge-primary" *ngFor="let tag of tags">
4207
+
4208
+ <span [ngSwitch]="ViewMode">
4209
+ <span *ngSwitchCase="tagInputViewEnum.WithImage">
4210
+ <img style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
4211
+ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
4212
+ </span>
4213
+
4214
+ <span *ngSwitchCase="tagInputViewEnum.WithInitial">
4215
+ <div class="user-initials">{{calculateInitials(tag.name)}}</div>
4216
+ </span>
4217
+
4218
+ <span *ngSwitchDefault>
4219
+ </span>
4220
+
4221
+ </span>
4222
+ {{tag[displayField]}}
4223
+ <span *ngIf="isDeleteable(tag)" role="button" class="tags-input__tag-remove-btn" (click)="removeTag(tag)"
4224
+ (touch)="removeTag(tag)">
4225
+ <span aria-hidden="true">&times;</span>
4226
+ <span class="sr-only">Close</span>
4227
+ </span>
4228
+ </span>
4229
+
4230
+ <input *ngIf="options === null; else withTypeahead" class="tags-input__input-field" type="text"
4231
+ [placeholder]="getPlaceholder()" name="tags" (keyup.enter)="addTag(tagInput)"
4232
+ (keydown.backspace)="removeLastTag(tagInput)" [disabled]="!canAddTags || maximumOfTagsReached()"
4233
+ [hidden]="!canAddTags || maximumOfTagsReached()" #tagInput />
4234
+
4235
+ <ng-template #withTypeahead>
4236
+ <span [ngSwitch]="ViewMode">
4237
+ <span *ngSwitchCase="tagInputViewEnum.WithImage">
4238
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
4239
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
4240
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
4241
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
4242
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
4243
+ [typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
4244
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
4245
+ (blur)="onBlur()" autocomplete="off"
4246
+ #tagInput />
4247
+ </span>
4248
+
4249
+ <span *ngSwitchCase="tagInputViewEnum.WithoutImage">
4250
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
4251
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
4252
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
4253
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
4254
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
4255
+ [typeaheadItemTemplate]="itemTemplateWithoutImage"
4256
+ [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
4257
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
4258
+ (blur)="onBlur()" autocomplete="off"
4259
+ #tagInput />
4260
+ </span>
4261
+
4262
+ <span *ngSwitchCase="tagInputViewEnum.WithInitial">
4263
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
4264
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
4265
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
4266
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
4267
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
4268
+ [typeaheadItemTemplate]="itemTemplateWithoutInitial"
4269
+ [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
4270
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
4271
+ (blur)="onBlur()" autocomplete="off"
4272
+ #tagInput />
4273
+ </span>
4274
+
4275
+ <span *ngSwitchDefault>
4276
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
4277
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
4278
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
4279
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
4280
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
4281
+ [typeaheadItemTemplate]="itemTemplateWithoutImage"
4282
+ [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
4283
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
4284
+ (blur)="onBlur()" autocomplete="off"
4285
+ #tagInput />
4286
+ </span>
4287
+
4288
+ </span>
4289
+
4290
+ </ng-template>
4291
+
4292
+ <ng-template #itemTemplateWithImage let-model="item" let-index="index">
4293
+ <img
4294
+ style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
4295
+ src="{{(model.imageURL?model.imageURL:defaultImageURL)}}" />
4296
+ <div>
4297
+ <a [innerHTML]="model.name"></a>
4298
+ <p *ngIf="showDescription">
4299
+ {{model.description}}
4300
+ </p>
4301
+ </div>
4302
+ </ng-template>
4303
+
4304
+ <ng-template #itemTemplateWithoutImage let-model="item" let-index="index">
4305
+ <div>
4306
+ <a [innerHTML]="model.name"></a>
4307
+ <p *ngIf="showDescription">
4308
+ {{model.description}}
4309
+ </p>
4310
+ </div>
4311
+ </ng-template>
4312
+
4313
+ <ng-template #itemTemplateWithoutInitial let-model="item" let-index="index">
4314
+ <div class="user-image">
4315
+ <div class="user-initials">{{calculateInitials(model.name)}}</div>
4316
+ </div>
4317
+ <div>
4318
+ <a [innerHTML]="model.name"></a>
4319
+ <p *ngIf="showDescription">
4320
+ {{model.description}}
4321
+ </p>
4322
+ </div>
4323
+ </ng-template>
4324
+ </div>
4325
+ `;
4326
+ const TAGS_INPUT_STYLE = `
4327
+ :host {
4328
+ overflow: auto;
4329
+ white-space: nowrap;
4330
+ }
4331
+
4332
+ .tags-input {
4333
+ align-items: center;
4334
+ display: flex;
4335
+ flex-wrap: wrap;
4336
+ }
4337
+
4338
+ .tags-input__tag {
4339
+ display: inline-block;
4340
+ margin-bottom: 2px;
4341
+ margin-right: 5px;
4342
+ padding-right: 0.3em;
4343
+ }
4344
+
4345
+ .tags-input__tag-remove-btn {
4346
+ cursor: pointer;
4347
+ display: inline-block;
4348
+ font-size: 12px;
4349
+ margin: -3px 0 0 3px;
4350
+ padding: 0;
4351
+ vertical-align: top;
4352
+ }
4353
+
4354
+ .tags-input__input-field {
4355
+ border: none;
4356
+ flex-grow: 1;
4357
+ outline: none;
4358
+ }
4359
+ `;
4360
+ const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
4361
+ provide: NG_VALUE_ACCESSOR,
4362
+ useExisting: forwardRef(() => BTagsInputComponent),
4363
+ multi: true
4364
+ };
4365
+ class BTagsInputComponent {
4366
+ constructor() {
4367
+ this.selected = '';
4368
+ this.tags = [];
4369
+ this.onTouchedCallback = noop;
4370
+ this.onChangeCallback = noop;
4371
+ this.tagInputViewEnum = TagInputView;
4372
+ this.removeLastOnBackspace = false;
4373
+ this.canDeleteTags = true;
4374
+ this.canAddTags = true;
4375
+ this.ViewMode = TagInputView.WithoutImage;
4376
+ this.placeholder = '';
4377
+ this.showDescription = true;
4378
+ this.options = null;
4379
+ this.defaultImageURL = null;
4380
+ this.displayField = 'name';
4381
+ this.minLengthBeforeOptions = 1;
4382
+ this.scrollableOptions = false;
4383
+ this.scrollableOptionsInView = 5;
4384
+ this.onTagsChanged = new EventEmitter();
4385
+ this.onMaxTagsReached = new EventEmitter();
4386
+ this.onNoOptionsMatch = new EventEmitter();
4387
+ this.onBlurInput = new EventEmitter();
4388
+ }
4389
+ getPlaceholder() {
4390
+ if (this.tags && this.tags.length > 0) {
4391
+ return '';
4392
+ }
4393
+ return this.placeholder;
4394
+ }
4395
+ tagsChanged(type, tag) {
4396
+ this.onChangeCallback(this.tags);
4397
+ this.onTagsChanged.emit({
4398
+ change: type,
4399
+ tag: tag
4400
+ });
4401
+ if (this.maximumOfTagsReached()) {
4402
+ this.onMaxTagsReached.emit();
4403
+ }
4404
+ }
4405
+ removeLastTag(tagInput) {
4406
+ var _a;
4407
+ if (!this.removeLastOnBackspace || !((_a = this.tags) === null || _a === void 0 ? void 0 : _a.length)) {
4408
+ return;
4409
+ }
4410
+ if (tagInput.value === '') {
4411
+ this.removeTag(this.tags[this.tags.length - 1]);
4412
+ }
4413
+ }
4414
+ addTag(tagInput) {
4415
+ if (tagInput.value.trim() !== '') {
4416
+ let tag = {
4417
+ [this.displayField]: tagInput.value
4418
+ };
4419
+ this.addPredefinedTag(tag);
4420
+ }
4421
+ tagInput.value = '';
4422
+ }
4423
+ addPredefinedTag(tag) {
4424
+ if (this.tags == null)
4425
+ this.tags = [];
4426
+ if (!this.maximumOfTagsReached()) {
4427
+ this.tags.push(tag);
4428
+ this.tagsChanged('add', tag);
4429
+ }
4430
+ }
4431
+ removeTag(tagToRemove) {
4432
+ if (!this.isDeleteable(tagToRemove)) {
4433
+ return;
4434
+ }
4435
+ this.tags = this.tags.filter(tag => tagToRemove !== tag);
4436
+ this.tagsChanged('remove', tagToRemove);
4437
+ }
4438
+ maximumOfTagsReached() {
4439
+ return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;
4440
+ }
4441
+ isDeleteable(tag) {
4442
+ if (typeof tag.deleteable !== "undefined" && !tag.deleteable) {
4443
+ return false;
4444
+ }
4445
+ return this.canDeleteTags;
4446
+ }
4447
+ typeaheadOnSelect(e) {
4448
+ if (typeof e.item === 'string') {
4449
+ this.addPredefinedTag({
4450
+ [this.displayField]: e.value
4451
+ });
4452
+ }
4453
+ else {
4454
+ this.addPredefinedTag(e.item);
4455
+ }
4456
+ this.selected = '';
4457
+ }
4458
+ typeaheadOnNoMatch(e) {
4459
+ if (typeof this.onNoOptionsMatch !== 'undefined') {
4460
+ this.onNoOptionsMatch.emit(e);
4461
+ }
4462
+ }
4463
+ writeValue(value) {
4464
+ if (value !== this.tags) {
4465
+ this.tags = value;
4466
+ }
4467
+ }
4468
+ registerOnChange(fn) {
4469
+ this.onChangeCallback = fn;
4470
+ }
4471
+ registerOnTouched(fn) {
4472
+ this.onTouchedCallback = fn;
4473
+ }
4474
+ calculateInitials(name) {
4475
+ var fullName = name.split(' ');
4476
+ var initials = "";
4477
+ if (fullName.length > 1)
4478
+ initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
4479
+ else
4480
+ initials = fullName.shift().charAt(0);
4481
+ return initials.toUpperCase();
4482
+ }
4483
+ onBlur() {
4484
+ this.onBlurInput.emit();
4485
+ }
4486
+ }
4487
+ BTagsInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BTagsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4488
+ BTagsInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BTagsInputComponent, selector: "b-tags-input", inputs: { maxTags: "maxTags", removeLastOnBackspace: "removeLastOnBackspace", canDeleteTags: "canDeleteTags", canAddTags: "canAddTags", ViewMode: "ViewMode", placeholder: "placeholder", showDescription: "showDescription", options: "options", defaultImageURL: "defaultImageURL", minLengthBeforeOptions: "minLengthBeforeOptions", scrollableOptions: "scrollableOptions", scrollableOptionsInView: "scrollableOptionsInView" }, outputs: { onTagsChanged: "onTagsChanged", onMaxTagsReached: "onMaxTagsReached", onNoOptionsMatch: "onNoOptionsMatch", onBlurInput: "onBlurInput" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "\n\n<div class=\"tags-input\">\n<span class=\"tags-input__tag label label-primary badge badge-primary\" *ngFor=\"let tag of tags\">\n\n<span [ngSwitch]=\"ViewMode\">\n<span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\n<img style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\nsrc=\"{{(tag.imageURL?tag.imageURL:defaultImageURL)}}\" />\n</span>\n\n<span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\n<div class=\"user-initials\">{{calculateInitials(tag.name)}}</div>\n</span>\n\n<span *ngSwitchDefault>\n</span>\n\n</span>\n {{tag[displayField]}}\n <span *ngIf=\"isDeleteable(tag)\" role=\"button\" class=\"tags-input__tag-remove-btn\" (click)=\"removeTag(tag)\"\n (touch)=\"removeTag(tag)\">\n <span aria-hidden=\"true\">&times;</span>\n <span class=\"sr-only\">Close</span>\n </span>\n</span>\n\n<input *ngIf=\"options === null; else withTypeahead\" class=\"tags-input__input-field\" type=\"text\"\n [placeholder]=\"getPlaceholder()\" name=\"tags\" (keyup.enter)=\"addTag(tagInput)\"\n (keydown.backspace)=\"removeLastTag(tagInput)\" [disabled]=\"!canAddTags || maximumOfTagsReached()\"\n [hidden]=\"!canAddTags || maximumOfTagsReached()\" #tagInput />\n\n<ng-template #withTypeahead>\n <span [ngSwitch]=\"ViewMode\">\n <span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithImage\" [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchCase=\"tagInputViewEnum.WithoutImage\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutInitial\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchDefault>\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n </span>\n\n</ng-template>\n\n<ng-template #itemTemplateWithImage let-model=\"item\" let-index=\"index\">\n <img\n style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\n src=\"{{(model.imageURL?model.imageURL:defaultImageURL)}}\" />\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n\n<ng-template #itemTemplateWithoutImage let-model=\"item\" let-index=\"index\">\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n\n<ng-template #itemTemplateWithoutInitial let-model=\"item\" let-index=\"index\">\n <div class=\"user-image\">\n <div class=\"user-initials\">{{calculateInitials(model.name)}}</div>\n </div>\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n</div>\n", isInline: true, styles: [":host{overflow:auto;white-space:nowrap}.tags-input{align-items:center;display:flex;flex-wrap:wrap}.tags-input__tag{display:inline-block;margin-bottom:2px;margin-right:5px;padding-right:.3em}.tags-input__tag-remove-btn{cursor:pointer;display:inline-block;font-size:12px;margin:-3px 0 0 3px;padding:0;vertical-align:top}.tags-input__input-field{border:none;flex-grow:1;outline:none}\n"], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.TypeaheadDirective, selector: "[typeahead]", inputs: ["isAnimated", "typeaheadLatinize", "typeaheadSingleWords", "typeaheadWordDelimiters", "typeaheadMultipleSearchDelimiters", "typeaheadPhraseDelimiters", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadSelectFirstItem", "typeaheadIsFirstItemActive", "dropup", "typeaheadOptionsLimit", "typeaheadMinLength", "typeaheadWaitMs", "typeaheadAsync", "typeahead", "adaptivePosition", "typeaheadOptionField", "typeaheadGroupField", "typeaheadOrderBy", "typeaheadMultipleSearch", "typeaheadItemTemplate", "optionsListTemplate", "typeaheadHideResultsOnBlur", "container"], outputs: ["typeaheadLoading", "typeaheadNoResults", "typeaheadOnSelect", "typeaheadOnBlur"], exportAs: ["bs-typeahead"] }] });
4489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BTagsInputComponent, decorators: [{
4490
+ type: Component,
4491
+ args: [{
4492
+ selector: 'b-tags-input',
4493
+ template: TAGS_INPUT_TEMPLATE,
4494
+ styles: [TAGS_INPUT_STYLE],
4495
+ providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]
4496
+ }]
4497
+ }], propDecorators: { maxTags: [{
4498
+ type: Input
4499
+ }], removeLastOnBackspace: [{
4500
+ type: Input
4501
+ }], canDeleteTags: [{
4502
+ type: Input
4503
+ }], canAddTags: [{
4504
+ type: Input
4505
+ }], ViewMode: [{
4506
+ type: Input
4507
+ }], placeholder: [{
4508
+ type: Input
4509
+ }], showDescription: [{
4510
+ type: Input
4511
+ }], options: [{
4512
+ type: Input
4513
+ }], defaultImageURL: [{
4514
+ type: Input
4515
+ }], minLengthBeforeOptions: [{
4516
+ type: Input
4517
+ }], scrollableOptions: [{
4518
+ type: Input
4519
+ }], scrollableOptionsInView: [{
4520
+ type: Input
4521
+ }], onTagsChanged: [{
4522
+ type: Output
4523
+ }], onMaxTagsReached: [{
4524
+ type: Output
4525
+ }], onNoOptionsMatch: [{
4526
+ type: Output
4527
+ }], onBlurInput: [{
4528
+ type: Output
4529
+ }] } });
4530
+
4531
+ class TagsInputComponent {
4532
+ // tslint:disable-next-line: max-line-length
4533
+ constructor(http, controlUtility, requestHandlerService, controlContainer, TagsInputControlHost, UtilityService, controlValidationService, globalSettings) {
4534
+ this.http = http;
4535
+ this.controlUtility = controlUtility;
4536
+ this.requestHandlerService = requestHandlerService;
4537
+ this.controlContainer = controlContainer;
4538
+ this.TagsInputControlHost = TagsInputControlHost;
4539
+ this.UtilityService = UtilityService;
4540
+ this.controlValidationService = controlValidationService;
4541
+ this.globalSettings = globalSettings;
4542
+ this.OnChange = new EventEmitter();
4543
+ // TagInputControl: AbstractControl;
4544
+ this.SelectedId = [];
4545
+ this.tags = [];
4546
+ this.NewSelectionValidationKey = "";
4547
+ this.markAllAsTouched = false;
4548
+ this.validationRules = [];
4549
+ this.validationRulesasync = [];
4550
+ this.SearchResultHasItems = false;
4551
+ this.resetError = () => {
4552
+ this.controlValidationService.RemoveGlobalError();
4553
+ };
4554
+ //External Method
4555
+ this.RemoveRequiredValidation = () => {
4556
+ this.controlUtility.RemoveRequiredValidation(this.TagsFormControl, this.validationRules, this.options);
4557
+ };
4558
+ //External Method
4559
+ this.AddRequiredValidation = () => {
4560
+ this.controlUtility.AddRequiredValidation(this.TagsFormControl, this.validationRules, this.options);
4561
+ };
4562
+ //External Method
4563
+ this.RemoveCustomValidation = (CustomValidation) => {
4564
+ this.controlUtility.RemoveCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation);
4565
+ };
4566
+ //External Method
4567
+ this.AddCustomValidation = (CustomValidation) => {
4568
+ this.controlUtility.AddCustomValidation(this.TagsFormControl, this.validationRules, CustomValidation);
4569
+ };
4570
+ //External Method
4571
+ this.IsValid = () => {
4572
+ this.controlUtility.IsValid(this.TagsFormControl);
4573
+ };
4574
+ TagsInputComponent.controlContainerstatic = this.controlContainer;
4575
+ }
4576
+ static showErrorOfInputs(errors) {
4577
+ const controlContainerstatic = TagsInputComponent.controlContainerstatic;
4578
+ const formGroup = controlContainerstatic.control;
4579
+ for (const key in errors) {
4580
+ if (errors.hasOwnProperty(key)) {
4581
+ for (const iterator of errors[key]) {
4582
+ const formControl = formGroup.get(key);
4583
+ formControl.setErrors({ "FluentApi": iterator });
4584
+ formControl.markAsTouched();
4585
+ }
4586
+ }
4587
+ }
4588
+ }
4589
+ ngOnDestroy() {
4590
+ if (this.changeValueSubscription)
4591
+ this.changeValueSubscription.unsubscribe();
4592
+ }
4593
+ ngOnInit() {
4594
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
4595
+ this.controlValidationService.isCreatedBefor = false;
4596
+ this.options.DatasourceItemText = this.options.DatasourceItemText.toLowerCase();
4597
+ this.TagsFormGroup = new FormGroup({});
4598
+ ;
4599
+ this.TagsFormGroup.addControl("tags", new FormControl(''));
4600
+ this.TagsFormControl = this.TagsFormGroup.controls["tags"]; // new FormControl('',validationRules);
4601
+ this.group.addControl(this.options.Name, this.TagsFormControl);
4602
+ if (!this.options.ViewType)
4603
+ this.options.ViewType = this.globalSettings.ViewType;
4604
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
4605
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
4606
+ if (!this.options.NoResultText)
4607
+ this.options.NoResultText = this.UtilityService.getResourceValue("NoItemsMatch");
4608
+ // this.group.addControl(this.options.Name, new FormControl(''));
4609
+ // this.TagInputControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
4610
+ this.TagsFormControl.setValue(this.options.Value);
4611
+ if (this.options.IsRequired) {
4612
+ this.validationRules.push(Validators.required);
4613
+ }
4614
+ if (this.options.CustomValidation.length > 0) {
4615
+ let Validations = this.options.CustomValidation;
4616
+ for (let index = 0; index < Validations.length; index++) {
4617
+ const Validation = Validations[index];
4618
+ this.validationRules.push(Validation.functionBody);
4619
+ }
4620
+ }
4621
+ this.TagsFormControl.setValidators(this.validationRules);
4622
+ this.TagsFormControl.setAsyncValidators(this.validationRulesasync);
4623
+ if (this.options.IsDisabled) {
4624
+ this.TagsFormControl.disable();
4625
+ }
4626
+ if (this.options.Value != undefined && this.options.Value.length > 0) {
4627
+ for (let index = 0; index < this.options.Value.length; index++) {
4628
+ const element = this.options.Value[index];
4629
+ this.SelectedId.push(element.id);
4630
+ }
4631
+ this.tags = this.options.Value;
4632
+ this.TagsFormControl.setValue(this.options.Value);
4633
+ }
4634
+ this.TagsInputControlHost.ngSubmit.subscribe((value) => {
4635
+ this.group.markAllAsTouched();
4636
+ this.markAllAsTouched = true;
4637
+ });
4638
+ //Check for changing in value
4639
+ this.changeValueSubscription = this.TagsFormControl.valueChanges.subscribe(c => {
4640
+ var _a;
4641
+ this.tags = this.TagsFormControl.value;
4642
+ this.SelectedId = (_a = this.tags) === null || _a === void 0 ? void 0 : _a.filter(item => item.id).map(item => item.id);
4643
+ if (this.tags == null) {
4644
+ this.SearchKey.selected = "";
4645
+ this.tags = [];
4646
+ this.TagsFormControl.setValue([]);
4647
+ }
4648
+ });
4649
+ }
4650
+ ngAfterViewInit() {
4651
+ if (this.options.AttributeList != null) {
4652
+ var element = document.getElementById(this.options.Name);
4653
+ for (let index = 0; index < this.options.AttributeList.length; index++) {
4654
+ element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
4655
+ }
4656
+ }
4657
+ let inputElement = document.getElementById(this.options.Name).getElementsByTagName("input")[0];
4658
+ inputElement.setAttribute("autocomplete", "off");
4659
+ }
4660
+ showGlobalError() {
4661
+ this.controlUtility.showGlobalError();
4662
+ }
4324
4663
  getErrorValidation(ErrorList) {
4325
4664
  if (this.markAllAsTouched && this.group.invalid) {
4326
4665
  this.showGlobalError();
@@ -4427,29 +4766,25 @@ class TagsInputComponent {
4427
4766
  }
4428
4767
  }
4429
4768
  TagsInputComponent.controlContainerstatic = null;
4430
- TagsInputComponent.decorators = [
4431
- { type: Component, args: [{
4432
- // tslint:disable-next-line: component-selector
4433
- selector: 'BBSF-TagsInput',
4434
- template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"TagsFormGroup\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n"
4435
- },] }
4436
- ];
4437
- TagsInputComponent.ctorParameters = () => [
4438
- { type: HttpClient },
4439
- { type: ControlUtility },
4440
- { type: RequestHandlerService },
4441
- { type: ControlContainer, decorators: [{ type: Optional }] },
4442
- { type: FormGroupDirective },
4443
- { type: UtilityService },
4444
- { type: ControlValidationService },
4445
- { type: GlobalSettings }
4446
- ];
4447
- TagsInputComponent.propDecorators = {
4448
- group: [{ type: Input }],
4449
- options: [{ type: Input }],
4450
- OnChange: [{ type: Output }],
4451
- SearchKey: [{ type: ViewChild, args: ['SearchKey', { static: false },] }]
4452
- };
4769
+ TagsInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TagsInputComponent, deps: [{ token: i1$1.HttpClient }, { token: ControlUtility }, { token: i3.RequestHandlerService }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
4770
+ TagsInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TagsInputComponent, selector: "BBSF-TagsInput", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "SearchKey", first: true, predicate: ["SearchKey"], descendants: true }], ngImport: i0, template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"TagsFormGroup\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n [removeLastOnBackspace]=\"options.RemoveLastOnBackspace\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n [scrollableOptions]=\"options.ScrollableOptions\" [scrollableOptionsInView]=\"options.MaxSearchResultsCount\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n [maxTags]=\"options.MaxNumberTags\" [minLengthBeforeOptions]=\"options.MinSearchLength\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n", components: [{ type: BTagsInputComponent, selector: "b-tags-input", inputs: ["maxTags", "removeLastOnBackspace", "canDeleteTags", "canAddTags", "ViewMode", "placeholder", "showDescription", "options", "defaultImageURL", "minLengthBeforeOptions", "scrollableOptions", "scrollableOptionsInView"], outputs: ["onTagsChanged", "onMaxTagsReached", "onNoOptionsMatch", "onBlurInput"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
4771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TagsInputComponent, decorators: [{
4772
+ type: Component,
4773
+ args: [{ selector: 'BBSF-TagsInput', template: "\r\n<div [formGroup]=\"group\">\r\n <div class=\"form-group bbsf-control bbsf-tags-input\" [formGroup]=\"TagsFormGroup\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <b-tags-input type=\"text\" class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n [removeLastOnBackspace]=\"options.RemoveLastOnBackspace\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n [scrollableOptions]=\"options.ScrollableOptions\" [scrollableOptionsInView]=\"options.MaxSearchResultsCount\"\r\n (keydown)=\"AddTag($event,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n [maxTags]=\"options.MaxNumberTags\" [minLengthBeforeOptions]=\"options.MinSearchLength\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\"\r\n (onBlurInput)=\"onTagsInputBlur(SearchKey)\">\r\n </b-tags-input>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}}</div>\r\n </div>\r\n\r\n</div>\r\n" }]
4774
+ }], ctorParameters: function () {
4775
+ return [{ type: i1$1.HttpClient }, { type: ControlUtility }, { type: i3.RequestHandlerService }, { type: i2.ControlContainer, decorators: [{
4776
+ type: Optional
4777
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
4778
+ }, propDecorators: { group: [{
4779
+ type: Input
4780
+ }], options: [{
4781
+ type: Input
4782
+ }], OnChange: [{
4783
+ type: Output
4784
+ }], SearchKey: [{
4785
+ type: ViewChild,
4786
+ args: ['SearchKey', { static: false }]
4787
+ }] } });
4453
4788
 
4454
4789
  class PagingDTO {
4455
4790
  constructor() {
@@ -4475,6 +4810,159 @@ var FilterType;
4475
4810
  FilterType[FilterType["Other"] = 7] = "Other";
4476
4811
  })(FilterType || (FilterType = {}));
4477
4812
 
4813
+ class JwPaginationComponent {
4814
+ constructor() {
4815
+ this.changePage = new EventEmitter();
4816
+ this.initialPage = 1;
4817
+ this.pageSize = 10;
4818
+ this.maxPages = 10;
4819
+ this.ShowFirstAndLast = false;
4820
+ this.pager = {};
4821
+ }
4822
+ ngOnInit() {
4823
+ // set page if items array isn't empty
4824
+ if (this.items && this.items.length) {
4825
+ this.setPage(this.initialPage);
4826
+ }
4827
+ }
4828
+ ngOnChanges(changes) {
4829
+ if (changes.items.firstChange)
4830
+ return;
4831
+ // reset page if items array has changed
4832
+ if (changes.items.currentValue !== changes.items.previousValue) {
4833
+ this.setPage(this.initialPage);
4834
+ }
4835
+ }
4836
+ setPage(page) {
4837
+ // get new pager object for specified page
4838
+ this.pager = this.paginate(this.items.length, page, this.pageSize, this.maxPages);
4839
+ // get new page of items from items array
4840
+ var pageOfItems = this.items.slice(this.pager.startIndex, this.pager.endIndex + 1);
4841
+ // call change page function in parent component
4842
+ this.changePage.emit(this.pager.currentPage);
4843
+ }
4844
+ paginate(totalItems, currentPage, pageSize, maxPages) {
4845
+ if (currentPage === void 0) {
4846
+ currentPage = 1;
4847
+ }
4848
+ if (pageSize === void 0) {
4849
+ pageSize = 10;
4850
+ }
4851
+ if (maxPages === void 0) {
4852
+ maxPages = 10;
4853
+ }
4854
+ // calculate total pages
4855
+ var totalPages = Math.ceil(totalItems / pageSize);
4856
+ // ensure current page isn't out of range
4857
+ if (currentPage < 1) {
4858
+ currentPage = 1;
4859
+ }
4860
+ else if (currentPage > totalPages) {
4861
+ currentPage = totalPages;
4862
+ }
4863
+ var startPage, endPage;
4864
+ if (totalPages <= maxPages) {
4865
+ // total pages less than max so show all pages
4866
+ startPage = 1;
4867
+ endPage = totalPages;
4868
+ }
4869
+ else {
4870
+ // total pages more than max so calculate start and end pages
4871
+ var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);
4872
+ var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;
4873
+ if (currentPage <= maxPagesBeforeCurrentPage) {
4874
+ // current page near the start
4875
+ startPage = 1;
4876
+ endPage = maxPages;
4877
+ }
4878
+ else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {
4879
+ // current page near the end
4880
+ startPage = totalPages - maxPages + 1;
4881
+ endPage = totalPages;
4882
+ }
4883
+ else {
4884
+ // current page somewhere in the middle
4885
+ startPage = currentPage - maxPagesBeforeCurrentPage;
4886
+ endPage = currentPage + maxPagesAfterCurrentPage;
4887
+ }
4888
+ }
4889
+ // calculate start and end item indexes
4890
+ var startIndex = (currentPage - 1) * pageSize;
4891
+ var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);
4892
+ // create an array of pages to ng-repeat in the pager control
4893
+ var pages = Array.from(Array((endPage + 1) - startPage).keys()).map(function (i) { return startPage + i; });
4894
+ // return object with all pager properties required by the view
4895
+ return {
4896
+ totalItems: totalItems,
4897
+ currentPage: currentPage,
4898
+ pageSize: pageSize,
4899
+ totalPages: totalPages,
4900
+ startPage: startPage,
4901
+ endPage: endPage,
4902
+ startIndex: startIndex,
4903
+ endIndex: endIndex,
4904
+ pages: pages
4905
+ };
4906
+ }
4907
+ }
4908
+ JwPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: JwPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4909
+ JwPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: JwPaginationComponent, selector: "jw-pagination", inputs: { items: "items", initialPage: "initialPage", pageSize: "pageSize", maxPages: "maxPages", ShowFirstAndLast: "ShowFirstAndLast" }, outputs: { changePage: "changePage" }, usesOnChanges: true, ngImport: i0, template: `
4910
+ <ul *ngIf="pager.pages && pager.pages.length" class="pagination">
4911
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === 1}" class="page-item first-item">
4912
+ <a (click)="setPage(1)" class="page-link">❮❮</a>
4913
+ </li>
4914
+ <li [ngClass]="{disabled:pager.currentPage === 1}" class="page-item previous-item">
4915
+ <a (click)="setPage(pager.currentPage - 1)" class="page-link">❮</a>
4916
+ </li>
4917
+ <li *ngFor="let page of pager.pages" [ngClass]="{active:pager.currentPage === page}" class="page-item number-item">
4918
+ <a (click)="setPage(page)" class="page-link">{{page}}</a>
4919
+ </li>
4920
+ <li [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item next-item">
4921
+ <a (click)="setPage(pager.currentPage + 1)" class="page-link">❯</a>
4922
+ </li>
4923
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item last-item">
4924
+ <a (click)="setPage(pager.totalPages)" class="page-link">❯❯</a>
4925
+ </li>
4926
+ </ul>
4927
+ `, isInline: true, directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
4928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: JwPaginationComponent, decorators: [{
4929
+ type: Component,
4930
+ args: [{
4931
+ selector: 'jw-pagination',
4932
+ template: `
4933
+ <ul *ngIf="pager.pages && pager.pages.length" class="pagination">
4934
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === 1}" class="page-item first-item">
4935
+ <a (click)="setPage(1)" class="page-link">❮❮</a>
4936
+ </li>
4937
+ <li [ngClass]="{disabled:pager.currentPage === 1}" class="page-item previous-item">
4938
+ <a (click)="setPage(pager.currentPage - 1)" class="page-link">❮</a>
4939
+ </li>
4940
+ <li *ngFor="let page of pager.pages" [ngClass]="{active:pager.currentPage === page}" class="page-item number-item">
4941
+ <a (click)="setPage(page)" class="page-link">{{page}}</a>
4942
+ </li>
4943
+ <li [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item next-item">
4944
+ <a (click)="setPage(pager.currentPage + 1)" class="page-link">❯</a>
4945
+ </li>
4946
+ <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item last-item">
4947
+ <a (click)="setPage(pager.totalPages)" class="page-link">❯❯</a>
4948
+ </li>
4949
+ </ul>
4950
+ `
4951
+ }]
4952
+ }], propDecorators: { items: [{
4953
+ type: Input
4954
+ }], changePage: [{
4955
+ type: Output
4956
+ }], initialPage: [{
4957
+ type: Input
4958
+ }], pageSize: [{
4959
+ type: Input
4960
+ }], maxPages: [{
4961
+ type: Input
4962
+ }], ShowFirstAndLast: [{
4963
+ type: Input
4964
+ }] } });
4965
+
4478
4966
  // tslint:disable-next-line: no-conflicting-lifecycle
4479
4967
  class PagingComponent {
4480
4968
  constructor(utilityService, http, router, onChangeService, requestHandlerService) {
@@ -4739,172 +5227,38 @@ class PagingComponent {
4739
5227
  ControlValue = ControlValue;
4740
5228
  if (this.options.Filters[index].FilterType == FilterType.TagInput)
4741
5229
  ControlValue = ControlValue;
4742
- filters[this.options.Filters[index].ActionParameterName] = ControlValue;
4743
- }
4744
- }
4745
- else {
4746
- filters[this.options.Filters[index].ActionParameterName] = null;
4747
- }
4748
- }
4749
- else {
4750
- const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;
4751
- let ElementValue = document.querySelector(ElementjQuerySelector).value;
4752
- if (ElementValue != undefined && ElementValue != null)
4753
- filters[this.options.Filters[index].ActionParameterName] = ElementValue;
4754
- else
4755
- filters[this.options.Filters[index].ActionParameterName] = null;
4756
- }
4757
- }
4758
- }
4759
- return filters;
4760
- }
4761
- }
4762
- PagingComponent.decorators = [
4763
- { type: Component, args: [{
4764
- selector: 'BBSF-Paging',
4765
- template: "<div class=\"form-group bbsf-control bbsf-paging\" *ngIf=\"(result.length > 0)\">\r\n <!--paging container-->\r\n <div class=\"bbsf-paging-container\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <!--items-->\r\n <div class=\"bbsf-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <!--page count-->\r\n <div class=\"bbsf-pages\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\">\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"bssf-items\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--load more-->\r\n <div class=\"bbsf-loadmore\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n\r\n\r\n"
4766
- },] }
4767
- ];
4768
- PagingComponent.ctorParameters = () => [
4769
- { type: UtilityService },
4770
- { type: HttpClient },
4771
- { type: Router },
4772
- { type: OnPagingFiltersChangeService },
4773
- { type: RequestHandlerService }
4774
- ];
4775
- PagingComponent.propDecorators = {
4776
- Items: [{ type: Output }],
4777
- options: [{ type: Input }],
4778
- group: [{ type: Input }]
4779
- };
4780
-
4781
- class JwPaginationComponent {
4782
- constructor() {
4783
- this.changePage = new EventEmitter();
4784
- this.initialPage = 1;
4785
- this.pageSize = 10;
4786
- this.maxPages = 10;
4787
- this.ShowFirstAndLast = false;
4788
- this.pager = {};
4789
- }
4790
- ngOnInit() {
4791
- // set page if items array isn't empty
4792
- if (this.items && this.items.length) {
4793
- this.setPage(this.initialPage);
4794
- }
4795
- }
4796
- ngOnChanges(changes) {
4797
- if (changes.items.firstChange)
4798
- return;
4799
- // reset page if items array has changed
4800
- if (changes.items.currentValue !== changes.items.previousValue) {
4801
- this.setPage(this.initialPage);
4802
- }
4803
- }
4804
- setPage(page) {
4805
- // get new pager object for specified page
4806
- this.pager = this.paginate(this.items.length, page, this.pageSize, this.maxPages);
4807
- // get new page of items from items array
4808
- var pageOfItems = this.items.slice(this.pager.startIndex, this.pager.endIndex + 1);
4809
- // call change page function in parent component
4810
- this.changePage.emit(this.pager.currentPage);
4811
- }
4812
- paginate(totalItems, currentPage, pageSize, maxPages) {
4813
- if (currentPage === void 0) {
4814
- currentPage = 1;
4815
- }
4816
- if (pageSize === void 0) {
4817
- pageSize = 10;
4818
- }
4819
- if (maxPages === void 0) {
4820
- maxPages = 10;
4821
- }
4822
- // calculate total pages
4823
- var totalPages = Math.ceil(totalItems / pageSize);
4824
- // ensure current page isn't out of range
4825
- if (currentPage < 1) {
4826
- currentPage = 1;
4827
- }
4828
- else if (currentPage > totalPages) {
4829
- currentPage = totalPages;
4830
- }
4831
- var startPage, endPage;
4832
- if (totalPages <= maxPages) {
4833
- // total pages less than max so show all pages
4834
- startPage = 1;
4835
- endPage = totalPages;
4836
- }
4837
- else {
4838
- // total pages more than max so calculate start and end pages
4839
- var maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);
4840
- var maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;
4841
- if (currentPage <= maxPagesBeforeCurrentPage) {
4842
- // current page near the start
4843
- startPage = 1;
4844
- endPage = maxPages;
4845
- }
4846
- else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {
4847
- // current page near the end
4848
- startPage = totalPages - maxPages + 1;
4849
- endPage = totalPages;
4850
- }
4851
- else {
4852
- // current page somewhere in the middle
4853
- startPage = currentPage - maxPagesBeforeCurrentPage;
4854
- endPage = currentPage + maxPagesAfterCurrentPage;
5230
+ filters[this.options.Filters[index].ActionParameterName] = ControlValue;
5231
+ }
5232
+ }
5233
+ else {
5234
+ filters[this.options.Filters[index].ActionParameterName] = null;
5235
+ }
5236
+ }
5237
+ else {
5238
+ const ElementjQuerySelector = this.options.Filters[index].jQuerySelector;
5239
+ let ElementValue = document.querySelector(ElementjQuerySelector).value;
5240
+ if (ElementValue != undefined && ElementValue != null)
5241
+ filters[this.options.Filters[index].ActionParameterName] = ElementValue;
5242
+ else
5243
+ filters[this.options.Filters[index].ActionParameterName] = null;
5244
+ }
4855
5245
  }
4856
5246
  }
4857
- // calculate start and end item indexes
4858
- var startIndex = (currentPage - 1) * pageSize;
4859
- var endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);
4860
- // create an array of pages to ng-repeat in the pager control
4861
- var pages = Array.from(Array((endPage + 1) - startPage).keys()).map(function (i) { return startPage + i; });
4862
- // return object with all pager properties required by the view
4863
- return {
4864
- totalItems: totalItems,
4865
- currentPage: currentPage,
4866
- pageSize: pageSize,
4867
- totalPages: totalPages,
4868
- startPage: startPage,
4869
- endPage: endPage,
4870
- startIndex: startIndex,
4871
- endIndex: endIndex,
4872
- pages: pages
4873
- };
5247
+ return filters;
4874
5248
  }
4875
5249
  }
4876
- JwPaginationComponent.decorators = [
4877
- { type: Component, args: [{
4878
- selector: 'jw-pagination',
4879
- template: `
4880
- <ul *ngIf="pager.pages && pager.pages.length" class="pagination">
4881
- <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === 1}" class="page-item first-item">
4882
- <a (click)="setPage(1)" class="page-link">❮❮</a>
4883
- </li>
4884
- <li [ngClass]="{disabled:pager.currentPage === 1}" class="page-item previous-item">
4885
- <a (click)="setPage(pager.currentPage - 1)" class="page-link">❮</a>
4886
- </li>
4887
- <li *ngFor="let page of pager.pages" [ngClass]="{active:pager.currentPage === page}" class="page-item number-item">
4888
- <a (click)="setPage(page)" class="page-link">{{page}}</a>
4889
- </li>
4890
- <li [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item next-item">
4891
- <a (click)="setPage(pager.currentPage + 1)" class="page-link">❯</a>
4892
- </li>
4893
- <li *ngIf="ShowFirstAndLast" [ngClass]="{disabled:pager.currentPage === pager.totalPages}" class="page-item last-item">
4894
- <a (click)="setPage(pager.totalPages)" class="page-link">❯❯</a>
4895
- </li>
4896
- </ul>
4897
- `
4898
- },] }
4899
- ];
4900
- JwPaginationComponent.propDecorators = {
4901
- items: [{ type: Input }],
4902
- changePage: [{ type: Output }],
4903
- initialPage: [{ type: Input }],
4904
- pageSize: [{ type: Input }],
4905
- maxPages: [{ type: Input }],
4906
- ShowFirstAndLast: [{ type: Input }]
4907
- };
5250
+ PagingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagingComponent, deps: [{ token: i3.UtilityService }, { token: i1$1.HttpClient }, { token: i3$2.Router }, { token: OnPagingFiltersChangeService }, { token: i3.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
5251
+ PagingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PagingComponent, selector: "BBSF-Paging", inputs: { options: "options", group: "group" }, outputs: { Items: "Items" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-paging\" *ngIf=\"(result.length > 0)\">\r\n <!--paging container-->\r\n <div class=\"bbsf-paging-container\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <!--items-->\r\n <div class=\"bbsf-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <!--page count-->\r\n <div class=\"bbsf-pages\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\">\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"bssf-items\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--load more-->\r\n <div class=\"bbsf-loadmore\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n\r\n\r\n", components: [{ type: JwPaginationComponent, selector: "jw-pagination", inputs: ["items", "initialPage", "pageSize", "maxPages", "ShowFirstAndLast"], outputs: ["changePage"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i8$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] });
5252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PagingComponent, decorators: [{
5253
+ type: Component,
5254
+ args: [{ selector: 'BBSF-Paging', template: "<div class=\"form-group bbsf-control bbsf-paging\" *ngIf=\"(result.length > 0)\">\r\n <!--paging container-->\r\n <div class=\"bbsf-paging-container\" *ngIf=\"!options.IsLoadMoreControl\">\r\n <!--items-->\r\n <div class=\"bbsf-pagination\">\r\n <jw-pagination [items]=\"items\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\"\r\n (changePage)=\"onChangePage($event)\" [pageSize]=\"options.PageSize\" [ShowFirstAndLast]=\"options.ShowFirstAndLast\"\r\n [initialPage]=\"1\" [maxPages]=\"10\"></jw-pagination>\r\n </div>\r\n <!--page count-->\r\n <div class=\"bbsf-pages\" *ngIf=\"!((Pages==1)&&options.HidePaginationWhenPageSizeEqualOne)\">\r\n <select (change)=\"changePageSize($event)\" *ngIf=\"options.ShowPageSizeOption\">\r\n <option>10</option>\r\n <option>20</option>\r\n <option>50</option>\r\n <option>100</option>\r\n <option>200</option>\r\n </select>\r\n <div class=\"bssf-items\">\r\n <strong>{{totalRow}}</strong> {{itemsText}} {{utilityService.getResourceValue(\"In\")}} <strong> {{Pages}}</strong> {{pagesText}}\r\n </div>\r\n </div>\r\n </div>\r\n <!--load more-->\r\n <div class=\"bbsf-loadmore\" *ngIf=\"options.IsLoadMoreControl\">\r\n <div class=\"search-results\" infinite-scroll [infiniteScrollDistance]=\"ScrollDistance\"\r\n [infiniteScrollUpDistance]=\"ScrollUpDistance\" [infiniteScrollThrottle]=\"Throttle\" (scrolled)=\"options.IsInfiniteScroll==true?onScrollDown():null\"\r\n [scrollWindow]=\"options.ScrollWindow\" [infiniteScrollContainer]=\"options.InfiniteScrollContainer\">\r\n </div>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"onScrollDown()\" *ngIf=\"!(result.length==totalRow)\">{{utilityService.getResourceValue(\"LoadMore\")}}</button>\r\n </div>\r\n</div>\r\n\r\n\r\n" }]
5255
+ }], ctorParameters: function () { return [{ type: i3.UtilityService }, { type: i1$1.HttpClient }, { type: i3$2.Router }, { type: OnPagingFiltersChangeService }, { type: i3.RequestHandlerService }]; }, propDecorators: { Items: [{
5256
+ type: Output
5257
+ }], options: [{
5258
+ type: Input
5259
+ }], group: [{
5260
+ type: Input
5261
+ }] } });
4908
5262
 
4909
5263
  class RadioButtonComponent {
4910
5264
  // tslint:disable-next-line: max-line-length
@@ -4988,26 +5342,22 @@ class RadioButtonComponent {
4988
5342
  }
4989
5343
  }
4990
5344
  RadioButtonComponent.controlContainerstatic = null;
4991
- RadioButtonComponent.decorators = [
4992
- { type: Component, args: [{
4993
- // tslint:disable-next-line: component-selector
4994
- selector: 'BBSF-RadioButton',
4995
- template: "<div class=\"form-group bbsf-control bbsf-radio-button\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <div class=\"radio-container\" *ngFor=\"let item of options.Items\">\r\n <input type=\"radio\" id=\"{{options.Name}}{{item.Value}}\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [value]=\"item.Value\" checked=\"{{(options.Value!=null)&&(options.Value.Value == item.Value)}}\"\r\n (change)=\"onValueChanged()\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" [(ngModel)]=\"options.Value\"\r\n formControlName=\"{{options.Name}}\">\r\n <label class=\"radio-input-label\" for=\"{{options.Name}}{{item.Value}}\">{{item.Text}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(RadioButtonFormControl.invalid && RadioButtonFormControl.touched)\">\r\n {{getErrorValidation(RadioButtonFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n\r\n"
4996
- },] }
4997
- ];
4998
- RadioButtonComponent.ctorParameters = () => [
4999
- { type: ControlUtility },
5000
- { type: ControlContainer, decorators: [{ type: Optional }] },
5001
- { type: FormGroupDirective },
5002
- { type: UtilityService },
5003
- { type: ControlValidationService },
5004
- { type: GlobalSettings }
5005
- ];
5006
- RadioButtonComponent.propDecorators = {
5007
- group: [{ type: Input }],
5008
- options: [{ type: Input }],
5009
- OnChange: [{ type: Output }]
5010
- };
5345
+ RadioButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RadioButtonComponent, deps: [{ token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
5346
+ RadioButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RadioButtonComponent, selector: "BBSF-RadioButton", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-radio-button\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <div class=\"radio-container\" *ngFor=\"let item of options.Items\">\r\n <input type=\"radio\" id=\"{{options.Name}}{{item.Value}}\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [value]=\"item.Value\" checked=\"{{(options.Value!=null)&&(options.Value.Value == item.Value)}}\"\r\n (change)=\"onValueChanged()\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" [(ngModel)]=\"options.Value\"\r\n formControlName=\"{{options.Name}}\">\r\n <label class=\"radio-input-label\" for=\"{{options.Name}}{{item.Value}}\">{{item.Text}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(RadioButtonFormControl.invalid && RadioButtonFormControl.touched)\">\r\n {{getErrorValidation(RadioButtonFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
5347
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RadioButtonComponent, decorators: [{
5348
+ type: Component,
5349
+ args: [{ selector: 'BBSF-RadioButton', template: "<div class=\"form-group bbsf-control bbsf-radio-button\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label [hidden]=\"options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <div class=\"radio-container\" *ngFor=\"let item of options.Items\">\r\n <input type=\"radio\" id=\"{{options.Name}}{{item.Value}}\"\r\n class=\"{{options.ExtraClasses}}\"\r\n [value]=\"item.Value\" checked=\"{{(options.Value!=null)&&(options.Value.Value == item.Value)}}\"\r\n (change)=\"onValueChanged()\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" [(ngModel)]=\"options.Value\"\r\n formControlName=\"{{options.Name}}\">\r\n <label class=\"radio-input-label\" for=\"{{options.Name}}{{item.Value}}\">{{item.Text}}</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(RadioButtonFormControl.invalid && RadioButtonFormControl.touched)\">\r\n {{getErrorValidation(RadioButtonFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n\r\n" }]
5350
+ }], ctorParameters: function () {
5351
+ return [{ type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
5352
+ type: Optional
5353
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
5354
+ }, propDecorators: { group: [{
5355
+ type: Input
5356
+ }], options: [{
5357
+ type: Input
5358
+ }], OnChange: [{
5359
+ type: Output
5360
+ }] } });
5011
5361
 
5012
5362
  var LanguageValidation;
5013
5363
  (function (LanguageValidation) {
@@ -5064,6 +5414,7 @@ class TextboxComponent {
5064
5414
  TextboxComponent.controlContainerstatic = this.controlContainer;
5065
5415
  }
5066
5416
  ngOnInit() {
5417
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
5067
5418
  this.controlValidationService.isCreatedBefor = false;
5068
5419
  if (!this.options.MaxLength)
5069
5420
  this.options.MaxLength = this.globalSettings.MaxLengthTextBox;
@@ -5250,25 +5601,22 @@ class TextboxComponent {
5250
5601
  }
5251
5602
  }
5252
5603
  TextboxComponent.controlContainerstatic = null;
5253
- TextboxComponent.decorators = [
5254
- { type: Component, args: [{
5255
- selector: 'BBSF-TextBox',
5256
- template: "<div class=\"form-group bbsf-control bbsf-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--MaskPattern-->\r\n <div *ngIf=\"MaskPattern!=null&&MaskPattern!=''\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\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)}}\" [(ngModel)]=\"options.Value\"\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()\" [readonly]=\"options.IsReadonly\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <!--NoMaskPattern-->\r\n <div *ngIf=\"MaskPattern==null||MaskPattern==''\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}} \"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\" [readonly]=\"options.IsReadonly\"\r\n #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" triggers=\"click:blur\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}}</div>\r\n</div>\r\n"
5257
- },] }
5258
- ];
5259
- TextboxComponent.ctorParameters = () => [
5260
- { type: ControlUtility },
5261
- { type: ControlContainer, decorators: [{ type: Optional }] },
5262
- { type: FormGroupDirective },
5263
- { type: UtilityService },
5264
- { type: ControlValidationService },
5265
- { type: GlobalSettings }
5266
- ];
5267
- TextboxComponent.propDecorators = {
5268
- group: [{ type: Input }],
5269
- options: [{ type: Input }],
5270
- OnChange: [{ type: Output }]
5271
- };
5604
+ TextboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextboxComponent, deps: [{ token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
5605
+ TextboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: TextboxComponent, selector: "BBSF-TextBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--MaskPattern-->\r\n <div *ngIf=\"MaskPattern!=null&&MaskPattern!=''\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n type=\"{{getInputType(options.Type)}}\" [(ngModel)]=\"options.Value\"\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()\" [readonly]=\"options.IsReadonly\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <!--NoMaskPattern-->\r\n <div *ngIf=\"MaskPattern==null||MaskPattern==''\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}} \"\r\n [dir]=\"textDir\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\" [readonly]=\"options.IsReadonly\"\r\n #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" triggers=\"click:blur\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}}</div>\r\n</div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6$2.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i7$4.MaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
5606
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TextboxComponent, decorators: [{
5607
+ type: Component,
5608
+ args: [{ selector: 'BBSF-TextBox', template: "<div class=\"form-group bbsf-control bbsf-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--MaskPattern-->\r\n <div *ngIf=\"MaskPattern!=null&&MaskPattern!=''\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div *ngIf=\"options.Icon!=null\" class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [mask]=\"MaskPattern\" placeHolderCharacter=\" \" [showMaskTyped]=\"true\" [validation]=\"true\"\r\n [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n type=\"{{getInputType(options.Type)}}\" [(ngModel)]=\"options.Value\"\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()\" [readonly]=\"options.IsReadonly\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\"\r\n #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n <!--NoMaskPattern-->\r\n <div *ngIf=\"MaskPattern==null||MaskPattern==''\" class=\"bbsf-input-container\" [ngClass]=\"options.EnableCopyToClipboard? 'p-40px' : '' \">\r\n <!--Icon-->\r\n <div class=\"svg svg-icon-grey bbsf-icon\" [ngClass]=\"(options.IconPosition==1)?'bbsf-left-icon':'bbsf-right-icon'\" *ngIf=\"options.Icon!=null\">\r\n <span [inlineSVG]=\"options.Icon\"></span>\r\n </div>\r\n <!--input-->\r\n <input class=\"form-control {{options.ExtraClasses}} \"\r\n [dir]=\"textDir\"\r\n (focus)=\"onFocus(true)\" (focusout)=\"onFocus(false)\"\r\n maxlength=\"{{options.MaxLength}}\" minlength=\"{{options.MinLength}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"{{getInputType(options.Type)}}\"\r\n [class.is-invalid]=\"TextBoxFormControl.invalid && TextBoxFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"trimControlValue()\" (keyup)=\"onTextChange()\" [(ngModel)]=\"options.Value\"\r\n (keydown)=\"WordCountArray>options.MaxWordCount&&$event.keyCode !=8?$event.preventDefault():null\" [readonly]=\"options.IsReadonly\"\r\n #userinput>\r\n <!--CopyToClipboard-->\r\n <span class=\"copy-clipboard\" ngbTooltip=\"Copied!\" triggers=\"click:blur\" *ngIf=\"options.EnableCopyToClipboard\" (click)=\"copyInputMessage(userinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!--wordCount-->\r\n <div class=\"bbsf-word-count\" *ngIf=\"options.MaxWordCount>0&&IsShowWordCount\">{{WordCount}}/{{options.MaxWordCount}} Words</div>\r\n <!-- CharsLimitMsg-->\r\n <div class=\"bbsf-character-count\" *ngIf=\"showCharsLimitMsg\" [ngClass]=\"{'badge-light-warning': charsLimitMsgClass === 'warning', 'badge-light-danger' : charsLimitMsgClass === 'danger' }\">\r\n {{maxLimitWarningMsg}}\r\n </div>\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" [dir]=\"textDir\"\r\n *ngIf=\"(TextBoxFormControl.invalid && TextBoxFormControl.touched)\">\r\n {{getErrorValidation(TextBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}}</div>\r\n</div>\r\n" }]
5609
+ }], ctorParameters: function () {
5610
+ return [{ type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
5611
+ type: Optional
5612
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
5613
+ }, propDecorators: { group: [{
5614
+ type: Input
5615
+ }], options: [{
5616
+ type: Input
5617
+ }], OnChange: [{
5618
+ type: Output
5619
+ }] } });
5272
5620
 
5273
5621
  class MapAutocompleteDTO {
5274
5622
  constructor() {
@@ -5381,10 +5729,16 @@ class MapAutoCompleteComponent {
5381
5729
  place.address_components.forEach(( /**
5382
5730
  * @param {?} value
5383
5731
  * @return {?}
5384
- *//**
5732
+ */ /**
5733
+ * @param {?} value
5734
+ * @return {?}
5735
+ *//**
5385
5736
  * @param {?} value
5386
5737
  * @return {?}
5387
- */ value => {
5738
+ */ /**
5739
+ * @param {?} value
5740
+ * @return {?}
5741
+ */ value => {
5388
5742
  if (value.types.indexOf('street_number') > -1) {
5389
5743
  germanAddress["streetNumber"] = value.short_name;
5390
5744
  }
@@ -5570,29 +5924,25 @@ class MapAutoCompleteComponent {
5570
5924
  }
5571
5925
  }
5572
5926
  MapAutoCompleteComponent.controlContainerstatic = null;
5573
- MapAutoCompleteComponent.decorators = [
5574
- { type: Component, args: [{
5575
- selector: 'BBSF-MapAutoComplete',
5576
- template: "\r\n<div class=\"form-group bbsf-control bbsf-maps\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control{{options.ExtraClasses}}\"\r\n [value]=\"MapAutoCompleteModel.Text\"\r\n [address]=\"MapAutoCompleteModel.Text\"\r\n value=\"{{MapAutoCompleteModel.Text}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (keyup)=\"GermanAddressMapped($event)\"\r\n matGoogleMapsAutocomplete #search (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\" (onGermanAddressMapped)=\"GermanAddressMapped($event)\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}} </div>\r\n</div>\r\n"
5577
- },] }
5578
- ];
5579
- MapAutoCompleteComponent.ctorParameters = () => [
5580
- { type: MapsAPILoader },
5581
- { type: NgZone },
5582
- { type: ControlUtility },
5583
- { type: ControlContainer, decorators: [{ type: Optional }] },
5584
- { type: FormGroupDirective },
5585
- { type: UtilityService },
5586
- { type: BBSFTranslateService },
5587
- { type: ControlValidationService },
5588
- { type: GlobalSettings }
5589
- ];
5590
- MapAutoCompleteComponent.propDecorators = {
5591
- group: [{ type: Input }],
5592
- options: [{ type: Input }],
5593
- OnChange: [{ type: Output }],
5594
- searchElementRef: [{ type: ViewChild, args: ["search", { static: false },] }]
5595
- };
5927
+ MapAutoCompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MapAutoCompleteComponent, deps: [{ token: i1$2.MapsAPILoader }, { token: i0.NgZone }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
5928
+ MapAutoCompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MapAutoCompleteComponent, selector: "BBSF-MapAutoComplete", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "searchElementRef", first: true, predicate: ["search"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"form-group bbsf-control bbsf-maps\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control{{options.ExtraClasses}}\"\r\n [value]=\"MapAutoCompleteModel.Text\"\r\n [address]=\"MapAutoCompleteModel.Text\"\r\n value=\"{{MapAutoCompleteModel.Text}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (keyup)=\"GermanAddressMapped($event)\"\r\n matGoogleMapsAutocomplete #search (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\" (onGermanAddressMapped)=\"GermanAddressMapped($event)\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}} </div>\r\n</div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7$5.MatGoogleMapsAutocompleteDirective, selector: "[matGoogleMapsAutocomplete]", inputs: ["autoCompleteOptions", "value", "address", "country", "placeIdOnly", "strictBounds", "types", "type"], outputs: ["onChange", "onAutocompleteSelected", "onGermanAddressMapped", "onLocationSelected"], exportAs: ["matGoogleMapsAutocomplete"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
5929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MapAutoCompleteComponent, decorators: [{
5930
+ type: Component,
5931
+ args: [{ selector: 'BBSF-MapAutoComplete', template: "\r\n<div class=\"form-group bbsf-control bbsf-maps\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control{{options.ExtraClasses}}\"\r\n [value]=\"MapAutoCompleteModel.Text\"\r\n [address]=\"MapAutoCompleteModel.Text\"\r\n value=\"{{MapAutoCompleteModel.Text}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (keyup)=\"GermanAddressMapped($event)\"\r\n matGoogleMapsAutocomplete #search (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\" (onGermanAddressMapped)=\"GermanAddressMapped($event)\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\">{{resetError()}} </div>\r\n</div>\r\n" }]
5932
+ }], ctorParameters: function () {
5933
+ return [{ type: i1$2.MapsAPILoader }, { type: i0.NgZone }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
5934
+ type: Optional
5935
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }, { type: GlobalSettings }];
5936
+ }, propDecorators: { group: [{
5937
+ type: Input
5938
+ }], options: [{
5939
+ type: Input
5940
+ }], OnChange: [{
5941
+ type: Output
5942
+ }], searchElementRef: [{
5943
+ type: ViewChild,
5944
+ args: ["search", { static: false }]
5945
+ }] } });
5596
5946
 
5597
5947
  var CalendarView;
5598
5948
  (function (CalendarView) {
@@ -5742,27 +6092,23 @@ class CalendarComponent {
5742
6092
  }
5743
6093
  }
5744
6094
  CalendarComponent.controlContainerstatic = null;
5745
- CalendarComponent.decorators = [
5746
- { type: Component, args: [{
5747
- selector: 'BBSF-Calendar',
5748
- 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",
5749
- styles: [""]
5750
- },] }
5751
- ];
5752
- CalendarComponent.ctorParameters = () => [
5753
- { type: ErrorMassageValidation },
5754
- { type: ControlUtility },
5755
- { type: ControlContainer, decorators: [{ type: Optional }] },
5756
- { type: FormGroupDirective },
5757
- { type: UtilityService },
5758
- { type: BBSFTranslateService },
5759
- { type: ControlValidationService }
5760
- ];
5761
- CalendarComponent.propDecorators = {
5762
- group: [{ type: Input }],
5763
- options: [{ type: Input }],
5764
- calendarComponent: [{ type: ViewChild, args: ['calendar', { static: false },] }]
5765
- };
6095
+ CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, deps: [{ token: ErrorMassageValidation }, { token: ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component });
6096
+ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", 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: [""], components: [{ type: i5$2.FullCalendarComponent, selector: "full-calendar", inputs: ["options", "deepChangeDetection"] }], directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }] });
6097
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
6098
+ type: Component,
6099
+ 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", styles: [""] }]
6100
+ }], ctorParameters: function () {
6101
+ return [{ type: ErrorMassageValidation }, { type: ControlUtility }, { type: i2.ControlContainer, decorators: [{
6102
+ type: Optional
6103
+ }] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }];
6104
+ }, propDecorators: { group: [{
6105
+ type: Input
6106
+ }], options: [{
6107
+ type: Input
6108
+ }], calendarComponent: [{
6109
+ type: ViewChild,
6110
+ args: ['calendar', { static: false }]
6111
+ }] } });
5766
6112
 
5767
6113
  var PagingActionMode;
5768
6114
  (function (PagingActionMode) {
@@ -5850,25 +6196,16 @@ class FormComponent {
5850
6196
  return result;
5851
6197
  }
5852
6198
  }
5853
- FormComponent.decorators = [
5854
- { type: Component, args: [{
5855
- // tslint:disable-next-line: component-selector
5856
- selector: 'BBSF-Form',
5857
- template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.FormGroup\" (ngSubmit)=\"submit()\" > \r\n \r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>"
5858
- },] }
5859
- ];
5860
- FormComponent.ctorParameters = () => [
5861
- { type: ControlUtility },
5862
- { type: UtilityService },
5863
- { type: ControlValidationService },
5864
- { type: NgbModal },
5865
- { type: NgbActiveModal },
5866
- { type: Router }
5867
- ];
5868
- FormComponent.propDecorators = {
5869
- OnChange: [{ type: Output }],
5870
- options: [{ type: Input }]
5871
- };
6199
+ FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormComponent, deps: [{ token: ControlUtility }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: i3$1.NgbModal }, { token: i3$1.NgbActiveModal }, { token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component });
6200
+ FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: FormComponent, selector: "BBSF-Form", inputs: { options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.FormGroup\" (ngSubmit)=\"submit()\" > \r\n \r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>", directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
6201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FormComponent, decorators: [{
6202
+ type: Component,
6203
+ args: [{ selector: 'BBSF-Form', template: "<form id=\"{{fromName}}\" [FormGroup]=\"options.FormGroup\" (ngSubmit)=\"submit()\" > \r\n \r\n <ng-template #content><ng-content></ng-content></ng-template>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n</form>" }]
6204
+ }], ctorParameters: function () { return [{ type: ControlUtility }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: i3$1.NgbModal }, { type: i3$1.NgbActiveModal }, { type: i3$2.Router }]; }, propDecorators: { OnChange: [{
6205
+ type: Output
6206
+ }], options: [{
6207
+ type: Input
6208
+ }] } });
5872
6209
 
5873
6210
  class ConfirmationModalComponent {
5874
6211
  constructor(utilityService, modalService, router) {
@@ -5986,152 +6323,33 @@ class ConfirmationModalComponent {
5986
6323
  this.utilityService.stopBlockUI();
5987
6324
  }
5988
6325
  }
5989
- ConfirmationModalComponent.decorators = [
5990
- { type: Component, args: [{
5991
- template: "",
5992
- selector: 'BBSF-ConfirmationModal'
5993
- },] }
5994
- ];
5995
- ConfirmationModalComponent.ctorParameters = () => [
5996
- { type: UtilityService },
5997
- { type: NgbModal },
5998
- { type: Router }
5999
- ];
6000
- ConfirmationModalComponent.propDecorators = {
6001
- options: [{ type: Input }],
6002
- confirmationModal: [{ type: ViewChild, args: ['confirmationModal', { static: false },] }]
6003
- };
6326
+ ConfirmationModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfirmationModalComponent, deps: [{ token: i3.UtilityService }, { token: i3$1.NgbModal }, { token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component });
6327
+ ConfirmationModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: { options: "options" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "" });
6328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfirmationModalComponent, decorators: [{
6329
+ type: Component,
6330
+ args: [{ selector: 'BBSF-ConfirmationModal', template: "" }]
6331
+ }], ctorParameters: function () { return [{ type: i3.UtilityService }, { type: i3$1.NgbModal }, { type: i3$2.Router }]; }, propDecorators: { options: [{
6332
+ type: Input
6333
+ }], confirmationModal: [{
6334
+ type: ViewChild,
6335
+ args: ['confirmationModal', { static: false }]
6336
+ }] } });
6004
6337
 
6005
6338
  class NgTemplateNameDirective {
6006
6339
  constructor(template) {
6007
6340
  this.template = template;
6008
6341
  }
6009
6342
  }
6010
- NgTemplateNameDirective.decorators = [
6011
- { type: Directive, args: [{
6012
- selector: 'ng-template[name]'
6013
- },] }
6014
- ];
6015
- NgTemplateNameDirective.ctorParameters = () => [
6016
- { type: TemplateRef }
6017
- ];
6018
- NgTemplateNameDirective.propDecorators = {
6019
- name: [{ type: Input }]
6020
- };
6021
-
6022
- class RepeaterComponent {
6023
- constructor() {
6024
- this.templateRefs = [];
6025
- this.items = [];
6026
- this.originalItems = [];
6027
- this.repeaterContext = { index: 0, delete: null, elements: null };
6028
- }
6029
- ngOnInit() {
6030
- this.currentTemplate = this.initialTemplate;
6031
- this.repeaterGroup = new FormGroup({});
6032
- this.group.addControl(this.options.Name, this.repeaterGroup);
6033
- if (this.options.RepeaterValue.length > 0) {
6034
- this.originalItems = this.options.RepeaterValue;
6035
- for (let index = 0; index < this.options.RepeaterValue.length; index++) {
6036
- this.items.push(index + 1);
6037
- }
6038
- }
6039
- else
6040
- for (let index = 0; index < this.options.MinRequiredItems; index++) {
6041
- this.items.push(index);
6042
- }
6043
- this.repeaterGroup.valueChanges.subscribe((res) => {
6044
- let result = [];
6045
- let rowNumber = [];
6046
- let addItems = [];
6047
- for (const key in this.repeaterGroup.controls) {
6048
- if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
6049
- const keySplitArr = key.split('.');
6050
- let item = {
6051
- [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
6052
- };
6053
- addItems.push(item);
6054
- if (!rowNumber.includes(keySplitArr[1]))
6055
- rowNumber.push(keySplitArr[1]);
6056
- }
6057
- }
6058
- for (let index = 0; index < rowNumber.length; index++) {
6059
- const row = rowNumber[index];
6060
- let addObject = {};
6061
- let filteredElements = addItems.filter(item => item[row]);
6062
- for (let index = 0; index < filteredElements.length; index++) {
6063
- const filteredElement = filteredElements[index];
6064
- for (const key in filteredElement) {
6065
- if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
6066
- const element = filteredElement[key];
6067
- for (const key in element) {
6068
- if (Object.prototype.hasOwnProperty.call(element, key)) {
6069
- const value = element[key];
6070
- addObject[key] = value;
6071
- }
6072
- }
6073
- }
6074
- }
6075
- }
6076
- result.push(addObject);
6077
- }
6078
- this.options.RepeaterValue = result;
6079
- });
6080
- }
6081
- deleteItem(Index) {
6082
- if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
6083
- return;
6084
- let deletedControls = [];
6085
- let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
6086
- for (const key in this.repeaterGroup.controls) {
6087
- if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
6088
- for (let index = 0; index < controlNames.length; index++) {
6089
- const element = controlNames[index];
6090
- const keySplitArr = key.split('.');
6091
- if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
6092
- const element = this.repeaterGroup.controls[key];
6093
- deletedControls.push({ [key]: element });
6094
- }
6095
- }
6096
- }
6097
- }
6098
- for (let index = 0; index < deletedControls.length; index++) {
6099
- const element = deletedControls[index];
6100
- for (const key in element) {
6101
- if (Object.prototype.hasOwnProperty.call(element, key)) {
6102
- this.repeaterGroup.removeControl(key);
6103
- }
6104
- }
6105
- }
6106
- this.items = this.items.filter((res) => res != this.items[Index]);
6107
- }
6108
- addItem() {
6109
- this.items.push(this.items.length);
6110
- }
6111
- ngAfterViewInit() {
6112
- let templateRefs = this._templates["_results"].map((item) => item["template"]);
6113
- this.templateRefs = templateRefs;
6114
- this.repeaterContext.elements = this.templateRefs;
6115
- this.repeaterContext.delete = this.delete;
6116
- }
6117
- setCurrentIndex(i) {
6118
- this.repeaterContext.index = i;
6119
- }
6120
- }
6121
- RepeaterComponent.decorators = [
6122
- { type: Component, args: [{
6123
- selector: 'BBSF-repeater',
6124
- template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n"
6125
- },] }
6126
- ];
6127
- RepeaterComponent.ctorParameters = () => [];
6128
- RepeaterComponent.propDecorators = {
6129
- group: [{ type: Input }],
6130
- options: [{ type: Input }],
6131
- initialTemplate: [{ type: Input }],
6132
- _templates: [{ type: ViewChildren, args: [NgTemplateNameDirective,] }],
6133
- delete: [{ type: ViewChild, args: ['delete', { static: false },] }]
6134
- };
6343
+ NgTemplateNameDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NgTemplateNameDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
6344
+ NgTemplateNameDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.12", type: NgTemplateNameDirective, selector: "ng-template[name]", inputs: { name: "name" }, ngImport: i0 });
6345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NgTemplateNameDirective, decorators: [{
6346
+ type: Directive,
6347
+ args: [{
6348
+ selector: 'ng-template[name]'
6349
+ }]
6350
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { name: [{
6351
+ type: Input
6352
+ }] } });
6135
6353
 
6136
6354
  var PermissionSets;
6137
6355
  (function (PermissionSets) {
@@ -6337,12 +6555,11 @@ class RenderComponentService {
6337
6555
  }
6338
6556
  }
6339
6557
  }
6340
- RenderComponentService.decorators = [
6341
- { type: Injectable }
6342
- ];
6343
- RenderComponentService.ctorParameters = () => [
6344
- { type: ComponentFactoryResolver }
6345
- ];
6558
+ RenderComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RenderComponentService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
6559
+ RenderComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RenderComponentService });
6560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RenderComponentService, decorators: [{
6561
+ type: Injectable
6562
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });
6346
6563
 
6347
6564
  class RepeaterFieldBuilderComponent {
6348
6565
  constructor(renderComponentService, TextControlHost) {
@@ -7027,526 +7244,316 @@ class RepeaterFieldBuilderComponent {
7027
7244
  this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
7028
7245
  break;
7029
7246
  //Location
7030
- case DataType.Location:
7031
- let Location = new MapAutoCompleteOptions();
7032
- Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
7033
- Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
7034
- Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
7035
- Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
7036
- Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
7037
- Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
7038
- Location.Value = value;
7039
- this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
7040
- break;
7041
- default:
7042
- break;
7043
- }
7044
- }
7045
- }
7046
- }
7047
- RepeaterFieldBuilderComponent.decorators = [
7048
- { type: Component, args: [{
7049
- selector: 'repeater-field-builder',
7050
- template: "<ng-container #Item></ng-container>\r\n"
7051
- },] }
7052
- ];
7053
- RepeaterFieldBuilderComponent.ctorParameters = () => [
7054
- { type: RenderComponentService },
7055
- { type: FormGroupDirective }
7056
- ];
7057
- RepeaterFieldBuilderComponent.propDecorators = {
7058
- Item: [{ type: ViewChild, args: ["Item", { read: ViewContainerRef },] }],
7059
- group: [{ type: Input }],
7060
- itemNumber: [{ type: Input }],
7061
- controlNumber: [{ type: Input }],
7062
- RepeaterField: [{ type: Input }],
7063
- itemsValue: [{ type: Input }]
7064
- };
7065
-
7066
- class RepeaterItemFieldComponent {
7067
- constructor() { }
7068
- ngOnInit() {
7069
- }
7070
- }
7071
- RepeaterItemFieldComponent.decorators = [
7072
- { type: Component, args: [{
7073
- selector: 'repeater-item-field',
7074
- template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>\r\n"
7075
- },] }
7076
- ];
7077
- RepeaterItemFieldComponent.ctorParameters = () => [];
7078
- RepeaterItemFieldComponent.propDecorators = {
7079
- templates: [{ type: Input }],
7080
- filedIndex: [{ type: Input }],
7081
- itemIndex: [{ type: Input }]
7082
- };
7083
-
7084
- class RepeaterTableComponent {
7085
- constructor(utilityService) {
7086
- this.utilityService = utilityService;
7087
- this.items = [];
7088
- this.originalItems = [];
7089
- }
7090
- ngOnInit() {
7091
- this.repeaterGroup = new FormGroup({});
7092
- this.group.addControl(this.options.Name, this.repeaterGroup);
7093
- if (this.options.RepeaterValue.length > 0) {
7094
- this.originalItems = this.options.RepeaterValue;
7095
- for (let index = 0; index < this.options.RepeaterValue.length; index++) {
7096
- this.items.push(index);
7097
- }
7098
- }
7099
- else
7100
- for (let index = 0; index < this.options.MinRequiredItems; index++) {
7101
- this.items.push(index);
7102
- }
7103
- this.repeaterGroup.valueChanges.subscribe((res) => {
7104
- let result = [];
7105
- let rowNumber = [];
7106
- let addItems = [];
7107
- for (const key in this.repeaterGroup.controls) {
7108
- if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
7109
- const keySplitArr = key.split('.');
7110
- let item = {
7111
- [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
7112
- };
7113
- addItems.push(item);
7114
- if (!rowNumber.includes(keySplitArr[1]))
7115
- rowNumber.push(keySplitArr[1]);
7116
- }
7117
- }
7118
- for (let index = 0; index < rowNumber.length; index++) {
7119
- const row = rowNumber[index];
7120
- let addObject = {};
7121
- let filteredElements = addItems.filter(item => item[row]);
7122
- for (let index = 0; index < filteredElements.length; index++) {
7123
- const filteredElement = filteredElements[index];
7124
- for (const key in filteredElement) {
7125
- if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
7126
- const element = filteredElement[key];
7127
- for (const key in element) {
7128
- if (Object.prototype.hasOwnProperty.call(element, key)) {
7129
- const value = element[key];
7130
- addObject[key] = value;
7131
- }
7132
- }
7133
- }
7134
- }
7135
- }
7136
- result.push(addObject);
7137
- }
7138
- this.options.RepeaterValue = result;
7139
- });
7140
- }
7141
- deleteItem(Index) {
7142
- if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
7143
- return;
7144
- let deletedControls = [];
7145
- let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
7146
- for (const key in this.repeaterGroup.controls) {
7147
- if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
7148
- for (let index = 0; index < controlNames.length; index++) {
7149
- const element = controlNames[index];
7150
- const keySplitArr = key.split('.');
7151
- if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
7152
- const element = this.repeaterGroup.controls[key];
7153
- deletedControls.push({ [key]: element });
7154
- }
7155
- }
7156
- }
7157
- }
7158
- for (let index = 0; index < deletedControls.length; index++) {
7159
- const element = deletedControls[index];
7160
- for (const key in element) {
7161
- if (Object.prototype.hasOwnProperty.call(element, key)) {
7162
- this.repeaterGroup.removeControl(key);
7247
+ case DataType.Location:
7248
+ let Location = new MapAutoCompleteOptions();
7249
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
7250
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
7251
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
7252
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
7253
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
7254
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
7255
+ Location.Value = value;
7256
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
7257
+ break;
7258
+ default:
7259
+ break;
7163
7260
  }
7164
7261
  }
7165
- }
7166
- this.items = this.items.filter((res) => res != this.items[Index]);
7167
- }
7168
- addItem() {
7169
- if (this.items.length == 0)
7170
- this.items.push(this.items.length);
7171
- else
7172
- this.items.push(this.items[this.items.length - 1] + 1);
7173
- }
7174
- }
7175
- RepeaterTableComponent.decorators = [
7176
- { type: Component, args: [{
7177
- selector: 'BBSF-repeater-table',
7178
- template: "<div class=\"form-group bbsf-control bbsf-repeater\">\r\n <!--table-->\r\n <div class=\"table-responsive\">\r\n <table class=\"bbsf-repeater-table table {{options.RepeaterTableExtraClasses}}\">\r\n <thead class=\"table-head\">\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" [hidden]=\"item.IsHiddenInput\">{{item.HeaderTitle}}</th>\r\n <th *ngIf=\"!options.DisableDeleteButton\" class=\"text-center\">{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\" [hidden]=\"RepeaterField.IsHiddenInput\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td *ngIf=\"!options.DisableDeleteButton\" class=\"td-delete\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}} btn btn-icon btn-sm btn-danger\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--add button-->\r\n <div class=\"repeater-add-btn\" *ngIf=\"!options.DisableAddButton\">\r\n <button class=\"{{options.AddButtonExtraClasses}} btn btn-sm btn-brand\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n"
7179
- },] }
7180
- ];
7181
- RepeaterTableComponent.ctorParameters = () => [
7182
- { type: UtilityService }
7183
- ];
7184
- RepeaterTableComponent.propDecorators = {
7185
- group: [{ type: Input }],
7186
- options: [{ type: Input }]
7187
- };
7188
-
7189
- class BBSFDateTimePipe {
7190
- constructor(datePipe) {
7191
- this.datePipe = datePipe;
7192
- }
7193
- transform(value) {
7194
- let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');
7195
- return latest_date;
7196
- }
7197
- }
7198
- BBSFDateTimePipe.decorators = [
7199
- { type: Pipe, args: [{
7200
- name: 'bbsfDateTime'
7201
- },] }
7202
- ];
7203
- BBSFDateTimePipe.ctorParameters = () => [
7204
- { type: DatePipe }
7205
- ];
7206
-
7207
- class BBSFDatePipe {
7208
- constructor(datePipe) {
7209
- this.datePipe = datePipe;
7210
- }
7211
- transform(value) {
7212
- let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy');
7213
- return latest_date;
7214
7262
  }
7215
7263
  }
7216
- BBSFDatePipe.decorators = [
7217
- { type: Pipe, args: [{
7218
- name: 'bbsfDate'
7219
- },] }
7220
- ];
7221
- BBSFDatePipe.ctorParameters = () => [
7222
- { type: DatePipe }
7223
- ];
7224
-
7225
- var TagInputView;
7226
- (function (TagInputView) {
7227
- TagInputView[TagInputView["WithImage"] = 1] = "WithImage";
7228
- TagInputView[TagInputView["WithoutImage"] = 2] = "WithoutImage";
7229
- TagInputView[TagInputView["WithInitial"] = 3] = "WithInitial";
7230
- })(TagInputView || (TagInputView = {}));
7264
+ RepeaterFieldBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterFieldBuilderComponent, deps: [{ token: RenderComponentService }, { token: i2.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component });
7265
+ RepeaterFieldBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RepeaterFieldBuilderComponent, selector: "repeater-field-builder", inputs: { group: "group", itemNumber: "itemNumber", controlNumber: "controlNumber", RepeaterField: "RepeaterField", itemsValue: "itemsValue" }, viewQueries: [{ propertyName: "Item", first: true, predicate: ["Item"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<ng-container #Item></ng-container>\r\n" });
7266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterFieldBuilderComponent, decorators: [{
7267
+ type: Component,
7268
+ args: [{ selector: 'repeater-field-builder', template: "<ng-container #Item></ng-container>\r\n" }]
7269
+ }], ctorParameters: function () { return [{ type: RenderComponentService }, { type: i2.FormGroupDirective }]; }, propDecorators: { Item: [{
7270
+ type: ViewChild,
7271
+ args: ["Item", { read: ViewContainerRef }]
7272
+ }], group: [{
7273
+ type: Input
7274
+ }], itemNumber: [{
7275
+ type: Input
7276
+ }], controlNumber: [{
7277
+ type: Input
7278
+ }], RepeaterField: [{
7279
+ type: Input
7280
+ }], itemsValue: [{
7281
+ type: Input
7282
+ }] } });
7231
7283
 
7232
- const noop = () => { };
7233
- const ɵ0$1 = noop;
7234
- const TAGS_INPUT_TEMPLATE = `
7235
-
7236
- <div class="tags-input">
7237
- <span class="tags-input__tag label label-primary badge badge-primary" *ngFor="let tag of tags">
7238
-
7239
- <span [ngSwitch]="ViewMode">
7240
- <span *ngSwitchCase="tagInputViewEnum.WithImage">
7241
- <img style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
7242
- src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
7243
- </span>
7244
-
7245
- <span *ngSwitchCase="tagInputViewEnum.WithInitial">
7246
- <div class="user-initials">{{calculateInitials(tag.name)}}</div>
7247
- </span>
7248
-
7249
- <span *ngSwitchDefault>
7250
- </span>
7251
-
7252
- </span>
7253
- {{tag[displayField]}}
7254
- <span *ngIf="isDeleteable(tag)" role="button" class="tags-input__tag-remove-btn" (click)="removeTag(tag)"
7255
- (touch)="removeTag(tag)">
7256
- <span aria-hidden="true">&times;</span>
7257
- <span class="sr-only">Close</span>
7258
- </span>
7259
- </span>
7260
-
7261
- <input *ngIf="options === null; else withTypeahead" class="tags-input__input-field" type="text"
7262
- [placeholder]="getPlaceholder()" name="tags" (keyup.enter)="addTag(tagInput)"
7263
- (keydown.backspace)="removeLastTag(tagInput)" [disabled]="!canAddTags || maximumOfTagsReached()"
7264
- [hidden]="!canAddTags || maximumOfTagsReached()" #tagInput />
7265
-
7266
- <ng-template #withTypeahead>
7267
- <span [ngSwitch]="ViewMode">
7268
- <span *ngSwitchCase="tagInputViewEnum.WithImage">
7269
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
7270
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
7271
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
7272
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
7273
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
7274
- [typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7275
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7276
- (blur)="onBlur()" autocomplete="off"
7277
- #tagInput />
7278
- </span>
7279
-
7280
- <span *ngSwitchCase="tagInputViewEnum.WithoutImage">
7281
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
7282
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
7283
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
7284
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
7285
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
7286
- [typeaheadItemTemplate]="itemTemplateWithoutImage"
7287
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7288
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7289
- (blur)="onBlur()" autocomplete="off"
7290
- #tagInput />
7291
- </span>
7292
-
7293
- <span *ngSwitchCase="tagInputViewEnum.WithInitial">
7294
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
7295
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
7296
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
7297
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
7298
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
7299
- [typeaheadItemTemplate]="itemTemplateWithoutInitial"
7300
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7301
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7302
- (blur)="onBlur()" autocomplete="off"
7303
- #tagInput />
7304
- </span>
7305
-
7306
- <span *ngSwitchDefault>
7307
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
7308
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
7309
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
7310
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
7311
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
7312
- [typeaheadItemTemplate]="itemTemplateWithoutImage"
7313
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7314
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7315
- (blur)="onBlur()" autocomplete="off"
7316
- #tagInput />
7317
- </span>
7318
-
7319
- </span>
7320
-
7321
- </ng-template>
7322
-
7323
- <ng-template #itemTemplateWithImage let-model="item" let-index="index">
7324
- <img
7325
- style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
7326
- src="{{(model.imageURL?model.imageURL:defaultImageURL)}}" />
7327
- <div>
7328
- <a [innerHTML]="model.name"></a>
7329
- <p *ngIf="showDescription">
7330
- {{model.description}}
7331
- </p>
7332
- </div>
7333
- </ng-template>
7334
-
7335
- <ng-template #itemTemplateWithoutImage let-model="item" let-index="index">
7336
- <div>
7337
- <a [innerHTML]="model.name"></a>
7338
- <p *ngIf="showDescription">
7339
- {{model.description}}
7340
- </p>
7341
- </div>
7342
- </ng-template>
7343
-
7344
- <ng-template #itemTemplateWithoutInitial let-model="item" let-index="index">
7345
- <div class="user-image">
7346
- <div class="user-initials">{{calculateInitials(model.name)}}</div>
7347
- </div>
7348
- <div>
7349
- <a [innerHTML]="model.name"></a>
7350
- <p *ngIf="showDescription">
7351
- {{model.description}}
7352
- </p>
7353
- </div>
7354
- </ng-template>
7355
- </div>
7356
- `;
7357
- const TAGS_INPUT_STYLE = `
7358
- :host {
7359
- overflow: auto;
7360
- white-space: nowrap;
7361
- }
7362
-
7363
- .tags-input {
7364
- align-items: center;
7365
- display: flex;
7366
- flex-wrap: wrap;
7367
- }
7368
-
7369
- .tags-input__tag {
7370
- display: inline-block;
7371
- margin-bottom: 2px;
7372
- margin-right: 5px;
7373
- padding-right: 0.3em;
7374
- }
7375
-
7376
- .tags-input__tag-remove-btn {
7377
- cursor: pointer;
7378
- display: inline-block;
7379
- font-size: 12px;
7380
- margin: -3px 0 0 3px;
7381
- padding: 0;
7382
- vertical-align: top;
7383
- }
7384
-
7385
- .tags-input__input-field {
7386
- border: none;
7387
- flex-grow: 1;
7388
- outline: none;
7389
- }
7390
- `;
7391
- const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
7392
- provide: NG_VALUE_ACCESSOR,
7393
- useExisting: forwardRef(() => BTagsInputComponent),
7394
- multi: true
7395
- };
7396
- class BTagsInputComponent {
7284
+ class RepeaterComponent {
7397
7285
  constructor() {
7398
- this.selected = '';
7399
- this.tags = [];
7400
- this.onTouchedCallback = noop;
7401
- this.onChangeCallback = noop;
7402
- this.tagInputViewEnum = TagInputView;
7403
- this.removeLastOnBackspace = false;
7404
- this.canDeleteTags = true;
7405
- this.canAddTags = true;
7406
- this.ViewMode = TagInputView.WithoutImage;
7407
- this.placeholder = '';
7408
- this.showDescription = true;
7409
- this.options = null;
7410
- this.defaultImageURL = null;
7411
- this.displayField = 'name';
7412
- this.minLengthBeforeOptions = 1;
7413
- this.scrollableOptions = false;
7414
- this.scrollableOptionsInView = 5;
7415
- this.onTagsChanged = new EventEmitter();
7416
- this.onMaxTagsReached = new EventEmitter();
7417
- this.onNoOptionsMatch = new EventEmitter();
7418
- this.onBlurInput = new EventEmitter();
7419
- // (keydown.Tab) = "onTab($event)"
7420
- //onTab(event) {
7421
- // this.onTabInput.emit();
7422
- // event.preventDefault();
7423
- // event.stopPropagation();
7424
- //}
7425
- }
7426
- getPlaceholder() {
7427
- if (this.tags && this.tags.length > 0) {
7428
- return '';
7429
- }
7430
- return this.placeholder;
7286
+ this.templateRefs = [];
7287
+ this.items = [];
7288
+ this.originalItems = [];
7289
+ this.repeaterContext = { index: 0, delete: null, elements: null };
7431
7290
  }
7432
- tagsChanged(type, tag) {
7433
- this.onChangeCallback(this.tags);
7434
- this.onTagsChanged.emit({
7435
- change: type,
7436
- tag: tag
7437
- });
7438
- if (this.maximumOfTagsReached()) {
7439
- this.onMaxTagsReached.emit();
7291
+ ngOnInit() {
7292
+ this.currentTemplate = this.initialTemplate;
7293
+ this.repeaterGroup = new FormGroup({});
7294
+ this.group.addControl(this.options.Name, this.repeaterGroup);
7295
+ if (this.options.RepeaterValue.length > 0) {
7296
+ this.originalItems = this.options.RepeaterValue;
7297
+ for (let index = 0; index < this.options.RepeaterValue.length; index++) {
7298
+ this.items.push(index + 1);
7299
+ }
7440
7300
  }
7301
+ else
7302
+ for (let index = 0; index < this.options.MinRequiredItems; index++) {
7303
+ this.items.push(index);
7304
+ }
7305
+ this.repeaterGroup.valueChanges.subscribe((res) => {
7306
+ let result = [];
7307
+ let rowNumber = [];
7308
+ let addItems = [];
7309
+ for (const key in this.repeaterGroup.controls) {
7310
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
7311
+ const keySplitArr = key.split('.');
7312
+ let item = {
7313
+ [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
7314
+ };
7315
+ addItems.push(item);
7316
+ if (!rowNumber.includes(keySplitArr[1]))
7317
+ rowNumber.push(keySplitArr[1]);
7318
+ }
7319
+ }
7320
+ for (let index = 0; index < rowNumber.length; index++) {
7321
+ const row = rowNumber[index];
7322
+ let addObject = {};
7323
+ let filteredElements = addItems.filter(item => item[row]);
7324
+ for (let index = 0; index < filteredElements.length; index++) {
7325
+ const filteredElement = filteredElements[index];
7326
+ for (const key in filteredElement) {
7327
+ if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
7328
+ const element = filteredElement[key];
7329
+ for (const key in element) {
7330
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
7331
+ const value = element[key];
7332
+ addObject[key] = value;
7333
+ }
7334
+ }
7335
+ }
7336
+ }
7337
+ }
7338
+ result.push(addObject);
7339
+ }
7340
+ this.options.RepeaterValue = result;
7341
+ });
7441
7342
  }
7442
- removeLastTag(tagInput) {
7443
- var _a;
7444
- if (!this.removeLastOnBackspace || !((_a = this.tags) === null || _a === void 0 ? void 0 : _a.length)) {
7343
+ deleteItem(Index) {
7344
+ if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
7445
7345
  return;
7346
+ let deletedControls = [];
7347
+ let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
7348
+ for (const key in this.repeaterGroup.controls) {
7349
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
7350
+ for (let index = 0; index < controlNames.length; index++) {
7351
+ const element = controlNames[index];
7352
+ const keySplitArr = key.split('.');
7353
+ if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
7354
+ const element = this.repeaterGroup.controls[key];
7355
+ deletedControls.push({ [key]: element });
7356
+ }
7357
+ }
7358
+ }
7446
7359
  }
7447
- if (tagInput.value === '') {
7448
- this.removeTag(this.tags[this.tags.length - 1]);
7360
+ for (let index = 0; index < deletedControls.length; index++) {
7361
+ const element = deletedControls[index];
7362
+ for (const key in element) {
7363
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
7364
+ this.repeaterGroup.removeControl(key);
7365
+ }
7366
+ }
7449
7367
  }
7368
+ this.items = this.items.filter((res) => res != this.items[Index]);
7450
7369
  }
7451
- addTag(tagInput) {
7452
- if (tagInput.value.trim() !== '') {
7453
- let tag = {
7454
- [this.displayField]: tagInput.value
7455
- };
7456
- this.addPredefinedTag(tag);
7457
- }
7458
- tagInput.value = '';
7370
+ addItem() {
7371
+ this.items.push(this.items.length);
7459
7372
  }
7460
- addPredefinedTag(tag) {
7461
- if (this.tags == null)
7462
- this.tags = [];
7463
- if (!this.maximumOfTagsReached()) {
7464
- this.tags.push(tag);
7465
- this.tagsChanged('add', tag);
7466
- }
7373
+ ngAfterViewInit() {
7374
+ let templateRefs = this._templates["_results"].map((item) => item["template"]);
7375
+ this.templateRefs = templateRefs;
7376
+ this.repeaterContext.elements = this.templateRefs;
7377
+ this.repeaterContext.delete = this.delete;
7467
7378
  }
7468
- removeTag(tagToRemove) {
7469
- if (!this.isDeleteable(tagToRemove)) {
7470
- return;
7471
- }
7472
- this.tags = this.tags.filter(tag => tagToRemove !== tag);
7473
- this.tagsChanged('remove', tagToRemove);
7379
+ setCurrentIndex(i) {
7380
+ this.repeaterContext.index = i;
7474
7381
  }
7475
- maximumOfTagsReached() {
7476
- return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;
7382
+ }
7383
+ RepeaterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7384
+ RepeaterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RepeaterComponent, selector: "BBSF-repeater", inputs: { group: "group", options: "options", initialTemplate: "initialTemplate" }, viewQueries: [{ propertyName: "delete", first: true, predicate: ["delete"], descendants: true }, { propertyName: "_templates", predicate: NgTemplateNameDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n", components: [{ type: RepeaterFieldBuilderComponent, selector: "repeater-field-builder", inputs: ["group", "itemNumber", "controlNumber", "RepeaterField", "itemsValue"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: NgTemplateNameDirective, selector: "ng-template[name]", inputs: ["name"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
7385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterComponent, decorators: [{
7386
+ type: Component,
7387
+ args: [{ selector: 'BBSF-repeater', template: "<ng-container *ngFor='let item of items ; index as i'>\r\n {{setCurrentIndex(i)}}\r\n <ng-container *ngTemplateOutlet=\"currentTemplate; context: repeaterContext\">\r\n </ng-container>\r\n\r\n</ng-container>\r\n\r\n<ng-container *ngTemplateOutlet=\"add\">\r\n</ng-container>\r\n\r\n<ng-template *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as i\" name=\"R{{i}}\" let-Index=\"itemIndex\"\r\n let-control=\"controlIndex\">\r\n <repeater-field-builder *ngIf=\"RepeaterField\" [RepeaterField]=\"RepeaterField\" [itemNumber]=\"Index\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"control\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n</ng-template>\r\n\r\n<ng-template #delete let-item=\"itemIndex\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}}\" type=\"button\" (click)=\"deleteItem(item)\"\r\n [disabled]=\"items.length ==options.MinRequiredItems&&options.IsRequired\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n<ng-template #add>\r\n <button class=\"{{options.AddButtonExtraClasses}}\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n</ng-template>\r\n\r\n" }]
7388
+ }], ctorParameters: function () { return []; }, propDecorators: { group: [{
7389
+ type: Input
7390
+ }], options: [{
7391
+ type: Input
7392
+ }], initialTemplate: [{
7393
+ type: Input
7394
+ }], _templates: [{
7395
+ type: ViewChildren,
7396
+ args: [NgTemplateNameDirective]
7397
+ }], delete: [{
7398
+ type: ViewChild,
7399
+ args: ['delete', { static: false }]
7400
+ }] } });
7401
+
7402
+ class RepeaterItemFieldComponent {
7403
+ constructor() { }
7404
+ ngOnInit() {
7477
7405
  }
7478
- isDeleteable(tag) {
7479
- if (typeof tag.deleteable !== "undefined" && !tag.deleteable) {
7480
- return false;
7481
- }
7482
- return this.canDeleteTags;
7406
+ }
7407
+ RepeaterItemFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterItemFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7408
+ RepeaterItemFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RepeaterItemFieldComponent, selector: "repeater-item-field", inputs: { templates: "templates", filedIndex: "filedIndex", itemIndex: "itemIndex" }, ngImport: i0, template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>\r\n", directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
7409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterItemFieldComponent, decorators: [{
7410
+ type: Component,
7411
+ args: [{ selector: 'repeater-item-field', template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>\r\n" }]
7412
+ }], ctorParameters: function () { return []; }, propDecorators: { templates: [{
7413
+ type: Input
7414
+ }], filedIndex: [{
7415
+ type: Input
7416
+ }], itemIndex: [{
7417
+ type: Input
7418
+ }] } });
7419
+
7420
+ class RepeaterTableComponent {
7421
+ constructor(utilityService) {
7422
+ this.utilityService = utilityService;
7423
+ this.items = [];
7424
+ this.originalItems = [];
7483
7425
  }
7484
- typeaheadOnSelect(e) {
7485
- if (typeof e.item === 'string') {
7486
- this.addPredefinedTag({
7487
- [this.displayField]: e.value
7488
- });
7489
- }
7490
- else {
7491
- this.addPredefinedTag(e.item);
7426
+ ngOnInit() {
7427
+ this.repeaterGroup = new FormGroup({});
7428
+ this.group.addControl(this.options.Name, this.repeaterGroup);
7429
+ if (this.options.RepeaterValue.length > 0) {
7430
+ this.originalItems = this.options.RepeaterValue;
7431
+ for (let index = 0; index < this.options.RepeaterValue.length; index++) {
7432
+ this.items.push(index);
7433
+ }
7492
7434
  }
7493
- this.selected = '';
7435
+ else
7436
+ for (let index = 0; index < this.options.MinRequiredItems; index++) {
7437
+ this.items.push(index);
7438
+ }
7439
+ this.repeaterGroup.valueChanges.subscribe((res) => {
7440
+ let result = [];
7441
+ let rowNumber = [];
7442
+ let addItems = [];
7443
+ for (const key in this.repeaterGroup.controls) {
7444
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
7445
+ const keySplitArr = key.split('.');
7446
+ let item = {
7447
+ [keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
7448
+ };
7449
+ addItems.push(item);
7450
+ if (!rowNumber.includes(keySplitArr[1]))
7451
+ rowNumber.push(keySplitArr[1]);
7452
+ }
7453
+ }
7454
+ for (let index = 0; index < rowNumber.length; index++) {
7455
+ const row = rowNumber[index];
7456
+ let addObject = {};
7457
+ let filteredElements = addItems.filter(item => item[row]);
7458
+ for (let index = 0; index < filteredElements.length; index++) {
7459
+ const filteredElement = filteredElements[index];
7460
+ for (const key in filteredElement) {
7461
+ if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
7462
+ const element = filteredElement[key];
7463
+ for (const key in element) {
7464
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
7465
+ const value = element[key];
7466
+ addObject[key] = value;
7467
+ }
7468
+ }
7469
+ }
7470
+ }
7471
+ }
7472
+ result.push(addObject);
7473
+ }
7474
+ this.options.RepeaterValue = result;
7475
+ });
7494
7476
  }
7495
- typeaheadOnNoMatch(e) {
7496
- if (typeof this.onNoOptionsMatch !== 'undefined') {
7497
- this.onNoOptionsMatch.emit(e);
7477
+ deleteItem(Index) {
7478
+ if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
7479
+ return;
7480
+ let deletedControls = [];
7481
+ let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
7482
+ for (const key in this.repeaterGroup.controls) {
7483
+ if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
7484
+ for (let index = 0; index < controlNames.length; index++) {
7485
+ const element = controlNames[index];
7486
+ const keySplitArr = key.split('.');
7487
+ if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
7488
+ const element = this.repeaterGroup.controls[key];
7489
+ deletedControls.push({ [key]: element });
7490
+ }
7491
+ }
7492
+ }
7498
7493
  }
7499
- }
7500
- writeValue(value) {
7501
- if (value !== this.tags) {
7502
- this.tags = value;
7494
+ for (let index = 0; index < deletedControls.length; index++) {
7495
+ const element = deletedControls[index];
7496
+ for (const key in element) {
7497
+ if (Object.prototype.hasOwnProperty.call(element, key)) {
7498
+ this.repeaterGroup.removeControl(key);
7499
+ }
7500
+ }
7503
7501
  }
7502
+ this.items = this.items.filter((res) => res != this.items[Index]);
7504
7503
  }
7505
- registerOnChange(fn) {
7506
- this.onChangeCallback = fn;
7504
+ addItem() {
7505
+ if (this.items.length == 0)
7506
+ this.items.push(this.items.length);
7507
+ else
7508
+ this.items.push(this.items[this.items.length - 1] + 1);
7507
7509
  }
7508
- registerOnTouched(fn) {
7509
- this.onTouchedCallback = fn;
7510
+ }
7511
+ RepeaterTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterTableComponent, deps: [{ token: i3.UtilityService }], target: i0.ɵɵFactoryTarget.Component });
7512
+ RepeaterTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RepeaterTableComponent, selector: "BBSF-repeater-table", inputs: { group: "group", options: "options" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-repeater\">\r\n <!--table-->\r\n <div class=\"table-responsive\">\r\n <table class=\"bbsf-repeater-table table {{options.RepeaterTableExtraClasses}}\">\r\n <thead class=\"table-head\">\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" [hidden]=\"item.IsHiddenInput\">{{item.HeaderTitle}}</th>\r\n <th *ngIf=\"!options.DisableDeleteButton\" class=\"text-center\">{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\" [hidden]=\"RepeaterField.IsHiddenInput\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td *ngIf=\"!options.DisableDeleteButton\" class=\"td-delete\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}} btn btn-icon btn-sm btn-danger\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--add button-->\r\n <div class=\"repeater-add-btn\" *ngIf=\"!options.DisableAddButton\">\r\n <button class=\"{{options.AddButtonExtraClasses}} btn btn-sm btn-brand\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n", components: [{ type: RepeaterFieldBuilderComponent, selector: "repeater-field-builder", inputs: ["group", "itemNumber", "controlNumber", "RepeaterField", "itemsValue"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
7513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RepeaterTableComponent, decorators: [{
7514
+ type: Component,
7515
+ args: [{ selector: 'BBSF-repeater-table', template: "<div class=\"form-group bbsf-control bbsf-repeater\">\r\n <!--table-->\r\n <div class=\"table-responsive\">\r\n <table class=\"bbsf-repeater-table table {{options.RepeaterTableExtraClasses}}\">\r\n <thead class=\"table-head\">\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" [hidden]=\"item.IsHiddenInput\">{{item.HeaderTitle}}</th>\r\n <th *ngIf=\"!options.DisableDeleteButton\" class=\"text-center\">{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\" [hidden]=\"RepeaterField.IsHiddenInput\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td *ngIf=\"!options.DisableDeleteButton\" class=\"td-delete\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}} btn btn-icon btn-sm btn-danger\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--add button-->\r\n <div class=\"repeater-add-btn\" *ngIf=\"!options.DisableAddButton\">\r\n <button class=\"{{options.AddButtonExtraClasses}} btn btn-sm btn-brand\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n" }]
7516
+ }], ctorParameters: function () { return [{ type: i3.UtilityService }]; }, propDecorators: { group: [{
7517
+ type: Input
7518
+ }], options: [{
7519
+ type: Input
7520
+ }] } });
7521
+
7522
+ class BBSFDateTimePipe {
7523
+ constructor(datePipe) {
7524
+ this.datePipe = datePipe;
7510
7525
  }
7511
- calculateInitials(name) {
7512
- var fullName = name.split(' ');
7513
- var initials = "";
7514
- if (fullName.length > 1)
7515
- initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
7516
- else
7517
- initials = fullName.shift().charAt(0);
7518
- return initials.toUpperCase();
7526
+ transform(value) {
7527
+ let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy hh:mm a');
7528
+ return latest_date;
7519
7529
  }
7520
- onBlur() {
7521
- this.onBlurInput.emit();
7530
+ }
7531
+ BBSFDateTimePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFDateTimePipe, deps: [{ token: i6.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
7532
+ BBSFDateTimePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFDateTimePipe, name: "bbsfDateTime" });
7533
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFDateTimePipe, decorators: [{
7534
+ type: Pipe,
7535
+ args: [{
7536
+ name: 'bbsfDateTime'
7537
+ }]
7538
+ }], ctorParameters: function () { return [{ type: i6.DatePipe }]; } });
7539
+
7540
+ class BBSFDatePipe {
7541
+ constructor(datePipe) {
7542
+ this.datePipe = datePipe;
7543
+ }
7544
+ transform(value) {
7545
+ let latest_date = this.datePipe.transform(value, 'dd/MM/yyyy');
7546
+ return latest_date;
7522
7547
  }
7523
7548
  }
7524
- BTagsInputComponent.decorators = [
7525
- { type: Component, args: [{
7526
- selector: 'b-tags-input',
7527
- template: TAGS_INPUT_TEMPLATE,
7528
- providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],
7529
- styles: [TAGS_INPUT_STYLE]
7530
- },] }
7531
- ];
7532
- BTagsInputComponent.propDecorators = {
7533
- maxTags: [{ type: Input }],
7534
- removeLastOnBackspace: [{ type: Input }],
7535
- canDeleteTags: [{ type: Input }],
7536
- canAddTags: [{ type: Input }],
7537
- ViewMode: [{ type: Input }],
7538
- placeholder: [{ type: Input }],
7539
- showDescription: [{ type: Input }],
7540
- options: [{ type: Input }],
7541
- defaultImageURL: [{ type: Input }],
7542
- minLengthBeforeOptions: [{ type: Input }],
7543
- scrollableOptions: [{ type: Input }],
7544
- scrollableOptionsInView: [{ type: Input }],
7545
- onTagsChanged: [{ type: Output }],
7546
- onMaxTagsReached: [{ type: Output }],
7547
- onNoOptionsMatch: [{ type: Output }],
7548
- onBlurInput: [{ type: Output }]
7549
- };
7549
+ BBSFDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFDatePipe, deps: [{ token: i6.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
7550
+ BBSFDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFDatePipe, name: "bbsfDate" });
7551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFDatePipe, decorators: [{
7552
+ type: Pipe,
7553
+ args: [{
7554
+ name: 'bbsfDate'
7555
+ }]
7556
+ }], ctorParameters: function () { return [{ type: i6.DatePipe }]; } });
7550
7557
 
7551
7558
  class RecaptchaModel {
7552
7559
  constructor() {
@@ -7594,6 +7601,7 @@ class RecaptchaComponent {
7594
7601
  };
7595
7602
  }
7596
7603
  ngOnInit() {
7604
+ this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
7597
7605
  this.controlValidationService.isCreatedBefor = false;
7598
7606
  this.loadImage();
7599
7607
  if (!this.options.ViewType)
@@ -7661,25 +7669,18 @@ class RecaptchaComponent {
7661
7669
  this.OnChange.emit(this.ReCaptchaFormControl.value);
7662
7670
  }
7663
7671
  }
7664
- RecaptchaComponent.decorators = [
7665
- { type: Component, args: [{
7666
- selector: 'BBSF-Recaptcha',
7667
- template: "<div class=\"form-group bbsf-control bbsf-recaptcha\" [formGroup]=\"group\">\r\n <img class=\"h-100 w-100\" [src]=\"image\" />\r\n <button class=\"btn btn-sm btn-icon\" type=\"button\" ngbTooltip=\"{{UtilityService.getResourceValue('ReloadCaptcha')}}\"\r\n (click)=\"loadImage()\">\r\n <i class=\"fas fa-refresh\"></i>\r\n </button>\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" value=\"{{options.Value.Text}}\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"text\"\r\n [class.is-invalid]=\"ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"onTextChange($event)\" [readonly]=\"options.IsReadonly\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n *ngIf=\"(ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched)\">\r\n {{getErrorValidation(ReCaptchaFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n"
7668
- },] }
7669
- ];
7670
- RecaptchaComponent.ctorParameters = () => [
7671
- { type: ControlUtility },
7672
- { type: RequestHandlerService },
7673
- { type: FormGroupDirective },
7674
- { type: UtilityService },
7675
- { type: ControlValidationService },
7676
- { type: GlobalSettings }
7677
- ];
7678
- RecaptchaComponent.propDecorators = {
7679
- group: [{ type: Input }],
7680
- options: [{ type: Input }],
7681
- OnChange: [{ type: Output }]
7682
- };
7672
+ RecaptchaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RecaptchaComponent, deps: [{ token: ControlUtility }, { token: i3.RequestHandlerService }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.ControlValidationService }, { token: GlobalSettings }], target: i0.ɵɵFactoryTarget.Component });
7673
+ RecaptchaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: RecaptchaComponent, selector: "BBSF-Recaptcha", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-recaptcha\" [formGroup]=\"group\">\r\n <img class=\"h-100 w-100\" [src]=\"image\" />\r\n <button class=\"btn btn-sm btn-icon\" type=\"button\" ngbTooltip=\"{{UtilityService.getResourceValue('ReloadCaptcha')}}\"\r\n (click)=\"loadImage()\">\r\n <i class=\"fas fa-refresh\"></i>\r\n </button>\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" value=\"{{options.Value.Text}}\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"text\"\r\n [class.is-invalid]=\"ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"onTextChange($event)\" [readonly]=\"options.IsReadonly\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n [dir]=\"textDir\"\r\n *ngIf=\"(ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched)\">\r\n {{getErrorValidation(ReCaptchaFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3$1.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i7$1.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
7674
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: RecaptchaComponent, decorators: [{
7675
+ type: Component,
7676
+ args: [{ selector: 'BBSF-Recaptcha', template: "<div class=\"form-group bbsf-control bbsf-recaptcha\" [formGroup]=\"group\">\r\n <img class=\"h-100 w-100\" [src]=\"image\" />\r\n <button class=\"btn btn-sm btn-icon\" type=\"button\" ngbTooltip=\"{{UtilityService.getResourceValue('ReloadCaptcha')}}\"\r\n (click)=\"loadImage()\">\r\n <i class=\"fas fa-refresh\"></i>\r\n </button>\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--input-->\r\n <div class=\"bbsf-input-container\">\r\n <input class=\"form-control {{options.ExtraClasses}}\"\r\n [dir]=\"textDir\"\r\n aria-describedby=\"email-error\" value=\"{{options.Value.Text}}\"\r\n aria-invalid=\"true\" formControlName=\"{{options.Name}}\" type=\"text\"\r\n [class.is-invalid]=\"ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" autocomplete=\"{{options.AutoComplete}}\"\r\n (change)=\"onTextChange($event)\" [readonly]=\"options.IsReadonly\" />\r\n\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\"\r\n [dir]=\"textDir\"\r\n *ngIf=\"(ReCaptchaFormControl.invalid && ReCaptchaFormControl.touched)\">\r\n {{getErrorValidation(ReCaptchaFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
7677
+ }], ctorParameters: function () { return [{ type: ControlUtility }, { type: i3.RequestHandlerService }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.ControlValidationService }, { type: GlobalSettings }]; }, propDecorators: { group: [{
7678
+ type: Input
7679
+ }], options: [{
7680
+ type: Input
7681
+ }], OnChange: [{
7682
+ type: Output
7683
+ }] } });
7683
7684
 
7684
7685
  class PageHeaderComponentComponent {
7685
7686
  constructor(router, utilityService) {
@@ -7694,20 +7695,16 @@ class PageHeaderComponentComponent {
7694
7695
  this.EN = this.utilityService.isCurrentLanguageEnglish();
7695
7696
  }
7696
7697
  }
7697
- PageHeaderComponentComponent.decorators = [
7698
- { type: Component, args: [{
7699
- selector: 'bbsf-page-header-component',
7700
- template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\"/>\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.Listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.TitleKey||options.TitleValue\">{{options.TitleValue == null ? translate(options.TitleKey) : options.TitleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.Listing\">\r\n {{translate(options.SubTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.BreadCrumb.Active\">\r\n <ng-container *ngFor=\"let item of options.BreadCrumb.BreadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.DropDownActions.Active\">\r\n <button [routerLink]=\"item.RouterLink\" (click)='item.Function?item.Function():\"\"' class=\"btn btn-light btn-sm subheader-btn export-btn\" *ngFor=\"let item of options.DropDownActions.DropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.SVG\"></span>\r\n {{item.Text}}\r\n </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.SearchTextBox.Active\" [options]=\"options.SearchTextBox.TextSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.GridView.Active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.ExportButton.Active\" (click)=\"options.ExportButton.Function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.ExportButton.ButtonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.FiltersButton.Active\" ngbDropdown container=\"body\" [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" \r\n #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.FiltersButton.Function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.FiltersButton.ButtonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [(hidden)]=\"options.Filters.ShowLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.Filters.ControlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\"\r\n (click)=\"options.Filters.RestFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\"\r\n (click)=\"options.Filters.ApplyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.AddButton.Active\" (click)=\"options.AddButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.AddButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.EditButton.Active\" (click)=\"options.EditButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.EditButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.DeleteButton.Active\" (click)=\"options.DeleteButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.DeleteButton.ButtonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--End toolbar-->\r\n"
7701
- },] }
7702
- ];
7703
- PageHeaderComponentComponent.ctorParameters = () => [
7704
- { type: Router },
7705
- { type: UtilityService }
7706
- ];
7707
- PageHeaderComponentComponent.propDecorators = {
7708
- group: [{ type: Input }],
7709
- options: [{ type: Input }]
7710
- };
7698
+ PageHeaderComponentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PageHeaderComponentComponent, deps: [{ token: i3$2.Router }, { token: i3.UtilityService }], target: i0.ɵɵFactoryTarget.Component });
7699
+ PageHeaderComponentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: PageHeaderComponentComponent, selector: "bbsf-page-header-component", inputs: { group: "group", options: "options" }, ngImport: i0, template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\"/>\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.Listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.TitleKey||options.TitleValue\">{{options.TitleValue == null ? translate(options.TitleKey) : options.TitleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.Listing\">\r\n {{translate(options.SubTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.BreadCrumb.Active\">\r\n <ng-container *ngFor=\"let item of options.BreadCrumb.BreadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.DropDownActions.Active\">\r\n <button [routerLink]=\"item.RouterLink\" (click)='item.Function?item.Function():\"\"' class=\"btn btn-light btn-sm subheader-btn export-btn\" *ngFor=\"let item of options.DropDownActions.DropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.SVG\"></span>\r\n {{item.Text}}\r\n </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.SearchTextBox.Active\" [options]=\"options.SearchTextBox.TextSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.GridView.Active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.ExportButton.Active\" (click)=\"options.ExportButton.Function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.ExportButton.ButtonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.FiltersButton.Active\" ngbDropdown container=\"body\" [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" \r\n #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.FiltersButton.Function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.FiltersButton.ButtonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [hidden]=\"options.Filters.ShowLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.Filters.ControlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\"\r\n (click)=\"options.Filters.RestFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\"\r\n (click)=\"options.Filters.ApplyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.AddButton.Active\" (click)=\"options.AddButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.AddButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.EditButton.Active\" (click)=\"options.EditButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.EditButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.DeleteButton.Active\" (click)=\"options.DeleteButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.DeleteButton.ButtonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--End toolbar-->\r\n", components: [{ type: TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: DateInputComponent, selector: "BBSF-DateTimePicker", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: ToggleslideComponent, selector: "BBSF-Toggleslide", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: TagsInputComponent, selector: "BBSF-TagsInput", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i3$2.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["routerLink", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i6$2.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i3$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i3$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
7700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: PageHeaderComponentComponent, decorators: [{
7701
+ type: Component,
7702
+ args: [{ selector: 'bbsf-page-header-component', template: "<!--toolbar-->\r\n<div class=\"toolbar\" style=\"overflow:hidden;position:relative;\">\r\n <img class=\"pattern\" src=\"./src/assets/images/Bg-pattern.png\"/>\r\n <div class=\"container-xxl\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"page-title w-100\" [ngClass]=\"!options.Listing? 'mb-0' : ''\">\r\n <h3 *ngIf=\"options.TitleKey||options.TitleValue\">{{options.TitleValue == null ? translate(options.TitleKey) : options.TitleValue }}</h3>\r\n <p class=\"sub-title\" *ngIf=\"options.Listing\">\r\n {{translate(options.SubTitleKey)}}\r\n </p>\r\n <div class=\"d-flex justify-content-between align-items-end\">\r\n <ul class=\"breadcrumb breadcrumb-dot\" *ngIf=\"options.BreadCrumb.Active\">\r\n <ng-container *ngFor=\"let item of options.BreadCrumb.BreadCrumbItems\">\r\n <li class=\"breadcrumb-item\" *ngIf=\"!item.active\">\r\n <a *ngIf=\"item.route\" [routerLink]=\"item.route\">{{ item.label }}</a>\r\n <a *ngIf=\"!item.route\" href=\"javascript: void(0);\">{{ item.label }}</a>\r\n </li>\r\n <li class=\"breadcrumb-item active\" *ngIf=\"item.active\">\r\n <span>{{ item.label }}</span>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"page-subheader\" *ngIf=\"options.DropDownActions.Active\">\r\n <button [routerLink]=\"item.RouterLink\" (click)='item.Function?item.Function():\"\"' class=\"btn btn-light btn-sm subheader-btn export-btn\" *ngFor=\"let item of options.DropDownActions.DropdownActionItems\">\r\n <span class=\"svg-icon svg-icon-3\" [inlineSVG]=\"item.SVG\"></span>\r\n {{item.Text}}\r\n </button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"page-subheader\">\r\n <BBSF-TextBox *ngIf=\"options.SearchTextBox.Active\" [options]=\"options.SearchTextBox.TextSearchBoxOptions\"\r\n [group]=\"group\">\r\n </BBSF-TextBox>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"subheader-btn list-grid\" *ngIf=\"options.GridView.Active\">\r\n <div class=\"list-grid-item\" [ngClass]=\"options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Listing.svg'\">\r\n </span>\r\n </div>\r\n <div class=\"list-grid-item\" [ngClass]=\"!options.GridView.ShowGridViewByDefault? 'list-grid-item-active' : ''\"\r\n (click)=\"options.GridView.ToggleFunction()\">\r\n <span class=\"svg-icon svg-icon-4\" [inlineSVG]=\"'/assets/images/Grid.svg'\">\r\n </span>\r\n </div>\r\n </div>\r\n <button type=\"button\" *ngIf=\"options.ExportButton.Active\" (click)=\"options.ExportButton.Function()\"\r\n class=\"btn btn-light btn-sm subheader-btn export-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/export.svg'\"></span>\r\n {{translate(options.ExportButton.ButtonTextKey)}}\r\n </button>\r\n\r\n\r\n <div *ngIf=\"options.FiltersButton.Active\" ngbDropdown container=\"body\" [placement]=\"EN ? 'bottom-right' : 'bottom-left'\" \r\n #dropdown=\"ngbDropdown\" class=\"subheader-btn\">\r\n <button href=\"javascript:;\" (click)=\"options.FiltersButton.Function()\" ngbDropdownToggle\r\n class=\"btn btn-light btn-sm filters-btn\">\r\n <span class=\"svg-icon svg-icon-5\" [inlineSVG]=\"'/assets/images/arrowdropdown.svg'\"></span>\r\n {{translate(options.FiltersButton.ButtonTextKey)}}\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu-custom filters-dropdown\">\r\n\r\n <div [hidden]=\"options.Filters.ShowLoadingInFiltersBox\">\r\n <div class=\"filter-select\">\r\n <span *ngFor=\"let control of options.Filters.ControlsOptions\">\r\n <span [ngSwitch]=\"control.key\">\r\n <span *ngSwitchCase=\"DataTypeEnum.SingleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.MulipleSelect\">\r\n <BBSF-DropdownList [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DropdownList>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Date\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.DateTime\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Time\">\r\n <BBSF-DateTimePicker [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-DateTimePicker>\r\n </span>\r\n <span *ngSwitchCase=\"DataTypeEnum.Boolean\">\r\n <BBSF-Toggleslide [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-Toggleslide>\r\n </span>\r\n <span *ngSwitchDefault>\r\n <BBSF-TagsInput [options]=\"control.value\" [group]=\"group\">\r\n </BBSF-TagsInput>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <div class=\"dropdown-menu-buttons\">\r\n <button class=\"btn btn-sm btn-light\"\r\n (click)=\"options.Filters.RestFunction(dropdown)\">\r\n {{translate(\"Reset\")}}\r\n </button>\r\n <button class=\"btn btn-brand btn-sm\"\r\n (click)=\"options.Filters.ApplyFunction(dropdown)\">\r\n {{translate(\"Apply\")}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.AddButton.Active\" (click)=\"options.AddButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.AddButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.EditButton.Active\" (click)=\"options.EditButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.EditButton.ButtonTextKey)}}\r\n </button>\r\n <button appPreventDoubleClick type=\"button\" *ngIf=\"options.DeleteButton.Active\" (click)=\"options.DeleteButton.Function()\" class=\"btn btn-brand btn-sm subheader-btn\">\r\n {{translate(options.DeleteButton.ButtonTextKey)}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--End toolbar-->\r\n" }]
7703
+ }], ctorParameters: function () { return [{ type: i3$2.Router }, { type: i3.UtilityService }]; }, propDecorators: { group: [{
7704
+ type: Input
7705
+ }], options: [{
7706
+ type: Input
7707
+ }] } });
7711
7708
 
7712
7709
  let options;
7713
7710
  let AppInjector;
@@ -7717,7 +7714,6 @@ FullCalendarModule.registerPlugins([
7717
7714
  listPlugin,
7718
7715
  interactionPlugin
7719
7716
  ]);
7720
- const ɵ0 = ControlUtility.getLocal();
7721
7717
  class BBSFControlsModule {
7722
7718
  constructor(injector, translate) {
7723
7719
  this.injector = injector;
@@ -7725,151 +7721,299 @@ class BBSFControlsModule {
7725
7721
  AppInjector = this.injector;
7726
7722
  }
7727
7723
  }
7728
- BBSFControlsModule.decorators = [
7729
- { type: NgModule, args: [{
7730
- declarations: [
7731
- DateInputComponent,
7732
- FileUploadComponent,
7733
- MultiLingualTextBoxComponent,
7734
- TextboxComponent,
7735
- TextAreaComponent,
7736
- MultiLingualTextAreaComponent,
7737
- CheckBoxComponent,
7738
- DropdownListComponent,
7739
- PhoneComponent,
7740
- ToggleslideComponent,
7741
- HtmlEditorComponent,
7742
- MultiLingualHtmlEditorComponent,
7743
- // MultiLingualHtmlEditorComponent,
7744
- ImageUploaderComponent,
7745
- ProfileImageUploaderComponent,
7746
- CalendarComponent,
7747
- MapAutoCompleteComponent,
7748
- AutocompleteTextBoxComponent,
7749
- TagsInputComponent,
7750
- PagingComponent,
7751
- JwPaginationComponent,
7752
- RadioButtonComponent,
7753
- FormComponent,
7754
- ConfirmationModalComponent,
7755
- RepeaterComponent,
7756
- RepeaterFieldBuilderComponent,
7757
- NgTemplateNameDirective,
7758
- RepeaterItemFieldComponent,
7759
- RepeaterTableComponent,
7760
- BBSFDateTimePipe,
7761
- BBSFDatePipe,
7762
- BTagsInputComponent,
7763
- RecaptchaComponent,
7764
- PageHeaderComponentComponent
7765
- ],
7766
- imports: [
7767
- CommonModule,
7768
- InfiniteScrollModule,
7769
- NgSelectModule,
7770
- NgxTagsInputModule,
7771
- NgxTypeaheadModule,
7772
- AgmCoreModule.forRoot({
7773
- // &language=${UtilityService.CurrentLanguage}
7774
- apiKey: environment$1.BBSF_GoogleMapKey,
7775
- libraries: ['places'],
7776
- }),
7777
- MatGoogleMapsAutocompleteModule,
7778
- FullCalendarModule,
7779
- AngularCropperjsModule,
7780
- ImageCropperModule,
7781
- NgbModule,
7782
- NgxDropzoneModule,
7783
- FileUploadModule,
7784
- TooltipModule,
7785
- NgxMaskModule.forRoot(),
7786
- NgxSummernoteModule,
7787
- MatSlideToggleModule,
7788
- NgxIntlTelInputModule,
7789
- AngularMultiSelectModule,
7790
- NgMultiSelectDropDownModule.forRoot(),
7791
- OwlDateTimeModule,
7792
- OwlNativeDateTimeModule,
7793
- CommonModule,
7794
- BlockUIModule.forRoot(),
7795
- ReactiveFormsModule,
7796
- HttpModule,
7797
- RouterModule,
7798
- ToastrModule.forRoot(),
7799
- HttpClientModule,
7800
- NgxPermissionsModule.forRoot(),
7801
- OverlayModule,
7802
- StoreDevtoolsModule.instrument(),
7803
- FormsModule,
7804
- NgxIntlTelInputModule,
7805
- NgxIntlTelInputModule,
7806
- BsDatepickerModule.forRoot(),
7807
- FullCalendarModule,
7808
- TypeaheadModule.forRoot(),
7809
- AngularEditorModule,
7810
- AutocompleteLibModule,
7811
- BBSFUtilitiesModule,
7812
- InlineSVGModule.forRoot(),
7813
- SweetAlert2Module,
7814
- ],
7815
- providers: [
7816
- ErrorMassageValidation,
7817
- ControlUtility,
7818
- OnPagingFiltersChangeService,
7819
- TranslateService,
7820
- FormGroupDirective,
7821
- NgbModal,
7822
- NgbActiveModal,
7823
- DatePipe,
7824
- BBSFDateTimePipe,
7825
- BBSFDatePipe,
7826
- RenderComponentService,
7827
- { provide: OWL_DATE_TIME_LOCALE, useValue: ɵ0 },
7828
- ],
7829
- schemas: [
7830
- NO_ERRORS_SCHEMA
7831
- ],
7832
- exports: [
7833
- DateInputComponent,
7834
- FileUploadComponent,
7835
- MultiLingualTextBoxComponent,
7836
- TextboxComponent,
7837
- TextAreaComponent,
7838
- MultiLingualTextAreaComponent,
7839
- CheckBoxComponent,
7840
- DropdownListComponent,
7841
- PhoneComponent,
7842
- ToggleslideComponent,
7843
- HtmlEditorComponent,
7844
- MultiLingualHtmlEditorComponent,
7845
- ImageUploaderComponent,
7846
- ProfileImageUploaderComponent,
7847
- CalendarComponent,
7848
- MapAutoCompleteComponent,
7849
- AutocompleteTextBoxComponent,
7850
- TagsInputComponent,
7851
- PagingComponent,
7852
- JwPaginationComponent,
7853
- RadioButtonComponent,
7854
- FormComponent,
7855
- PagingComponent,
7856
- ConfirmationModalComponent,
7857
- RepeaterComponent,
7858
- RepeaterFieldBuilderComponent,
7859
- NgTemplateNameDirective,
7860
- RepeaterItemFieldComponent,
7861
- RepeaterTableComponent,
7862
- BBSFDateTimePipe,
7863
- BBSFDatePipe,
7864
- RecaptchaComponent,
7865
- PageHeaderComponentComponent
7866
- ]
7867
- },] }
7868
- ];
7869
- BBSFControlsModule.ctorParameters = () => [
7870
- { type: Injector },
7871
- { type: TranslateService }
7872
- ];
7724
+ BBSFControlsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFControlsModule, deps: [{ token: i0.Injector }, { token: i1$3.TranslateService }], target: i0.ɵɵFactoryTarget.NgModule });
7725
+ BBSFControlsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFControlsModule, declarations: [DateInputComponent,
7726
+ FileUploadComponent,
7727
+ MultiLingualTextBoxComponent,
7728
+ TextboxComponent,
7729
+ TextAreaComponent,
7730
+ MultiLingualTextAreaComponent,
7731
+ CheckBoxComponent,
7732
+ DropdownListComponent,
7733
+ PhoneComponent,
7734
+ ToggleslideComponent,
7735
+ HtmlEditorComponent,
7736
+ MultiLingualHtmlEditorComponent,
7737
+ // MultiLingualHtmlEditorComponent,
7738
+ ImageUploaderComponent,
7739
+ ProfileImageUploaderComponent,
7740
+ CalendarComponent,
7741
+ MapAutoCompleteComponent,
7742
+ AutocompleteTextBoxComponent,
7743
+ TagsInputComponent,
7744
+ PagingComponent,
7745
+ JwPaginationComponent,
7746
+ RadioButtonComponent,
7747
+ FormComponent,
7748
+ ConfirmationModalComponent,
7749
+ RepeaterComponent,
7750
+ RepeaterFieldBuilderComponent,
7751
+ NgTemplateNameDirective,
7752
+ RepeaterItemFieldComponent,
7753
+ RepeaterTableComponent,
7754
+ BBSFDateTimePipe,
7755
+ BBSFDatePipe,
7756
+ BTagsInputComponent,
7757
+ RecaptchaComponent,
7758
+ PageHeaderComponentComponent], imports: [CommonModule,
7759
+ InfiniteScrollModule,
7760
+ NgSelectModule,
7761
+ NgxTagsInputModule,
7762
+ NgxTypeaheadModule, i1$2.AgmCoreModule, MatGoogleMapsAutocompleteModule,
7763
+ FullCalendarModule,
7764
+ AngularCropperjsModule,
7765
+ ImageCropperModule,
7766
+ NgbModule,
7767
+ NgxDropzoneModule,
7768
+ FileUploadModule,
7769
+ TooltipModule, i7$4.NgxMaskModule, NgxSummernoteModule,
7770
+ MatSlideToggleModule,
7771
+ NgxIntlTelInputModule,
7772
+ AngularMultiSelectModule, i4$1.NgMultiSelectDropDownModule, OwlDateTimeModule,
7773
+ OwlNativeDateTimeModule,
7774
+ CommonModule, i5$3.BlockUIModule, ReactiveFormsModule,
7775
+ HttpModule,
7776
+ RouterModule, i6$5.ToastrModule, HttpClientModule, i7$6.NgxPermissionsModule, OverlayModule, i8$2.StoreDevtoolsModule, FormsModule,
7777
+ NgxIntlTelInputModule,
7778
+ NgxIntlTelInputModule, i9.BsDatepickerModule, FullCalendarModule, i4.TypeaheadModule, AngularEditorModule,
7779
+ AutocompleteLibModule,
7780
+ BBSFUtilitiesModule, i6$2.InlineSVGModule, SweetAlert2Module], exports: [DateInputComponent,
7781
+ FileUploadComponent,
7782
+ MultiLingualTextBoxComponent,
7783
+ TextboxComponent,
7784
+ TextAreaComponent,
7785
+ MultiLingualTextAreaComponent,
7786
+ CheckBoxComponent,
7787
+ DropdownListComponent,
7788
+ PhoneComponent,
7789
+ ToggleslideComponent,
7790
+ HtmlEditorComponent,
7791
+ MultiLingualHtmlEditorComponent,
7792
+ ImageUploaderComponent,
7793
+ ProfileImageUploaderComponent,
7794
+ CalendarComponent,
7795
+ MapAutoCompleteComponent,
7796
+ AutocompleteTextBoxComponent,
7797
+ TagsInputComponent,
7798
+ PagingComponent,
7799
+ JwPaginationComponent,
7800
+ RadioButtonComponent,
7801
+ FormComponent,
7802
+ PagingComponent,
7803
+ ConfirmationModalComponent,
7804
+ RepeaterComponent,
7805
+ RepeaterFieldBuilderComponent,
7806
+ NgTemplateNameDirective,
7807
+ RepeaterItemFieldComponent,
7808
+ RepeaterTableComponent,
7809
+ BBSFDateTimePipe,
7810
+ BBSFDatePipe,
7811
+ RecaptchaComponent,
7812
+ PageHeaderComponentComponent] });
7813
+ BBSFControlsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFControlsModule, providers: [
7814
+ ErrorMassageValidation,
7815
+ ControlUtility,
7816
+ OnPagingFiltersChangeService,
7817
+ TranslateService,
7818
+ FormGroupDirective,
7819
+ NgbModal,
7820
+ NgbActiveModal,
7821
+ DatePipe,
7822
+ BBSFDateTimePipe,
7823
+ BBSFDatePipe,
7824
+ RenderComponentService,
7825
+ { provide: OWL_DATE_TIME_LOCALE, useValue: ControlUtility.getLocal() },
7826
+ ], imports: [[
7827
+ CommonModule,
7828
+ InfiniteScrollModule,
7829
+ NgSelectModule,
7830
+ NgxTagsInputModule,
7831
+ NgxTypeaheadModule,
7832
+ AgmCoreModule.forRoot({
7833
+ // &language=${UtilityService.CurrentLanguage}
7834
+ apiKey: environment$1.BBSF_GoogleMapKey,
7835
+ libraries: ['places'],
7836
+ }),
7837
+ MatGoogleMapsAutocompleteModule,
7838
+ FullCalendarModule,
7839
+ AngularCropperjsModule,
7840
+ ImageCropperModule,
7841
+ NgbModule,
7842
+ NgxDropzoneModule,
7843
+ FileUploadModule,
7844
+ TooltipModule,
7845
+ NgxMaskModule.forRoot(),
7846
+ NgxSummernoteModule,
7847
+ MatSlideToggleModule,
7848
+ NgxIntlTelInputModule,
7849
+ AngularMultiSelectModule,
7850
+ NgMultiSelectDropDownModule.forRoot(),
7851
+ OwlDateTimeModule,
7852
+ OwlNativeDateTimeModule,
7853
+ CommonModule,
7854
+ BlockUIModule.forRoot(),
7855
+ ReactiveFormsModule,
7856
+ HttpModule,
7857
+ RouterModule,
7858
+ ToastrModule.forRoot(),
7859
+ HttpClientModule,
7860
+ NgxPermissionsModule.forRoot(),
7861
+ OverlayModule,
7862
+ StoreDevtoolsModule.instrument(),
7863
+ FormsModule,
7864
+ NgxIntlTelInputModule,
7865
+ NgxIntlTelInputModule,
7866
+ BsDatepickerModule.forRoot(),
7867
+ FullCalendarModule,
7868
+ TypeaheadModule.forRoot(),
7869
+ AngularEditorModule,
7870
+ AutocompleteLibModule,
7871
+ BBSFUtilitiesModule,
7872
+ InlineSVGModule.forRoot(),
7873
+ SweetAlert2Module,
7874
+ ]] });
7875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BBSFControlsModule, decorators: [{
7876
+ type: NgModule,
7877
+ args: [{
7878
+ declarations: [
7879
+ DateInputComponent,
7880
+ FileUploadComponent,
7881
+ MultiLingualTextBoxComponent,
7882
+ TextboxComponent,
7883
+ TextAreaComponent,
7884
+ MultiLingualTextAreaComponent,
7885
+ CheckBoxComponent,
7886
+ DropdownListComponent,
7887
+ PhoneComponent,
7888
+ ToggleslideComponent,
7889
+ HtmlEditorComponent,
7890
+ MultiLingualHtmlEditorComponent,
7891
+ // MultiLingualHtmlEditorComponent,
7892
+ ImageUploaderComponent,
7893
+ ProfileImageUploaderComponent,
7894
+ CalendarComponent,
7895
+ MapAutoCompleteComponent,
7896
+ AutocompleteTextBoxComponent,
7897
+ TagsInputComponent,
7898
+ PagingComponent,
7899
+ JwPaginationComponent,
7900
+ RadioButtonComponent,
7901
+ FormComponent,
7902
+ ConfirmationModalComponent,
7903
+ RepeaterComponent,
7904
+ RepeaterFieldBuilderComponent,
7905
+ NgTemplateNameDirective,
7906
+ RepeaterItemFieldComponent,
7907
+ RepeaterTableComponent,
7908
+ BBSFDateTimePipe,
7909
+ BBSFDatePipe,
7910
+ BTagsInputComponent,
7911
+ RecaptchaComponent,
7912
+ PageHeaderComponentComponent
7913
+ ],
7914
+ imports: [
7915
+ CommonModule,
7916
+ InfiniteScrollModule,
7917
+ NgSelectModule,
7918
+ NgxTagsInputModule,
7919
+ NgxTypeaheadModule,
7920
+ AgmCoreModule.forRoot({
7921
+ // &language=${UtilityService.CurrentLanguage}
7922
+ apiKey: environment$1.BBSF_GoogleMapKey,
7923
+ libraries: ['places'],
7924
+ }),
7925
+ MatGoogleMapsAutocompleteModule,
7926
+ FullCalendarModule,
7927
+ AngularCropperjsModule,
7928
+ ImageCropperModule,
7929
+ NgbModule,
7930
+ NgxDropzoneModule,
7931
+ FileUploadModule,
7932
+ TooltipModule,
7933
+ NgxMaskModule.forRoot(),
7934
+ NgxSummernoteModule,
7935
+ MatSlideToggleModule,
7936
+ NgxIntlTelInputModule,
7937
+ AngularMultiSelectModule,
7938
+ NgMultiSelectDropDownModule.forRoot(),
7939
+ OwlDateTimeModule,
7940
+ OwlNativeDateTimeModule,
7941
+ CommonModule,
7942
+ BlockUIModule.forRoot(),
7943
+ ReactiveFormsModule,
7944
+ HttpModule,
7945
+ RouterModule,
7946
+ ToastrModule.forRoot(),
7947
+ HttpClientModule,
7948
+ NgxPermissionsModule.forRoot(),
7949
+ OverlayModule,
7950
+ StoreDevtoolsModule.instrument(),
7951
+ FormsModule,
7952
+ NgxIntlTelInputModule,
7953
+ NgxIntlTelInputModule,
7954
+ BsDatepickerModule.forRoot(),
7955
+ FullCalendarModule,
7956
+ TypeaheadModule.forRoot(),
7957
+ AngularEditorModule,
7958
+ AutocompleteLibModule,
7959
+ BBSFUtilitiesModule,
7960
+ InlineSVGModule.forRoot(),
7961
+ SweetAlert2Module,
7962
+ ],
7963
+ providers: [
7964
+ ErrorMassageValidation,
7965
+ ControlUtility,
7966
+ OnPagingFiltersChangeService,
7967
+ TranslateService,
7968
+ FormGroupDirective,
7969
+ NgbModal,
7970
+ NgbActiveModal,
7971
+ DatePipe,
7972
+ BBSFDateTimePipe,
7973
+ BBSFDatePipe,
7974
+ RenderComponentService,
7975
+ { provide: OWL_DATE_TIME_LOCALE, useValue: ControlUtility.getLocal() },
7976
+ ],
7977
+ schemas: [
7978
+ NO_ERRORS_SCHEMA
7979
+ ],
7980
+ exports: [
7981
+ DateInputComponent,
7982
+ FileUploadComponent,
7983
+ MultiLingualTextBoxComponent,
7984
+ TextboxComponent,
7985
+ TextAreaComponent,
7986
+ MultiLingualTextAreaComponent,
7987
+ CheckBoxComponent,
7988
+ DropdownListComponent,
7989
+ PhoneComponent,
7990
+ ToggleslideComponent,
7991
+ HtmlEditorComponent,
7992
+ MultiLingualHtmlEditorComponent,
7993
+ ImageUploaderComponent,
7994
+ ProfileImageUploaderComponent,
7995
+ CalendarComponent,
7996
+ MapAutoCompleteComponent,
7997
+ AutocompleteTextBoxComponent,
7998
+ TagsInputComponent,
7999
+ PagingComponent,
8000
+ JwPaginationComponent,
8001
+ RadioButtonComponent,
8002
+ FormComponent,
8003
+ PagingComponent,
8004
+ ConfirmationModalComponent,
8005
+ RepeaterComponent,
8006
+ RepeaterFieldBuilderComponent,
8007
+ NgTemplateNameDirective,
8008
+ RepeaterItemFieldComponent,
8009
+ RepeaterTableComponent,
8010
+ BBSFDateTimePipe,
8011
+ BBSFDatePipe,
8012
+ RecaptchaComponent,
8013
+ PageHeaderComponentComponent
8014
+ ]
8015
+ }]
8016
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$3.TranslateService }]; } });
7873
8017
 
7874
8018
  class CustomValidation {
7875
8019
  }
@@ -8068,12 +8212,11 @@ class AppBaseComponent {
8068
8212
  }
8069
8213
  }
8070
8214
  }
8071
- AppBaseComponent.decorators = [
8072
- { type: Injectable }
8073
- ];
8074
- AppBaseComponent.ctorParameters = () => [
8075
- { type: Injector }
8076
- ];
8215
+ AppBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AppBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
8216
+ AppBaseComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AppBaseComponent });
8217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: AppBaseComponent, decorators: [{
8218
+ type: Injectable
8219
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
8077
8220
 
8078
8221
  // This file can be replaced during build by using the `fileReplacements` array.
8079
8222
  // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
@@ -8850,5 +8993,5 @@ var FileType;
8850
8993
  * Generated bundle index. Do not edit.
8851
8994
  */
8852
8995
 
8853
- export { AddButton, AppBaseComponent, AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFDatePipe, BBSFDateTimePipe, BreadCrumb, BreadCrumbModel, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlFilterItem, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DefaultIntl, DeleteButton, DropdownActionItem, DropdownActions, DropdownListComponent, DropdownListItem, DropdownOptions, EditButton, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, ExportButton, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterOptions, FilterType, FiltersButton, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, GridViewModel, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PageHeaderComponentComponent, PageHeaderOptions, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RecaptchaComponent, RecaptchaModel, RecaptchaOptions, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagInputView, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxModel, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0, BTagsInputComponent as ɵa };
8854
- //# sourceMappingURL=bnsights-bbsf-controls.js.map
8996
+ export { AddButton, AppBaseComponent, AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFDatePipe, BBSFDateTimePipe, BreadCrumb, BreadCrumbModel, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlFilterItem, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DefaultIntl, DeleteButton, DropdownActionItem, DropdownActions, DropdownListComponent, DropdownListItem, DropdownOptions, EditButton, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, ExportButton, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterOptions, FilterType, FiltersButton, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, GridViewModel, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PageHeaderComponentComponent, PageHeaderOptions, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RecaptchaComponent, RecaptchaModel, RecaptchaOptions, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagInputView, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxModel, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options };
8997
+ //# sourceMappingURL=bnsights-bbsf-controls.mjs.map