@bnsights/bbsf-controls 1.0.87 → 1.0.88

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 +2 -3
  2. package/bnsights-bbsf-controls-1.0.88.tgz +0 -0
  3. package/bnsights-bbsf-controls.d.ts +1 -1
  4. package/bnsights-bbsf-controls.metadata.json +1 -0
  5. package/bundles/bnsights-bbsf-controls.umd.js +9434 -0
  6. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -0
  7. package/esm2015/bnsights-bbsf-controls.js +6 -0
  8. package/esm2015/lib/Shared/Directives/template-name.directive.js +18 -0
  9. package/{esm2020/lib/Shared/Models/datePickerOptions.mjs → esm2015/lib/Shared/Models/datePickerOptions.js} +1 -1
  10. package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +20 -0
  11. package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +20 -0
  12. package/esm2015/lib/Shared/components/app-base-component.js +202 -0
  13. package/esm2015/lib/Shared/components/ng-tag-input.js +323 -0
  14. package/esm2015/lib/Shared/default_intl.js +29 -0
  15. package/esm2015/lib/Shared/services/ControlUtility.js +164 -0
  16. package/esm2015/lib/Shared/services/GlobalSettings.service.js +28 -0
  17. package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +22 -0
  18. package/esm2015/lib/Shared/services/render-component-service.service.js +30 -0
  19. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +137 -0
  20. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +248 -0
  21. package/esm2015/lib/controls/Calendar/Calendar.component.js +176 -0
  22. package/esm2015/lib/controls/CheckBox/CheckBox.component.js +114 -0
  23. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +139 -0
  24. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +215 -0
  25. package/esm2015/lib/controls/DropdownList/DropdownList.component.js +178 -0
  26. package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +451 -0
  27. package/esm2015/lib/controls/Form/Form.component.js +106 -0
  28. package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +222 -0
  29. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +347 -0
  30. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +325 -0
  31. package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +429 -0
  32. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +430 -0
  33. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +429 -0
  34. package/esm2015/lib/controls/Paging/JwPagination.component.js +129 -0
  35. package/esm2015/lib/controls/Paging/Paging.component.js +312 -0
  36. package/esm2015/lib/controls/Phone/Phone.component.js +119 -0
  37. package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +349 -0
  38. package/esm2015/lib/controls/RadioButton/RadioButton.component.js +108 -0
  39. package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +131 -0
  40. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +117 -0
  41. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +748 -0
  42. package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +19 -0
  43. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +108 -0
  44. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +268 -0
  45. package/esm2015/lib/controls/TextArea/TextArea.component.js +191 -0
  46. package/esm2015/lib/controls/TextBox/TextBox.component.js +262 -0
  47. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +83 -0
  48. package/esm2015/lib/controls/bbsf-controls.module.js +243 -0
  49. package/esm2015/lib/controls/page-header-component/page-header-component.component.js +32 -0
  50. package/fesm2015/{bnsights-bbsf-controls.mjs → bnsights-bbsf-controls.js} +1506 -1645
  51. package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
  52. package/lib/Shared/Directives/template-name.directive.d.ts +0 -3
  53. package/lib/Shared/Models/datePickerOptions.d.ts +1 -1
  54. package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +0 -3
  55. package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +0 -3
  56. package/lib/Shared/components/app-base-component.d.ts +1 -3
  57. package/lib/Shared/components/ng-tag-input.d.ts +0 -3
  58. package/lib/Shared/default_intl.d.ts +0 -3
  59. package/lib/Shared/services/ControlUtility.d.ts +0 -3
  60. package/lib/Shared/services/GlobalSettings.service.d.ts +0 -3
  61. package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +0 -3
  62. package/lib/Shared/services/render-component-service.service.d.ts +0 -3
  63. package/lib/Shared/services/validationErrorMassage.service.d.ts +0 -3
  64. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +0 -4
  65. package/lib/controls/Calendar/Calendar.component.d.ts +0 -3
  66. package/lib/controls/CheckBox/CheckBox.component.d.ts +0 -4
  67. package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +0 -3
  68. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +2 -8
  69. package/lib/controls/DropdownList/DropdownList.component.d.ts +0 -4
  70. package/lib/controls/FileUplaod/FileUplaod.component.d.ts +0 -3
  71. package/lib/controls/Form/Form.component.d.ts +0 -3
  72. package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +0 -4
  73. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +0 -3
  74. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +0 -3
  75. package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +0 -3
  76. package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +0 -3
  77. package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +0 -3
  78. package/lib/controls/Paging/JwPagination.component.d.ts +0 -3
  79. package/lib/controls/Paging/Paging.component.d.ts +0 -3
  80. package/lib/controls/Phone/Phone.component.d.ts +1 -7
  81. package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +0 -3
  82. package/lib/controls/RadioButton/RadioButton.component.d.ts +0 -3
  83. package/lib/controls/Recaptcha/Recaptcha.component.d.ts +0 -4
  84. package/lib/controls/Repeater/repeater/repeater.component.d.ts +0 -3
  85. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +0 -3
  86. package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +0 -3
  87. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +0 -3
  88. package/lib/controls/TagsInput/TagsInput.component.d.ts +0 -4
  89. package/lib/controls/TextArea/TextArea.component.d.ts +0 -4
  90. package/lib/controls/TextBox/TextBox.component.d.ts +0 -4
  91. package/lib/controls/Toggleslide/toggleslide.component.d.ts +0 -4
  92. package/lib/controls/bbsf-controls.module.d.ts +0 -74
  93. package/lib/controls/page-header-component/page-header-component.component.d.ts +0 -3
  94. package/package.json +8 -20
  95. package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
  96. package/esm2020/bnsights-bbsf-controls.mjs +0 -5
  97. package/esm2020/lib/Shared/Directives/template-name.directive.mjs +0 -18
  98. package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +0 -21
  99. package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +0 -21
  100. package/esm2020/lib/Shared/components/app-base-component.mjs +0 -198
  101. package/esm2020/lib/Shared/components/ng-tag-input.mjs +0 -336
  102. package/esm2020/lib/Shared/default_intl.mjs +0 -29
  103. package/esm2020/lib/Shared/services/ControlUtility.mjs +0 -162
  104. package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +0 -30
  105. package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
  106. package/esm2020/lib/Shared/services/render-component-service.service.mjs +0 -30
  107. package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -137
  108. package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -245
  109. package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -172
  110. package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -114
  111. package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +0 -136
  112. package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -217
  113. package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -179
  114. package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -453
  115. package/esm2020/lib/controls/Form/Form.component.mjs +0 -101
  116. package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -223
  117. package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -350
  118. package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -325
  119. package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -427
  120. package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -427
  121. package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -426
  122. package/esm2020/lib/controls/Paging/JwPagination.component.mjs +0 -156
  123. package/esm2020/lib/controls/Paging/Paging.component.mjs +0 -312
  124. package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -124
  125. package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -354
  126. package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -106
  127. package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +0 -132
  128. package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +0 -125
  129. package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +0 -750
  130. package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +0 -21
  131. package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +0 -108
  132. package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -268
  133. package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -192
  134. package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -266
  135. package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -84
  136. package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -401
  137. package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +0 -37
  138. package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
  139. package/fesm2020/bnsights-bbsf-controls.mjs +0 -8938
  140. package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
  141. /package/{esm2020/lib/Shared/Enums/CalendarView.mjs → esm2015/lib/Shared/Enums/CalendarView.js} +0 -0
  142. /package/{esm2020/lib/Shared/Enums/ControlLayout.mjs → esm2015/lib/Shared/Enums/ControlLayout.js} +0 -0
  143. /package/{esm2020/lib/Shared/Enums/Countries.mjs → esm2015/lib/Shared/Enums/Countries.js} +0 -0
  144. /package/{esm2020/lib/Shared/Enums/Enums.mjs → esm2015/lib/Shared/Enums/Enums.js} +0 -0
  145. /package/{esm2020/lib/Shared/Enums/FileType.mjs → esm2015/lib/Shared/Enums/FileType.js} +0 -0
  146. /package/{esm2020/lib/Shared/Enums/FilterType.mjs → esm2015/lib/Shared/Enums/FilterType.js} +0 -0
  147. /package/{esm2020/lib/Shared/Enums/FontSize.mjs → esm2015/lib/Shared/Enums/FontSize.js} +0 -0
  148. /package/{esm2020/lib/Shared/Enums/ForceDirection.mjs → esm2015/lib/Shared/Enums/ForceDirection.js} +0 -0
  149. /package/{esm2020/lib/Shared/Enums/IconPosition.mjs → esm2015/lib/Shared/Enums/IconPosition.js} +0 -0
  150. /package/{esm2020/lib/Shared/Enums/ImageType.mjs → esm2015/lib/Shared/Enums/ImageType.js} +0 -0
  151. /package/{esm2020/lib/Shared/Enums/InputType.mjs → esm2015/lib/Shared/Enums/InputType.js} +0 -0
  152. /package/{esm2020/lib/Shared/Enums/Insert.mjs → esm2015/lib/Shared/Enums/Insert.js} +0 -0
  153. /package/{esm2020/lib/Shared/Enums/LanguageMode.mjs → esm2015/lib/Shared/Enums/LanguageMode.js} +0 -0
  154. /package/{esm2020/lib/Shared/Enums/LanguageValidation.mjs → esm2015/lib/Shared/Enums/LanguageValidation.js} +0 -0
  155. /package/{esm2020/lib/Shared/Enums/Misc.mjs → esm2015/lib/Shared/Enums/Misc.js} +0 -0
  156. /package/{esm2020/lib/Shared/Enums/PagingActionMode.mjs → esm2015/lib/Shared/Enums/PagingActionMode.js} +0 -0
  157. /package/{esm2020/lib/Shared/Enums/Para.mjs → esm2015/lib/Shared/Enums/Para.js} +0 -0
  158. /package/{esm2020/lib/Shared/Enums/PickerType.mjs → esm2015/lib/Shared/Enums/PickerType.js} +0 -0
  159. /package/{esm2020/lib/Shared/Enums/SelectMode.mjs → esm2015/lib/Shared/Enums/SelectMode.js} +0 -0
  160. /package/{esm2020/lib/Shared/Enums/StartView.mjs → esm2015/lib/Shared/Enums/StartView.js} +0 -0
  161. /package/{esm2020/lib/Shared/Enums/Style.mjs → esm2015/lib/Shared/Enums/Style.js} +0 -0
  162. /package/{esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs → esm2015/lib/Shared/Enums/StyleConfirmationMode.js} +0 -0
  163. /package/{esm2020/lib/Shared/Enums/TagInputView.mjs → esm2015/lib/Shared/Enums/TagInputView.js} +0 -0
  164. /package/{esm2020/lib/Shared/Enums/menu-list-enum.mjs → esm2015/lib/Shared/Enums/menu-list-enum.js} +0 -0
  165. /package/{esm2020/lib/Shared/Models/Attribute.mjs → esm2015/lib/Shared/Models/Attribute.js} +0 -0
  166. /package/{esm2020/lib/Shared/Models/AutocompleteDTO.mjs → esm2015/lib/Shared/Models/AutocompleteDTO.js} +0 -0
  167. /package/{esm2020/lib/Shared/Models/AutocompleteOptions.mjs → esm2015/lib/Shared/Models/AutocompleteOptions.js} +0 -0
  168. /package/{esm2020/lib/Shared/Models/CalendarEventDTO.mjs → esm2015/lib/Shared/Models/CalendarEventDTO.js} +0 -0
  169. /package/{esm2020/lib/Shared/Models/CalendarOptions.mjs → esm2015/lib/Shared/Models/CalendarOptions.js} +0 -0
  170. /package/{esm2020/lib/Shared/Models/CancelDTO.mjs → esm2015/lib/Shared/Models/CancelDTO.js} +0 -0
  171. /package/{esm2020/lib/Shared/Models/CaptchaStyle.mjs → esm2015/lib/Shared/Models/CaptchaStyle.js} +0 -0
  172. /package/{esm2020/lib/Shared/Models/CheckBoxOptions.mjs → esm2015/lib/Shared/Models/CheckBoxOptions.js} +0 -0
  173. /package/{esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs → esm2015/lib/Shared/Models/ConfirmationModalOptions.js} +0 -0
  174. /package/{esm2020/lib/Shared/Models/ControlOptionsBase.mjs → esm2015/lib/Shared/Models/ControlOptionsBase.js} +0 -0
  175. /package/{esm2020/lib/Shared/Models/CustomValidation.mjs → esm2015/lib/Shared/Models/CustomValidation.js} +0 -0
  176. /package/{esm2020/lib/Shared/Models/DropdownListItem.mjs → esm2015/lib/Shared/Models/DropdownListItem.js} +0 -0
  177. /package/{esm2020/lib/Shared/Models/DropdownOptions.mjs → esm2015/lib/Shared/Models/DropdownOptions.js} +0 -0
  178. /package/{esm2020/lib/Shared/Models/EditPersonalImage.mjs → esm2015/lib/Shared/Models/EditPersonalImage.js} +0 -0
  179. /package/{esm2020/lib/Shared/Models/EnglishArabicDTO.mjs → esm2015/lib/Shared/Models/EnglishArabicDTO.js} +0 -0
  180. /package/{esm2020/lib/Shared/Models/FileDTO.mjs → esm2015/lib/Shared/Models/FileDTO.js} +0 -0
  181. /package/{esm2020/lib/Shared/Models/FileUploadModel.mjs → esm2015/lib/Shared/Models/FileUploadModel.js} +0 -0
  182. /package/{esm2020/lib/Shared/Models/FileUploadOptions.mjs → esm2015/lib/Shared/Models/FileUploadOptions.js} +0 -0
  183. /package/{esm2020/lib/Shared/Models/FilterItem.mjs → esm2015/lib/Shared/Models/FilterItem.js} +0 -0
  184. /package/{esm2020/lib/Shared/Models/FormOptions.mjs → esm2015/lib/Shared/Models/FormOptions.js} +0 -0
  185. /package/{esm2020/lib/Shared/Models/HtmlEditorOptions.mjs → esm2015/lib/Shared/Models/HtmlEditorOptions.js} +0 -0
  186. /package/{esm2020/lib/Shared/Models/ImageUploadOptions.mjs → esm2015/lib/Shared/Models/ImageUploadOptions.js} +0 -0
  187. /package/{esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs → esm2015/lib/Shared/Models/MapAutoCompleteOptions.js} +0 -0
  188. /package/{esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs → esm2015/lib/Shared/Models/MapAutocompleteDTO.js} +0 -0
  189. /package/{esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs → esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js} +0 -0
  190. /package/{esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs → esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js} +0 -0
  191. /package/{esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs → esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js} +0 -0
  192. /package/{esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs → esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js} +0 -0
  193. /package/{esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs → esm2015/lib/Shared/Models/MultipleFileUploadModel.js} +0 -0
  194. /package/{esm2020/lib/Shared/Models/PagingDTO.mjs → esm2015/lib/Shared/Models/PagingDTO.js} +0 -0
  195. /package/{esm2020/lib/Shared/Models/PagingOptions.mjs → esm2015/lib/Shared/Models/PagingOptions.js} +0 -0
  196. /package/{esm2020/lib/Shared/Models/PagingPayload.mjs → esm2015/lib/Shared/Models/PagingPayload.js} +0 -0
  197. /package/{esm2020/lib/Shared/Models/PhoneOptions.mjs → esm2015/lib/Shared/Models/PhoneOptions.js} +0 -0
  198. /package/{esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs → esm2015/lib/Shared/Models/ProfileImageUploadOptions.js} +0 -0
  199. /package/{esm2020/lib/Shared/Models/ProfilePictureDTO.mjs → esm2015/lib/Shared/Models/ProfilePictureDTO.js} +0 -0
  200. /package/{esm2020/lib/Shared/Models/RadioButtonItem.mjs → esm2015/lib/Shared/Models/RadioButtonItem.js} +0 -0
  201. /package/{esm2020/lib/Shared/Models/RadioButtonOptions.mjs → esm2015/lib/Shared/Models/RadioButtonOptions.js} +0 -0
  202. /package/{esm2020/lib/Shared/Models/RangeNumber.mjs → esm2015/lib/Shared/Models/RangeNumber.js} +0 -0
  203. /package/{esm2020/lib/Shared/Models/Recaptcha.mjs → esm2015/lib/Shared/Models/Recaptcha.js} +0 -0
  204. /package/{esm2020/lib/Shared/Models/RecaptchaOptions.mjs → esm2015/lib/Shared/Models/RecaptchaOptions.js} +0 -0
  205. /package/{esm2020/lib/Shared/Models/RepeaterField.mjs → esm2015/lib/Shared/Models/RepeaterField.js} +0 -0
  206. /package/{esm2020/lib/Shared/Models/RepeaterOptions.mjs → esm2015/lib/Shared/Models/RepeaterOptions.js} +0 -0
  207. /package/{esm2020/lib/Shared/Models/SaveDTO.mjs → esm2015/lib/Shared/Models/SaveDTO.js} +0 -0
  208. /package/{esm2020/lib/Shared/Models/TagsInputDTO.mjs → esm2015/lib/Shared/Models/TagsInputDTO.js} +0 -0
  209. /package/{esm2020/lib/Shared/Models/TagsInputOptions.mjs → esm2015/lib/Shared/Models/TagsInputOptions.js} +0 -0
  210. /package/{esm2020/lib/Shared/Models/TextAreaOptions.mjs → esm2015/lib/Shared/Models/TextAreaOptions.js} +0 -0
  211. /package/{esm2020/lib/Shared/Models/TextBoxOptions.mjs → esm2015/lib/Shared/Models/TextBoxOptions.js} +0 -0
  212. /package/{esm2020/lib/Shared/Models/ToggleslideOptions.mjs → esm2015/lib/Shared/Models/ToggleslideOptions.js} +0 -0
  213. /package/{esm2020/lib/Shared/Models/UploadPersonalImage.mjs → esm2015/lib/Shared/Models/UploadPersonalImage.js} +0 -0
  214. /package/{esm2020/lib/Shared/Models/bread-crumb.mjs → esm2015/lib/Shared/Models/bread-crumb.js} +0 -0
  215. /package/{esm2020/lib/Shared/Models/control-filter-Item.mjs → esm2015/lib/Shared/Models/control-filter-Item.js} +0 -0
  216. /package/{esm2020/lib/Shared/Models/filter-options.mjs → esm2015/lib/Shared/Models/filter-options.js} +0 -0
  217. /package/{esm2020/lib/Shared/Models/page-header-options.mjs → esm2015/lib/Shared/Models/page-header-options.js} +0 -0
  218. /package/{esm2020/lib/Shared/config/environment.mjs → esm2015/lib/Shared/config/environment.js} +0 -0
  219. /package/{esm2020/public-api.mjs → esm2015/public-api.js} +0 -0
@@ -0,0 +1,215 @@
1
+ import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
+ import { FormControl, Validators, FormGroupDirective, ControlContainer } from '@angular/forms';
3
+ import { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';
4
+ import { ControlUtility } from '../../Shared/services/ControlUtility';
5
+ import { PickerType } from '../../Shared/Enums/PickerType';
6
+ import { StartView } from '../../Shared/Enums/StartView';
7
+ import { SelectMode } from '../../Shared/Enums/SelectMode';
8
+ import { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';
9
+ import { BBSFTranslateService, ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
10
+ import { DatePipe } from '@angular/common';
11
+ import { DateTimeAdapter } from 'ng-pick-datetime';
12
+ import { OwlDateTimeIntl } from 'ng-pick-datetime';
13
+ import { DefaultIntl } from '../../Shared/default_intl';
14
+ export class DateInputComponent {
15
+ // tslint:disable-next-line: max-line-length
16
+ constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService, dateTimeAdapter) {
17
+ this.datepipe = datepipe;
18
+ this.onChangeService = onChangeService;
19
+ this.ErrorHandler = ErrorHandler;
20
+ this.controlUtility = controlUtility;
21
+ this.controlContainer = controlContainer;
22
+ this.DateInputControlHost = DateInputControlHost;
23
+ this.UtilityService = UtilityService;
24
+ this.translate = translate;
25
+ this.controlValidationService = controlValidationService;
26
+ this.dateTimeAdapter = dateTimeAdapter;
27
+ this.OnChange = new EventEmitter();
28
+ this.markAllAsTouched = false;
29
+ this.validationRules = [];
30
+ this.validationRulesasync = [];
31
+ this.comparedControl = null;
32
+ this.dateError = false;
33
+ this.resetError = () => {
34
+ this.controlValidationService.RemoveGlobalError();
35
+ };
36
+ this.checkIfEndDateAfterStartDate = () => {
37
+ if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {
38
+ return null;
39
+ }
40
+ if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {
41
+ this.comparedControl.setErrors(null);
42
+ return null;
43
+ }
44
+ else {
45
+ this.comparedControl.setErrors(null);
46
+ return { InvalidEndDate: true };
47
+ }
48
+ };
49
+ this.checkIfStartDateBeForEndDate = () => {
50
+ if (!this.comparedControl.value || !this.group.get(this.options.Name).value) {
51
+ return null;
52
+ }
53
+ if (new Date(this.comparedControl.value) < new Date(this.group.get(this.options.Name).value)) {
54
+ this.group.get(this.options.Name).setErrors(null);
55
+ return null;
56
+ }
57
+ else {
58
+ this.group.get(this.options.Name).setErrors(null);
59
+ return { InvalidStartDate: true };
60
+ }
61
+ };
62
+ //External Method
63
+ this.RemoveRequiredValidation = () => {
64
+ this.controlUtility.RemoveRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options);
65
+ };
66
+ //External Method
67
+ this.AddRequiredValidation = () => {
68
+ this.controlUtility.AddRequiredValidation(this.DatePickerFormControl, this.validationRules, this.options);
69
+ };
70
+ //External Method
71
+ this.RemoveCustomValidation = (CustomValidation) => {
72
+ this.controlUtility.RemoveCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation);
73
+ };
74
+ //External Method
75
+ this.AddCustomValidation = (CustomValidation) => {
76
+ this.controlUtility.AddCustomValidation(this.DatePickerFormControl, this.validationRules, CustomValidation);
77
+ };
78
+ //External Method
79
+ this.IsValid = () => {
80
+ this.controlUtility.IsValid(this.DatePickerFormControl);
81
+ };
82
+ DateInputComponent.controlContainerstatic = this.controlContainer;
83
+ }
84
+ ngOnInit() {
85
+ // Update the DateTimeAdapter Language with the current thread langauge
86
+ this.dateTimeAdapter.setLocale(this.UtilityService.getCurrentLanguage() == "ar" ? "ar" : "en-UK");
87
+ this.controlValidationService.isCreatedBefor = false;
88
+ this.group.addControl(this.options.Name, new FormControl(''));
89
+ this.DatePickerFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
90
+ this.DatePickerFormControl.setValue(this.options.Value);
91
+ if (this.options.CustomValidation.length > 0) {
92
+ let Validations = this.options.CustomValidation;
93
+ for (let index = 0; index < Validations.length; index++) {
94
+ const Validation = Validations[index];
95
+ this.validationRules.push(Validation.functionBody);
96
+ }
97
+ }
98
+ if (this.options.IsRequired) {
99
+ this.validationRules.push(Validators.required);
100
+ }
101
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
102
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
103
+ if (this.options.IsDisabled) {
104
+ this.DatePickerFormControl.disable();
105
+ }
106
+ if (this.options.StartControlToCompareWith) {
107
+ if (this.group.get(this.options.StartControlToCompareWith)) {
108
+ this.comparedControl = this.group.get(this.options.StartControlToCompareWith);
109
+ this.subscribeDateChanges();
110
+ }
111
+ }
112
+ this.DatePickerFormControl.setValidators(this.validationRules);
113
+ this.DatePickerFormControl.setAsyncValidators(this.validationRulesasync);
114
+ this.DateInputControlHost.ngSubmit.subscribe((value) => {
115
+ this.group.markAllAsTouched();
116
+ this.markAllAsTouched = true;
117
+ });
118
+ }
119
+ ngAfterViewInit() {
120
+ this.controlUtility.setAttributeForControl(this.options);
121
+ }
122
+ showGlobalError() {
123
+ this.controlUtility.showGlobalError();
124
+ }
125
+ getErrorValidation(ErrorList) {
126
+ if (this.markAllAsTouched && this.group.invalid) {
127
+ this.showGlobalError();
128
+ this.markAllAsTouched = false;
129
+ }
130
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
131
+ }
132
+ copyInputMessage(inputElement) {
133
+ this.controlUtility.CopyInputMessage(inputElement);
134
+ }
135
+ getSelectMode(type) {
136
+ let Value = SelectMode[type];
137
+ return Value.toLowerCase();
138
+ }
139
+ getPickerType(type) {
140
+ let Value = PickerType[type];
141
+ return Value.toLowerCase();
142
+ }
143
+ getStartView(type) {
144
+ if (type == 3)
145
+ return "multi-year";
146
+ else {
147
+ let Value = StartView[type];
148
+ return Value.toLowerCase();
149
+ }
150
+ }
151
+ onDateSelect(item) {
152
+ if (!item)
153
+ return;
154
+ let DateValue;
155
+ var tzoffset = (new Date()).getTimezoneOffset() * 60000; //offset in milliseconds
156
+ if (this.options.SelectMode == 2) {
157
+ for (let index = 0; index < item.value.length; index++) {
158
+ item.value[index] = new Date(item.value[index] - tzoffset).toISOString().slice(0, -1);
159
+ }
160
+ DateValue = item.value;
161
+ }
162
+ else {
163
+ DateValue = new Date(item.value - tzoffset).toISOString().slice(0, -1);
164
+ }
165
+ this.DatePickerFormControl.setValue(DateValue);
166
+ this.onChangeService.ChangeValue(this.options.Name);
167
+ let originalValue = DateValue;
168
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
169
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
170
+ }
171
+ //Use this line to enable two way binding.
172
+ this.options.Value = originalValue;
173
+ this.OnChange.emit(originalValue);
174
+ }
175
+ subscribeDateChanges() {
176
+ const startDateChanges = this.comparedControl.valueChanges;
177
+ const endDateChanges = this.group.get(this.options.Name).valueChanges;
178
+ startDateChanges.subscribe(start => {
179
+ this.comparedControl.addValidators(this.checkIfStartDateBeForEndDate);
180
+ this.comparedControl.updateValueAndValidity();
181
+ });
182
+ endDateChanges.subscribe(end => {
183
+ this.DatePickerFormControl.addValidators(this.checkIfEndDateAfterStartDate);
184
+ this.DatePickerFormControl.updateValueAndValidity();
185
+ });
186
+ }
187
+ }
188
+ DateInputComponent.controlContainerstatic = null;
189
+ DateInputComponent.decorators = [
190
+ { type: Component, args: [{
191
+ selector: 'BBSF-DateTimePicker',
192
+ 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",
193
+ providers: [
194
+ { provide: OwlDateTimeIntl, useClass: DefaultIntl }
195
+ ]
196
+ },] }
197
+ ];
198
+ DateInputComponent.ctorParameters = () => [
199
+ { type: DatePipe },
200
+ { type: OnPagingFiltersChangeService },
201
+ { type: ErrorMassageValidation },
202
+ { type: ControlUtility },
203
+ { type: ControlContainer, decorators: [{ type: Optional }] },
204
+ { type: FormGroupDirective },
205
+ { type: UtilityService },
206
+ { type: BBSFTranslateService },
207
+ { type: ControlValidationService },
208
+ { type: DateTimeAdapter }
209
+ ];
210
+ DateInputComponent.propDecorators = {
211
+ group: [{ type: Input }],
212
+ options: [{ type: Input }],
213
+ OnChange: [{ type: Output }]
214
+ };
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0RhdGVUaW1lUGlja2VyL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBOEIsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzSCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFbkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVN4RCxNQUFNLE9BQU8sa0JBQWtCO0lBRTdCLDRDQUE0QztJ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SDJELGdCQUFnQix1QkF5QnFGLFFBQVE7WUF6QmpJLGtCQUFrQjtZQVN2QixjQUFjO1lBQTlELG9CQUFvQjtZQUFFLHdCQUF3QjtZQUU5QyxlQUFlOzs7b0JBaUJyQixLQUFLO3NCQUNMLEtBQUs7dUJBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBDb250cm9sQ29udGFpbmVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvZGF0ZVBpY2tlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgUGlja2VyVHlwZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9FbnVtcy9QaWNrZXJUeXBlJztcclxuaW1wb3J0IHsgU3RhcnRWaWV3IH0gZnJvbSAnLi4vLi4vU2hhcmVkL0VudW1zL1N0YXJ0Vmlldyc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvU2VsZWN0TW9kZSc7XHJcbmltcG9ydCB7IE9uUGFnaW5nRmlsdGVyc0NoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvT25QYWdpbmdGaWx0ZXJzQ2hhbmdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGZ1bGxjYWxlbmRhci9jb3JlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERhdGVUaW1lQWRhcHRlciB9IGZyb20gJ25nLXBpY2stZGF0ZXRpbWUnO1xyXG5pbXBvcnQgeyBPd2xEYXRlVGltZUludGwgfSBmcm9tICduZy1waWNrLWRhdGV0aW1lJztcclxuaW1wb3J0IHsgRGVmYXVsdEludGwgfSBmcm9tICcuLi8uLi9TaGFyZWQvZGVmYXVsdF9pbnRsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1EYXRlVGltZVBpY2tlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0RhdGVUaW1lUGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogT3dsRGF0ZVRpbWVJbnRsLCB1c2VDbGFzczogRGVmYXVsdEludGwgfVxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHN0YXRpYyBjb250cm9sQ29udGFpbmVyc3RhdGljID0gbnVsbDtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkYXRlcGlwZTogRGF0ZVBpcGUsIHByaXZhdGUgb25DaGFuZ2VTZXJ2aWNlOiBPblBhZ2luZ0ZpbHRlcnNDaGFuZ2VTZXJ2aWNlLCBwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIERhdGVJbnB1dENvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsIHByaXZhdGUgVXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOiBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIHByaXZhdGUgZGF0ZVRpbWVBZGFwdGVyOiBEYXRlVGltZUFkYXB0ZXI8YW55Pikge1xyXG4gICAgRGF0ZUlucHV0Q29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogRGF0ZVBpY2tlck9wdGlvbnM7XHJcbiAgRGF0ZVBpY2tlckZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGNvbXBhcmVkQ29udHJvbDogQWJzdHJhY3RDb250cm9sID0gbnVsbDtcclxuICBkYXRlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgLy8gVXBkYXRlIHRoZSBEYXRlVGltZUFkYXB0ZXIgTGFuZ3VhZ2Ugd2l0aCB0aGUgY3VycmVudCB0aHJlYWQgbGFuZ2F1Z2VcclxuICAgIHRoaXMuZGF0ZVRpbWVBZGFwdGVyLnNldExvY2FsZSh0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpID09IFwiYXJcIiA/IFwiYXJcIiA6IFwiZW4tVUtcIik7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlXHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5MYWJlbEtleSAhPSBcIlwiKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuTGFiZWxWYWx1ZSA9IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSh0aGlzLm9wdGlvbnMuTGFiZWxLZXkpO1xyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5TdGFydENvbnRyb2xUb0NvbXBhcmVXaXRoKSB7XHJcbiAgICAgIGlmICh0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuU3RhcnRDb250cm9sVG9Db21wYXJlV2l0aCkpIHtcclxuICAgICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbCA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5TdGFydENvbnRyb2xUb0NvbXBhcmVXaXRoKVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZXMoKVxyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgdGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICB0aGlzLkRhdGVJbnB1dENvbnRyb2xIb3N0Lm5nU3VibWl0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcblxyXG5cclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5SZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudClcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0U2VsZWN0TW9kZSh0eXBlOiBudW1iZXIpIHtcclxuICAgIGxldCBWYWx1ZSA9IChTZWxlY3RNb2RlW3R5cGVdIGFzIHN0cmluZylcclxuICAgIHJldHVybiBWYWx1ZS50b0xvd2VyQ2FzZSgpXHJcbiAgfVxyXG4gIGdldFBpY2tlclR5cGUodHlwZTogbnVtYmVyKSB7XHJcbiAgICBsZXQgVmFsdWUgPSAoUGlja2VyVHlwZVt0eXBlXSBhcyBzdHJpbmcpXHJcbiAgICByZXR1cm4gVmFsdWUudG9Mb3dlckNhc2UoKVxyXG4gIH1cclxuICBnZXRTdGFydFZpZXcodHlwZTogbnVtYmVyKSB7XHJcbiAgICBpZiAodHlwZSA9PSAzKVxyXG4gICAgICByZXR1cm4gXCJtdWx0aS15ZWFyXCI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IFZhbHVlID0gU3RhcnRWaWV3W3R5cGVdIGFzIHN0cmluZ1xyXG4gICAgICByZXR1cm4gVmFsdWUudG9Mb3dlckNhc2UoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIG9uRGF0ZVNlbGVjdChpdGVtKSB7XHJcbiAgICBpZighaXRlbSlcclxuICAgICAgcmV0dXJuO1xyXG4gICAgbGV0IERhdGVWYWx1ZTtcclxuICAgIHZhciB0em9mZnNldCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7IC8vb2Zmc2V0IGluIG1pbGxpc2Vjb25kcyAgXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5TZWxlY3RNb2RlID09IDIpIHtcclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW0udmFsdWUubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgaXRlbS52YWx1ZVtpbmRleF0gPSBuZXcgRGF0ZShpdGVtLnZhbHVlW2luZGV4XSAtIHR6b2Zmc2V0KS50b0lTT1N0cmluZygpLnNsaWNlKDAsIC0xKTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgRGF0ZVZhbHVlID0gaXRlbS52YWx1ZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBEYXRlVmFsdWUgPSBuZXcgRGF0ZShpdGVtLnZhbHVlIC0gdHpvZmZzZXQpLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgLTEpO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLnNldFZhbHVlKERhdGVWYWx1ZSlcclxuICAgIHRoaXMub25DaGFuZ2VTZXJ2aWNlLkNoYW5nZVZhbHVlKHRoaXMub3B0aW9ucy5OYW1lKTtcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID0gRGF0ZVZhbHVlO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICAgIC8vVXNlIHRoaXMgbGluZSB0byBlbmFibGUgdHdvIHdheSBiaW5kaW5nLlxyXG4gICAgdGhpcy5vcHRpb25zLlZhbHVlPSBvcmlnaW5hbFZhbHVlO1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KG9yaWdpbmFsVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlRGF0ZUNoYW5nZXMoKSB7XHJcbiAgICBjb25zdCBzdGFydERhdGVDaGFuZ2VzID0gdGhpcy5jb21wYXJlZENvbnRyb2wudmFsdWVDaGFuZ2VzO1xyXG4gICAgY29uc3QgZW5kRGF0ZUNoYW5nZXMgPSB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsdWVDaGFuZ2VzO1xyXG4gICAgc3RhcnREYXRlQ2hhbmdlcy5zdWJzY3JpYmUoc3RhcnQgPT4ge1xyXG4gICAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5jaGVja0lmU3RhcnREYXRlQmVGb3JFbmREYXRlKTtcclxuICAgICAgICB0aGlzLmNvbXBhcmVkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9KTtcclxuICAgIGVuZERhdGVDaGFuZ2VzLnN1YnNjcmliZShlbmQgPT4ge1xyXG4gICAgICAgIHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnModGhpcy5jaGVja0lmRW5kRGF0ZUFmdGVyU3RhcnREYXRlKTtcclxuICAgICAgICB0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuICBjaGVja0lmRW5kRGF0ZUFmdGVyU3RhcnREYXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIG5ldyBEYXRlKHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlKTwgbmV3IERhdGUodGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29tcGFyZWRDb250cm9sLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICByZXR1cm4ge0ludmFsaWRFbmREYXRlOnRydWV9O1xyXG4gICAgfVxyXG59O1xyXG5jaGVja0lmU3RhcnREYXRlQmVGb3JFbmREYXRlID0gKCkgPT4ge1xyXG4gICAgaWYgKCF0aGlzLmNvbXBhcmVkQ29udHJvbC52YWx1ZSB8fCAhdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIG5ldyBEYXRlKHRoaXMuY29tcGFyZWRDb250cm9sLnZhbHVlKSA8IG5ldyBEYXRlKHRoaXMuZ3JvdXAuZ2V0KHRoaXMub3B0aW9ucy5OYW1lKS52YWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnNldEVycm9ycyhudWxsKTtcclxuICAgICAgICByZXR1cm4ge0ludmFsaWRTdGFydERhdGU6dHJ1ZX07XHJcbiAgICB9XHJcbn07XHJcblxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuRGF0ZVBpY2tlckZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkRhdGVQaWNrZXJGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5EYXRlUGlja2VyRm9ybUNvbnRyb2wpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4iXX0=
@@ -0,0 +1,178 @@
1
+ import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
2
+ import { FormControl, Validators, FormGroupDirective, ControlContainer } from '@angular/forms';
3
+ import { ControlUtility } from '../../Shared/services/ControlUtility';
4
+ import { OnPagingFiltersChangeService } from '../../Shared/services/OnPagingFiltersChange.service';
5
+ import { ControlValidationService, UtilityService } from '@bnsights/bbsf-utilities';
6
+ import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
7
+ export class DropdownListComponent {
8
+ // tslint:disable-next-line: max-line-length
9
+ constructor(onChangeService, controlUtility, controlContainer, DropdownListControlHost, UtilityService, controlValidationService, globalSettings) {
10
+ this.onChangeService = onChangeService;
11
+ this.controlUtility = controlUtility;
12
+ this.controlContainer = controlContainer;
13
+ this.DropdownListControlHost = DropdownListControlHost;
14
+ this.UtilityService = UtilityService;
15
+ this.controlValidationService = controlValidationService;
16
+ this.globalSettings = globalSettings;
17
+ this.dropdownSettings = {};
18
+ this.SelectedList = [];
19
+ this.OnChange = new EventEmitter();
20
+ this.onClear = new EventEmitter();
21
+ this.markAllAsTouched = false;
22
+ this.controlChanged = false;
23
+ this.validationRules = [];
24
+ this.validationRulesasync = [];
25
+ this.resetError = () => {
26
+ this.controlValidationService.RemoveGlobalError();
27
+ };
28
+ //External Method
29
+ this.RemoveRequiredValidation = () => {
30
+ this.controlUtility.RemoveRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options);
31
+ };
32
+ //External Method
33
+ this.AddRequiredValidation = () => {
34
+ this.controlUtility.AddRequiredValidation(this.DropdownListFormControl, this.validationRules, this.options);
35
+ };
36
+ //External Method
37
+ this.RemoveCustomValidation = (CustomValidation) => {
38
+ this.controlUtility.RemoveCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation);
39
+ };
40
+ //External Method
41
+ this.AddCustomValidation = (CustomValidation) => {
42
+ this.controlUtility.AddCustomValidation(this.DropdownListFormControl, this.validationRules, CustomValidation);
43
+ };
44
+ //External Method
45
+ this.IsValid = () => {
46
+ this.controlUtility.IsValid(this.DropdownListFormControl);
47
+ };
48
+ //Update items (data source) of drop down
49
+ this.UpdateDataSource = (dataSource) => {
50
+ this.options.DataSource = dataSource;
51
+ };
52
+ DropdownListComponent.controlContainerstatic = this.controlContainer;
53
+ //console.log(environment["BBSF_AdminUrl"]);
54
+ }
55
+ ngOnInit() {
56
+ this.controlValidationService.isCreatedBefor = false;
57
+ this.SelectedList = this.options.SelectedItems;
58
+ this.dropdownSettings = {
59
+ singleSelection: this.options.SingleSelection,
60
+ text: "Select",
61
+ selectAllText: 'Select All',
62
+ unSelectAllText: 'UnSelect All',
63
+ enableSearchFilter: this.options.AllowSearchFilter,
64
+ classes: this.options.Classes,
65
+ disabled: this.options.IsDisabled,
66
+ showCheckbox: this.options.ShowCheckbox,
67
+ enableCheckAll: this.options.EnableCheckAll,
68
+ itemsShowLimit: this.options.ItemsShowLimit,
69
+ allowSearchFilter: this.options.AllowSearchFilter,
70
+ showSelectedItemsAtTop: true,
71
+ limitSelection: this.options.LimitSelection,
72
+ searchPlaceholderText: this.options.Placeholder,
73
+ labelKey: "value",
74
+ primaryKey: "key"
75
+ };
76
+ this.group.addControl(this.options.Name, new FormControl(''));
77
+ this.DropdownListFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
78
+ if (!this.options.ViewType)
79
+ this.options.ViewType = this.globalSettings.ViewType;
80
+ if (this.options.CustomValidation.length > 0) {
81
+ let Validations = this.options.CustomValidation;
82
+ for (let index = 0; index < Validations.length; index++) {
83
+ const Validation = Validations[index];
84
+ this.validationRules.push(Validation.functionBody);
85
+ }
86
+ }
87
+ if (this.options.IsRequired) {
88
+ this.validationRules.push(Validators.required);
89
+ }
90
+ if (this.options.LabelKey != null && this.options.LabelKey != "")
91
+ this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
92
+ this.DropdownListFormControl.setValidators(this.validationRules);
93
+ this.DropdownListFormControl.setAsyncValidators(this.validationRulesasync);
94
+ if (this.options.IsDisabled) {
95
+ this.DropdownListFormControl.disable();
96
+ }
97
+ this.DropdownListControlHost.ngSubmit.subscribe((value) => {
98
+ this.group.markAllAsTouched();
99
+ this.markAllAsTouched = true;
100
+ });
101
+ }
102
+ ngAfterViewInit() {
103
+ this.controlUtility.setAttributeForControl(this.options);
104
+ }
105
+ showGlobalError() {
106
+ this.controlUtility.showGlobalError();
107
+ }
108
+ getErrorValidation(ErrorList) {
109
+ if (this.markAllAsTouched && this.group.invalid) {
110
+ this.showGlobalError();
111
+ this.markAllAsTouched = false;
112
+ }
113
+ return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
114
+ }
115
+ onItemSelect() {
116
+ this.onChangeService.ChangeValue(this.options.Name);
117
+ let originalValue = this.options.SelectedItems;
118
+ if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
119
+ this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
120
+ }
121
+ this.OnChange.emit(originalValue);
122
+ //console.log(this.DropdownListFormControl.value)
123
+ }
124
+ Clear() {
125
+ //console.log("Clear")
126
+ this.DropdownListFormControl.setValue(this.SelectedItems);
127
+ this.onChangeService.ChangeValue(this.options.Name);
128
+ this.OnChange.emit();
129
+ }
130
+ onSelectAll(items) {
131
+ this.SelectedItems = items;
132
+ this.DropdownListFormControl.setValue(this.SelectedItems);
133
+ }
134
+ onDeselect(items) {
135
+ this.DropdownListFormControl.setValue(this.SelectedItems);
136
+ if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {
137
+ this.DropdownListFormControl.markAsTouched();
138
+ this.DropdownListFormControl.invalid;
139
+ }
140
+ }
141
+ onDeselectAll(items) {
142
+ this.DropdownListFormControl.setValue(this.SelectedItems);
143
+ if ((this.SelectedItems.length == 0) && this.options.IsRequired == true) {
144
+ this.DropdownListFormControl.markAsTouched();
145
+ this.DropdownListFormControl.invalid;
146
+ }
147
+ }
148
+ onDropDownClose() {
149
+ if ((this.SelectedItems == undefined || this.SelectedItems == []) && this.options.IsRequired == true) {
150
+ this.DropdownListFormControl.markAsTouched();
151
+ this.DropdownListFormControl.invalid;
152
+ }
153
+ }
154
+ }
155
+ DropdownListComponent.controlContainerstatic = null;
156
+ DropdownListComponent.decorators = [
157
+ { type: Component, args: [{
158
+ // tslint:disable-next-line: component-selector
159
+ selector: 'BBSF-DropdownList',
160
+ 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"
161
+ },] }
162
+ ];
163
+ DropdownListComponent.ctorParameters = () => [
164
+ { type: OnPagingFiltersChangeService },
165
+ { type: ControlUtility },
166
+ { type: ControlContainer, decorators: [{ type: Optional }] },
167
+ { type: FormGroupDirective },
168
+ { type: UtilityService },
169
+ { type: ControlValidationService },
170
+ { type: GlobalSettings }
171
+ ];
172
+ DropdownListComponent.propDecorators = {
173
+ group: [{ type: Input }],
174
+ options: [{ type: Input }],
175
+ OnChange: [{ type: Output }],
176
+ onClear: [{ type: Output }]
177
+ };
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHJvcGRvd25MaXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQWdCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQThCLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3RFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFROUUsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyw0Q0FBNEM7SUFDNUMsWUFBb0IsZUFBNkMsRUFBVSxjQUE4QixFQUFzQixnQkFBa0MsRUFBUyx1QkFBMkMsRUFDNU0sY0FBOEIsRUFBVSx3QkFBa0QsRUFDekYsY0FBOEI7UUFGcEIsb0JBQWUsR0FBZixlQUFlLENBQThCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQW9CO1FBQzVNLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDekYsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBT3hDLHFCQUFnQixHQUFHLEVBQUUsQ0FB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QTRCO1lBSDVCLGNBQWM7WUFEMkQsZ0JBQWdCLHVCQWlCWSxRQUFRO1lBakJ4RCxrQkFBa0I7WUFLN0MsY0FBYztZQUF4Qyx3QkFBd0I7WUFDeEIsY0FBYzs7O29CQWlCcEIsS0FBSztzQkFDTCxLQUFLO3VCQUtMLE1BQU07c0JBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRG9DaGVjaywgT3B0aW9uYWwsIEhvc3RMaXN0ZW5lciwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIENvbnRyb2xDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bk9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RJdGVtIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9Ecm9wZG93bkxpc3RJdGVtJztcclxuaW1wb3J0IHsgT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9PblBhZ2luZ0ZpbHRlcnNDaGFuZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXR0aW5ncyB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9HbG9iYWxTZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ0JCU0YtRHJvcGRvd25MaXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vRHJvcGRvd25MaXN0LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25MaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG9uQ2hhbmdlU2VydmljZTogT25QYWdpbmdGaWx0ZXJzQ2hhbmdlU2VydmljZSwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIERyb3Bkb3duTGlzdENvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwdWJsaWMgVXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxTZXR0aW5nczogR2xvYmFsU2V0dGluZ3MpIHtcclxuICAgIERyb3Bkb3duTGlzdENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gICAgLy9jb25zb2xlLmxvZyhlbnZpcm9ubWVudFtcIkJCU0ZfQWRtaW5VcmxcIl0pO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBEcm9wZG93bkxpc3RGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIGRyb3Bkb3duU2V0dGluZ3MgPSB7fTtcclxuICBTZWxlY3RlZEl0ZW1zOiBEcm9wZG93bkxpc3RJdGVtW11cclxuICBTZWxlY3RlZExpc3Q6IGFueVtdID0gW11cclxuICBAT3V0cHV0KCkgT25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29udHJvbENoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLmlzQ3JlYXRlZEJlZm9yID0gZmFsc2VcclxuICAgIHRoaXMuU2VsZWN0ZWRMaXN0ID0gdGhpcy5vcHRpb25zLlNlbGVjdGVkSXRlbXNcclxuICAgIHRoaXMuZHJvcGRvd25TZXR0aW5ncyA9IHtcclxuICAgICAgc2luZ2xlU2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uLFxyXG4gICAgICB0ZXh0OiBcIlNlbGVjdFwiLFxyXG4gICAgICBzZWxlY3RBbGxUZXh0OiAnU2VsZWN0IEFsbCcsXHJcbiAgICAgIHVuU2VsZWN0QWxsVGV4dDogJ1VuU2VsZWN0IEFsbCcsXHJcbiAgICAgIGVuYWJsZVNlYXJjaEZpbHRlcjogdGhpcy5vcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyLFxyXG4gICAgICBjbGFzc2VzOiB0aGlzLm9wdGlvbnMuQ2xhc3NlcyxcclxuICAgICAgZGlzYWJsZWQ6IHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkLFxyXG4gICAgICBzaG93Q2hlY2tib3g6IHRoaXMub3B0aW9ucy5TaG93Q2hlY2tib3gsXHJcbiAgICAgIGVuYWJsZUNoZWNrQWxsOiB0aGlzLm9wdGlvbnMuRW5hYmxlQ2hlY2tBbGwsXHJcbiAgICAgIGl0ZW1zU2hvd0xpbWl0OiB0aGlzLm9wdGlvbnMuSXRlbXNTaG93TGltaXQsXHJcbiAgICAgIGFsbG93U2VhcmNoRmlsdGVyOiB0aGlzLm9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIsXHJcbiAgICAgIHNob3dTZWxlY3RlZEl0ZW1zQXRUb3A6IHRydWUsXHJcbiAgICAgIGxpbWl0U2VsZWN0aW9uOiB0aGlzLm9wdGlvbnMuTGltaXRTZWxlY3Rpb24sXHJcbiAgICAgIHNlYXJjaFBsYWNlaG9sZGVyVGV4dDogdGhpcy5vcHRpb25zLlBsYWNlaG9sZGVyLFxyXG4gICAgICBsYWJlbEtleTogXCJ2YWx1ZVwiLFxyXG4gICAgICBwcmltYXJ5S2V5OiBcImtleVwiXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZ3JvdXAuYWRkQ29udHJvbCh0aGlzLm9wdGlvbnMuTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XHJcbiAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuVmlld1R5cGUpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5WaWV3VHlwZSA9IHRoaXMuZ2xvYmFsU2V0dGluZ3MuVmlld1R5cGU7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzUmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG4gICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzYXN5bmMpO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNldEF0dHJpYnV0ZUZvckNvbnRyb2wodGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5SZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uKEVycm9yTGlzdCkge1xyXG4gICAgaWYgKHRoaXMubWFya0FsbEFzVG91Y2hlZCAmJiB0aGlzLmdyb3VwLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSBmYWxzZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25JdGVtU2VsZWN0KCkge1xyXG4gICAgdGhpcy5vbkNoYW5nZVNlcnZpY2UuQ2hhbmdlVmFsdWUodGhpcy5vcHRpb25zLk5hbWUpXHJcbiAgICBsZXQgb3JpZ2luYWxWYWx1ZSA9IHRoaXMub3B0aW9ucy5TZWxlY3RlZEl0ZW1zO1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbFV0aWxpdHkucGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSx0aGlzLm9wdGlvbnMuUGF0Y2hGdW5jdGlvbiAsdGhpcy5vcHRpb25zLlBhdGNoUGF0aClcclxuICAgIH1cclxuICAgIHRoaXMuT25DaGFuZ2UuZW1pdChvcmlnaW5hbFZhbHVlKVxyXG4gICAgLy9jb25zb2xlLmxvZyh0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnZhbHVlKVxyXG4gIH1cclxuICBDbGVhcigpIHtcclxuICAgIC8vY29uc29sZS5sb2coXCJDbGVhclwiKVxyXG4gICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLlNlbGVjdGVkSXRlbXMpO1xyXG4gICAgdGhpcy5vbkNoYW5nZVNlcnZpY2UuQ2hhbmdlVmFsdWUodGhpcy5vcHRpb25zLk5hbWUpXHJcbiAgICB0aGlzLk9uQ2hhbmdlLmVtaXQoKVxyXG4gIH1cclxuICBvblNlbGVjdEFsbChpdGVtcykge1xyXG4gICAgdGhpcy5TZWxlY3RlZEl0ZW1zID0gaXRlbXM7XHJcbiAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuU2VsZWN0ZWRJdGVtcyk7XHJcbiAgfVxyXG4gIG9uRGVzZWxlY3QoaXRlbXMpIHtcclxuICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5TZWxlY3RlZEl0ZW1zKTtcclxuICAgIGlmICgodGhpcy5TZWxlY3RlZEl0ZW1zLmxlbmd0aCA9PSAwKSAmJiB0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgb25EZXNlbGVjdEFsbChpdGVtcykge1xyXG4gICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLlNlbGVjdGVkSXRlbXMpO1xyXG4gICAgaWYgKCh0aGlzLlNlbGVjdGVkSXRlbXMubGVuZ3RoID09IDApICYmIHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkID09IHRydWUpIHtcclxuICAgICAgdGhpcy5Ecm9wZG93bkxpc3RGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wuaW52YWxpZDtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyb3BEb3duQ2xvc2UoKSB7XHJcbiAgICBpZiAoKHRoaXMuU2VsZWN0ZWRJdGVtcyA9PSB1bmRlZmluZWQgfHwgdGhpcy5TZWxlY3RlZEl0ZW1zID09IFtdKSAmJiB0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLmludmFsaWQ7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LkFkZFJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBBZGRDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkRyb3Bkb3duTGlzdEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgQ3VzdG9tVmFsaWRhdGlvbilcclxuICB9XHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBJc1ZhbGlkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Jc1ZhbGlkKHRoaXMuRHJvcGRvd25MaXN0Rm9ybUNvbnRyb2wpXHJcbiAgfVxyXG5cclxuICAvL1VwZGF0ZSBpdGVtcyAoZGF0YSBzb3VyY2UpIG9mIGRyb3AgZG93blxyXG4gIFVwZGF0ZURhdGFTb3VyY2UgPSAoZGF0YVNvdXJjZTogRHJvcGRvd25MaXN0SXRlbVtdKSA9PiB7XHJcbiAgICB0aGlzLm9wdGlvbnMuRGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuIl19