@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
@@ -1,336 +0,0 @@
1
- import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { TagInputView } from '../Enums/TagInputView';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "ngx-intl-tel-input";
8
- import * as i4 from "ngx-bootstrap/typeahead";
9
- const noop = () => { };
10
- const TAGS_INPUT_TEMPLATE = `
11
-
12
- <div class="tags-input">
13
- <span class="tags-input__tag label label-primary badge badge-primary" *ngFor="let tag of tags">
14
-
15
- <span [ngSwitch]="ViewMode">
16
- <span *ngSwitchCase="tagInputViewEnum.WithImage">
17
- <img style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
18
- src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
19
- </span>
20
-
21
- <span *ngSwitchCase="tagInputViewEnum.WithInitial">
22
- <div class="user-initials">{{calculateInitials(tag.name)}}</div>
23
- </span>
24
-
25
- <span *ngSwitchDefault>
26
- </span>
27
-
28
- </span>
29
- {{tag[displayField]}}
30
- <span *ngIf="isDeleteable(tag)" role="button" class="tags-input__tag-remove-btn" (click)="removeTag(tag)"
31
- (touch)="removeTag(tag)">
32
- <span aria-hidden="true">&times;</span>
33
- <span class="sr-only">Close</span>
34
- </span>
35
- </span>
36
-
37
- <input *ngIf="options === null; else withTypeahead" class="tags-input__input-field" type="text"
38
- [placeholder]="getPlaceholder()" name="tags" (keyup.enter)="addTag(tagInput)"
39
- (keydown.backspace)="removeLastTag(tagInput)" [disabled]="!canAddTags || maximumOfTagsReached()"
40
- [hidden]="!canAddTags || maximumOfTagsReached()" #tagInput />
41
-
42
- <ng-template #withTypeahead>
43
- <span [ngSwitch]="ViewMode">
44
- <span *ngSwitchCase="tagInputViewEnum.WithImage">
45
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
46
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
47
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
48
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
49
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
50
- [typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
51
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
52
- (blur)="onBlur()" autocomplete="off"
53
- #tagInput />
54
- </span>
55
-
56
- <span *ngSwitchCase="tagInputViewEnum.WithoutImage">
57
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
58
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
59
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
60
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
61
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
62
- [typeaheadItemTemplate]="itemTemplateWithoutImage"
63
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
64
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
65
- (blur)="onBlur()" autocomplete="off"
66
- #tagInput />
67
- </span>
68
-
69
- <span *ngSwitchCase="tagInputViewEnum.WithInitial">
70
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
71
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
72
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
73
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
74
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
75
- [typeaheadItemTemplate]="itemTemplateWithoutInitial"
76
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
77
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
78
- (blur)="onBlur()" autocomplete="off"
79
- #tagInput />
80
- </span>
81
-
82
- <span *ngSwitchDefault>
83
- <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
84
- name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
85
- [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
86
- (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
87
- [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
88
- [typeaheadItemTemplate]="itemTemplateWithoutImage"
89
- [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
90
- [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
91
- (blur)="onBlur()" autocomplete="off"
92
- #tagInput />
93
- </span>
94
-
95
- </span>
96
-
97
- </ng-template>
98
-
99
- <ng-template #itemTemplateWithImage let-model="item" let-index="index">
100
- <img
101
- style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
102
- src="{{(model.imageURL?model.imageURL:defaultImageURL)}}" />
103
- <div>
104
- <a [innerHTML]="model.name"></a>
105
- <p *ngIf="showDescription">
106
- {{model.description}}
107
- </p>
108
- </div>
109
- </ng-template>
110
-
111
- <ng-template #itemTemplateWithoutImage let-model="item" let-index="index">
112
- <div>
113
- <a [innerHTML]="model.name"></a>
114
- <p *ngIf="showDescription">
115
- {{model.description}}
116
- </p>
117
- </div>
118
- </ng-template>
119
-
120
- <ng-template #itemTemplateWithoutInitial let-model="item" let-index="index">
121
- <div class="user-image">
122
- <div class="user-initials">{{calculateInitials(model.name)}}</div>
123
- </div>
124
- <div>
125
- <a [innerHTML]="model.name"></a>
126
- <p *ngIf="showDescription">
127
- {{model.description}}
128
- </p>
129
- </div>
130
- </ng-template>
131
- </div>
132
- `;
133
- const TAGS_INPUT_STYLE = `
134
- :host {
135
- overflow: auto;
136
- white-space: nowrap;
137
- }
138
-
139
- .tags-input {
140
- align-items: center;
141
- display: flex;
142
- flex-wrap: wrap;
143
- }
144
-
145
- .tags-input__tag {
146
- display: inline-block;
147
- margin-bottom: 2px;
148
- margin-right: 5px;
149
- padding-right: 0.3em;
150
- }
151
-
152
- .tags-input__tag-remove-btn {
153
- cursor: pointer;
154
- display: inline-block;
155
- font-size: 12px;
156
- margin: -3px 0 0 3px;
157
- padding: 0;
158
- vertical-align: top;
159
- }
160
-
161
- .tags-input__input-field {
162
- border: none;
163
- flex-grow: 1;
164
- outline: none;
165
- }
166
- `;
167
- const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
168
- provide: NG_VALUE_ACCESSOR,
169
- useExisting: forwardRef(() => BTagsInputComponent),
170
- multi: true
171
- };
172
- export class BTagsInputComponent {
173
- constructor() {
174
- this.selected = '';
175
- this.tags = [];
176
- this.onTouchedCallback = noop;
177
- this.onChangeCallback = noop;
178
- this.tagInputViewEnum = TagInputView;
179
- this.removeLastOnBackspace = false;
180
- this.canDeleteTags = true;
181
- this.canAddTags = true;
182
- this.ViewMode = TagInputView.WithoutImage;
183
- this.placeholder = '';
184
- this.showDescription = true;
185
- this.options = null;
186
- this.defaultImageURL = null;
187
- this.displayField = 'name';
188
- this.minLengthBeforeOptions = 1;
189
- this.scrollableOptions = false;
190
- this.scrollableOptionsInView = 5;
191
- this.onTagsChanged = new EventEmitter();
192
- this.onMaxTagsReached = new EventEmitter();
193
- this.onNoOptionsMatch = new EventEmitter();
194
- this.onBlurInput = new EventEmitter();
195
- }
196
- getPlaceholder() {
197
- if (this.tags && this.tags.length > 0) {
198
- return '';
199
- }
200
- return this.placeholder;
201
- }
202
- tagsChanged(type, tag) {
203
- this.onChangeCallback(this.tags);
204
- this.onTagsChanged.emit({
205
- change: type,
206
- tag: tag
207
- });
208
- if (this.maximumOfTagsReached()) {
209
- this.onMaxTagsReached.emit();
210
- }
211
- }
212
- removeLastTag(tagInput) {
213
- if (!this.removeLastOnBackspace || !this.tags?.length) {
214
- return;
215
- }
216
- if (tagInput.value === '') {
217
- this.removeTag(this.tags[this.tags.length - 1]);
218
- }
219
- }
220
- addTag(tagInput) {
221
- if (tagInput.value.trim() !== '') {
222
- let tag = {
223
- [this.displayField]: tagInput.value
224
- };
225
- this.addPredefinedTag(tag);
226
- }
227
- tagInput.value = '';
228
- }
229
- addPredefinedTag(tag) {
230
- if (this.tags == null)
231
- this.tags = [];
232
- if (!this.maximumOfTagsReached()) {
233
- this.tags.push(tag);
234
- this.tagsChanged('add', tag);
235
- }
236
- }
237
- removeTag(tagToRemove) {
238
- if (!this.isDeleteable(tagToRemove)) {
239
- return;
240
- }
241
- this.tags = this.tags.filter(tag => tagToRemove !== tag);
242
- this.tagsChanged('remove', tagToRemove);
243
- }
244
- maximumOfTagsReached() {
245
- return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;
246
- }
247
- isDeleteable(tag) {
248
- if (typeof tag.deleteable !== "undefined" && !tag.deleteable) {
249
- return false;
250
- }
251
- return this.canDeleteTags;
252
- }
253
- typeaheadOnSelect(e) {
254
- if (typeof e.item === 'string') {
255
- this.addPredefinedTag({
256
- [this.displayField]: e.value
257
- });
258
- }
259
- else {
260
- this.addPredefinedTag(e.item);
261
- }
262
- this.selected = '';
263
- }
264
- typeaheadOnNoMatch(e) {
265
- if (typeof this.onNoOptionsMatch !== 'undefined') {
266
- this.onNoOptionsMatch.emit(e);
267
- }
268
- }
269
- writeValue(value) {
270
- if (value !== this.tags) {
271
- this.tags = value;
272
- }
273
- }
274
- registerOnChange(fn) {
275
- this.onChangeCallback = fn;
276
- }
277
- registerOnTouched(fn) {
278
- this.onTouchedCallback = fn;
279
- }
280
- calculateInitials(name) {
281
- var fullName = name.split(' ');
282
- var initials = "";
283
- if (fullName.length > 1)
284
- initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
285
- else
286
- initials = fullName.shift().charAt(0);
287
- return initials.toUpperCase();
288
- }
289
- onBlur() {
290
- this.onBlurInput.emit();
291
- }
292
- }
293
- BTagsInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BTagsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
294
- 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: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.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: i3.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"] }] });
295
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BTagsInputComponent, decorators: [{
296
- type: Component,
297
- args: [{
298
- selector: 'b-tags-input',
299
- template: TAGS_INPUT_TEMPLATE,
300
- styles: [TAGS_INPUT_STYLE],
301
- providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]
302
- }]
303
- }], propDecorators: { maxTags: [{
304
- type: Input
305
- }], removeLastOnBackspace: [{
306
- type: Input
307
- }], canDeleteTags: [{
308
- type: Input
309
- }], canAddTags: [{
310
- type: Input
311
- }], ViewMode: [{
312
- type: Input
313
- }], placeholder: [{
314
- type: Input
315
- }], showDescription: [{
316
- type: Input
317
- }], options: [{
318
- type: Input
319
- }], defaultImageURL: [{
320
- type: Input
321
- }], minLengthBeforeOptions: [{
322
- type: Input
323
- }], scrollableOptions: [{
324
- type: Input
325
- }], scrollableOptionsInView: [{
326
- type: Input
327
- }], onTagsChanged: [{
328
- type: Output
329
- }], onMaxTagsReached: [{
330
- type: Output
331
- }], onNoOptionsMatch: [{
332
- type: Output
333
- }], onBlurInput: [{
334
- type: Output
335
- }] } });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdGFnLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL25nLXRhZy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNkMsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRXJELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUV2QixNQUFNLG1CQUFtQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTBIM0IsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlDeEIsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQVE7SUFDL0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQWFGLE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFRRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ2YsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUNyQixzQkFBaUIsR0FBZSxJQUFJLENBQUM7UUFDckMscUJBQWdCLEdBQXFCLElBQUksQ0FBQztRQUMzQyxxQkFBZ0IsR0FBRyxZ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S0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBEb0NoZWNrLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUeXBlYWhlYWRNYXRjaCB9IGZyb20gJ25neC1ib290c3RyYXAvdHlwZWFoZWFkL3B1YmxpY19hcGknO1xyXG5pbXBvcnQgeyBUYWdJbnB1dFZpZXcgfSBmcm9tICcuLi9FbnVtcy9UYWdJbnB1dFZpZXcnO1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHsgfTtcclxuXHJcbmNvbnN0IFRBR1NfSU5QVVRfVEVNUExBVEUgPSBgXHJcblxyXG48ZGl2IGNsYXNzPVwidGFncy1pbnB1dFwiPlxyXG48c3BhbiBjbGFzcz1cInRhZ3MtaW5wdXRfX3RhZyBsYWJlbCBsYWJlbC1wcmltYXJ5IGJhZGdlIGJhZGdlLXByaW1hcnlcIiAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3NcIj5cclxuXHJcbjxzcGFuIFtuZ1N3aXRjaF09XCJWaWV3TW9kZVwiPlxyXG48c3BhbiAqbmdTd2l0Y2hDYXNlPVwidGFnSW5wdXRWaWV3RW51bS5XaXRoSW1hZ2VcIj5cclxuPGltZyBzdHlsZT1cImJvcmRlci1yYWRpdXM6NTAlOyBoZWlnaHQ6NDBweDsgd2lkdGg6IDQwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjVweCA7IG1hcmdpbi10b3A6IDVweDttYXJnaW4tcmlnaHQ6IDVweDtcIlxyXG5zcmM9XCJ7eyh0YWcuaW1hZ2VVUkw/dGFnLmltYWdlVVJMOmRlZmF1bHRJbWFnZVVSTCl9fVwiIC8+XHJcbjwvc3Bhbj5cclxuXHJcbjxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbml0aWFsXCI+XHJcbjxkaXYgY2xhc3M9XCJ1c2VyLWluaXRpYWxzXCI+e3tjYWxjdWxhdGVJbml0aWFscyh0YWcubmFtZSl9fTwvZGl2PlxyXG48L3NwYW4+XHJcblxyXG48c3BhbiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG48L3NwYW4+XHJcblxyXG48L3NwYW4+XHJcbiAge3t0YWdbZGlzcGxheUZpZWxkXX19XHJcbiAgPHNwYW4gKm5nSWY9XCJpc0RlbGV0ZWFibGUodGFnKVwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cInRhZ3MtaW5wdXRfX3RhZy1yZW1vdmUtYnRuXCIgKGNsaWNrKT1cInJlbW92ZVRhZyh0YWcpXCJcclxuICAgICh0b3VjaCk9XCJyZW1vdmVUYWcodGFnKVwiPlxyXG4gICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gIDwvc3Bhbj5cclxuPC9zcGFuPlxyXG5cclxuPGlucHV0ICpuZ0lmPVwib3B0aW9ucyA9PT0gbnVsbDsgZWxzZSB3aXRoVHlwZWFoZWFkXCIgY2xhc3M9XCJ0YWdzLWlucHV0X19pbnB1dC1maWVsZFwiIHR5cGU9XCJ0ZXh0XCJcclxuICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiIG5hbWU9XCJ0YWdzXCIgKGtleXVwLmVudGVyKT1cImFkZFRhZyh0YWdJbnB1dClcIlxyXG4gIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFtkaXNhYmxlZF09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCJcclxuICBbaGlkZGVuXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIiAjdGFnSW5wdXQgLz5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjd2l0aFR5cGVhaGVhZD5cclxuICA8c3BhbiBbbmdTd2l0Y2hdPVwiVmlld01vZGVcIj5cclxuICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbWFnZVwiPlxyXG4gICAgICA8aW5wdXQgKm5nSWY9XCIob3B0aW9ucyAhPT0gbnVsbClcIiBjbGFzcz1cInRhZ3MtaW5wdXRfX2lucHV0LWZpZWxkXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgbmFtZT1cInRhZ3NcIiAoa2V5ZG93bi5iYWNrc3BhY2UpPVwicmVtb3ZlTGFzdFRhZyh0YWdJbnB1dClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgW3R5cGVhaGVhZF09XCJvcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkT3B0aW9uRmllbGRdPVwiZGlzcGxheUZpZWxkXCIgKHR5cGVhaGVhZE9uU2VsZWN0KT1cInR5cGVhaGVhZE9uU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICh0eXBlYWhlYWROb1Jlc3VsdHMpPVwidHlwZWFoZWFkT25Ob01hdGNoKCRldmVudClcIiBbdHlwZWFoZWFkTWluTGVuZ3RoXT1cIm1pbkxlbmd0aEJlZm9yZU9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInNjcm9sbGFibGVPcHRpb25zXCIgW3R5cGVhaGVhZExhdGluaXplXT1cInRydWVcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlV2l0aEltYWdlXCIgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAjdGFnSW5wdXQgLz5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwidGFnSW5wdXRWaWV3RW51bS5XaXRob3V0SW1hZ2VcIj5cclxuICAgICAgPGlucHV0ICpuZ0lmPVwiKG9wdGlvbnMgIT09IG51bGwpXCIgY2xhc3M9XCJ0YWdzLWlucHV0X19pbnB1dC1maWVsZFwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgIG5hbWU9XCJ0YWdzXCIgKGtleWRvd24uYmFja3NwYWNlKT1cInJlbW92ZUxhc3RUYWcodGFnSW5wdXQpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIFt0eXBlYWhlYWRdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbkZpZWxkXT1cImRpc3BsYXlGaWVsZFwiICh0eXBlYWhlYWRPblNlbGVjdCk9XCJ0eXBlYWhlYWRPblNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAodHlwZWFoZWFkTm9SZXN1bHRzKT1cInR5cGVhaGVhZE9uTm9NYXRjaCgkZXZlbnQpXCIgW3R5cGVhaGVhZE1pbkxlbmd0aF09XCJtaW5MZW5ndGhCZWZvcmVPcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlT3B0aW9uc1wiIFt0eXBlYWhlYWRMYXRpbml6ZV09XCJ0cnVlXCJcclxuICAgICAgICBbdHlwZWFoZWFkSXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVdpdGhvdXRJbWFnZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICN0YWdJbnB1dCAvPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbml0aWFsXCI+XHJcbiAgICAgIDxpbnB1dCAqbmdJZj1cIihvcHRpb25zICE9PSBudWxsKVwiIGNsYXNzPVwidGFncy1pbnB1dF9faW5wdXQtZmllbGRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcclxuICAgICAgICBuYW1lPVwidGFnc1wiIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiBbdHlwZWFoZWFkXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25GaWVsZF09XCJkaXNwbGF5RmllbGRcIiAodHlwZWFoZWFkT25TZWxlY3QpPVwidHlwZWFoZWFkT25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgKHR5cGVhaGVhZE5vUmVzdWx0cyk9XCJ0eXBlYWhlYWRPbk5vTWF0Y2goJGV2ZW50KVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluTGVuZ3RoQmVmb3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZFNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZU9wdGlvbnNcIiBbdHlwZWFoZWFkTGF0aW5pemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVXaXRob3V0SW5pdGlhbFwiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICN0YWdJbnB1dCAvPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgIDxpbnB1dCAqbmdJZj1cIihvcHRpb25zICE9PSBudWxsKVwiIGNsYXNzPVwidGFncy1pbnB1dF9faW5wdXQtZmllbGRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcclxuICAgICAgICBuYW1lPVwidGFnc1wiIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiBbdHlwZWFoZWFkXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25GaWVsZF09XCJkaXNwbGF5RmllbGRcIiAodHlwZWFoZWFkT25TZWxlY3QpPVwidHlwZWFoZWFkT25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgKHR5cGVhaGVhZE5vUmVzdWx0cyk9XCJ0eXBlYWhlYWRPbk5vTWF0Y2goJGV2ZW50KVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluTGVuZ3RoQmVmb3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZFNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZU9wdGlvbnNcIiBbdHlwZWFoZWFkTGF0aW5pemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVXaXRob3V0SW1hZ2VcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlld109XCJzY3JvbGxhYmxlT3B0aW9uc0luVmlld1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIiBbaGlkZGVuXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAjdGFnSW5wdXQgLz5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgPC9zcGFuPlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlV2l0aEltYWdlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gIDxpbWdcclxuICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czo1MCU7IGhlaWdodDo0MHB4OyB3aWR0aDogNDBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4IDsgbWFyZ2luLXRvcDogNXB4O21hcmdpbi1yaWdodDogNXB4O1wiXHJcbiAgICBzcmM9XCJ7eyhtb2RlbC5pbWFnZVVSTD9tb2RlbC5pbWFnZVVSTDpkZWZhdWx0SW1hZ2VVUkwpfX1cIiAvPlxyXG4gIDxkaXY+XHJcbiAgICA8YSBbaW5uZXJIVE1MXT1cIm1vZGVsLm5hbWVcIj48L2E+XHJcbiAgICA8cCAqbmdJZj1cInNob3dEZXNjcmlwdGlvblwiPlxyXG4gICAgICB7e21vZGVsLmRlc2NyaXB0aW9ufX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlV2l0aG91dEltYWdlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8YSBbaW5uZXJIVE1MXT1cIm1vZGVsLm5hbWVcIj48L2E+XHJcbiAgICA8cCAqbmdJZj1cInNob3dEZXNjcmlwdGlvblwiPlxyXG4gICAgICB7e21vZGVsLmRlc2NyaXB0aW9ufX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlV2l0aG91dEluaXRpYWwgbGV0LW1vZGVsPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgPGRpdiBjbGFzcz1cInVzZXItaW1hZ2VcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluaXRpYWxzXCI+e3tjYWxjdWxhdGVJbml0aWFscyhtb2RlbC5uYW1lKX19PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxhIFtpbm5lckhUTUxdPVwibW9kZWwubmFtZVwiPjwvYT5cclxuICAgIDxwICpuZ0lmPVwic2hvd0Rlc2NyaXB0aW9uXCI+XHJcbiAgICAgIHt7bW9kZWwuZGVzY3JpcHRpb259fVxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuYDtcclxuXHJcbmNvbnN0IFRBR1NfSU5QVVRfU1RZTEUgPSBgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAudGFncy1pbnB1dCB7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAudGFncy1pbnB1dF9fdGFnIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuM2VtO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWdzLWlucHV0X190YWctcmVtb3ZlLWJ0biB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgbWFyZ2luOiAtM3B4IDAgMCAzcHg7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWdzLWlucHV0X19pbnB1dC1maWVsZCB7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGZsZXgtZ3JvdzogMTtcclxuICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgfVxyXG5gO1xyXG5cclxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCVGFnc0lucHV0Q29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWdzQ2hhbmdlZEV2ZW50IHtcclxuICBjaGFuZ2U6IHN0cmluZyxcclxuICB0YWc6IGFueVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ItdGFncy1pbnB1dCcsXHJcbiAgdGVtcGxhdGU6IFRBR1NfSU5QVVRfVEVNUExBVEUsXHJcbiAgc3R5bGVzOiBbVEFHU19JTlBVVF9TVFlMRV0sXHJcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCVGFnc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBzZWxlY3RlZDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHRhZ3M6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHB1YmxpYyB0YWdJbnB1dFZpZXdFbnVtID0gVGFnSW5wdXRWaWV3O1xyXG4gIEBJbnB1dCgpIG1heFRhZ3M6IG51bWJlcjtcclxuICBASW5wdXQoKSByZW1vdmVMYXN0T25CYWNrc3BhY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjYW5EZWxldGVUYWdzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5BZGRUYWdzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBWaWV3TW9kZTogVGFnSW5wdXRWaWV3ID0gVGFnSW5wdXRWaWV3LldpdGhvdXRJbWFnZTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2hvd0Rlc2NyaXB0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRJbWFnZVVSTDogYW55ID0gbnVsbDtcclxuICBkaXNwbGF5RmllbGQ6IHN0cmluZyA9ICduYW1lJztcclxuICBASW5wdXQoKSBtaW5MZW5ndGhCZWZvcmVPcHRpb25zOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGFibGVPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2Nyb2xsYWJsZU9wdGlvbnNJblZpZXc6IG51bWJlciA9IDU7XHJcbiAgQE91dHB1dCgpIG9uVGFnc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxUYWdzQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25NYXhUYWdzUmVhY2hlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbk5vT3B0aW9uc01hdGNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmx1cklucHV0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnRhZ3MgJiYgdGhpcy50YWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRhZ3NDaGFuZ2VkKHR5cGU6IHN0cmluZywgdGFnOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy5vblRhZ3NDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICBjaGFuZ2U6IHR5cGUsXHJcbiAgICAgIHRhZzogdGFnXHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLm1heGltdW1PZlRhZ3NSZWFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5vbk1heFRhZ3NSZWFjaGVkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUxhc3RUYWcodGFnSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZW1vdmVMYXN0T25CYWNrc3BhY2UgfHwgIXRoaXMudGFncz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGFnSW5wdXQudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlVGFnKHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVGFnKHRhZ0lucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGFnSW5wdXQudmFsdWUudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBsZXQgdGFnID0ge1xyXG4gICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IHRhZ0lucHV0LnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyh0YWcpO1xyXG4gICAgfVxyXG4gICAgdGFnSW5wdXQudmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUHJlZGVmaW5lZFRhZyh0YWc6IE9iamVjdCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFncyA9PSBudWxsKVxyXG4gICAgICB0aGlzLnRhZ3MgPSBbXTtcclxuICAgIGlmICghdGhpcy5tYXhpbXVtT2ZUYWdzUmVhY2hlZCgpKSB7XHJcbiAgICAgIHRoaXMudGFncy5wdXNoKHRhZyk7XHJcbiAgICAgIHRoaXMudGFnc0NoYW5nZWQoJ2FkZCcsIHRhZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVUYWcodGFnVG9SZW1vdmU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRGVsZXRlYWJsZSh0YWdUb1JlbW92ZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWdzID0gdGhpcy50YWdzLmZpbHRlcih0YWcgPT4gdGFnVG9SZW1vdmUgIT09IHRhZyk7XHJcbiAgICB0aGlzLnRhZ3NDaGFuZ2VkKCdyZW1vdmUnLCB0YWdUb1JlbW92ZSk7XHJcbiAgfVxyXG5cclxuICBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdGhpcy5tYXhUYWdzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRhZ3MgJiYgdGhpcy50YWdzLmxlbmd0aCA+PSB0aGlzLm1heFRhZ3M7XHJcbiAgfVxyXG5cclxuICBpc0RlbGV0ZWFibGUodGFnOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgdGFnLmRlbGV0ZWFibGUgIT09IFwidW5kZWZpbmVkXCIgJiYgIXRhZy5kZWxldGVhYmxlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhbkRlbGV0ZVRhZ3M7XHJcbiAgfVxyXG5cclxuICB0eXBlYWhlYWRPblNlbGVjdChlOiBUeXBlYWhlYWRNYXRjaCk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiBlLml0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyh7XHJcbiAgICAgICAgW3RoaXMuZGlzcGxheUZpZWxkXTogZS52YWx1ZVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyhlLml0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdHlwZWFoZWFkT25Ob01hdGNoKGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9uTm9PcHRpb25zTWF0Y2ggIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMub25Ob09wdGlvbnNNYXRjaC5lbWl0KGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy50YWdzKSB7XHJcbiAgICAgIHRoaXMudGFncyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZUluaXRpYWxzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB2YXIgZnVsbE5hbWUgPSBuYW1lLnNwbGl0KCcgJyk7XHJcbiAgICB2YXIgaW5pdGlhbHMgPSBcIlwiXHJcbiAgICBpZiAoZnVsbE5hbWUubGVuZ3RoID4gMSlcclxuICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKSArIGZ1bGxOYW1lLnBvcCgpLmNoYXJBdCgwKTtcclxuICAgIGVsc2VcclxuICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKVxyXG4gICAgcmV0dXJuIGluaXRpYWxzLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQmx1cklucHV0LmVtaXQoKTtcclxuICB9XHJcbiAgLy8gKGtleWRvd24uVGFiKSA9IFwib25UYWIoJGV2ZW50KVwiXHJcbiAgLy9vblRhYihldmVudCkge1xyXG4gIC8vICB0aGlzLm9uVGFiSW5wdXQuZW1pdCgpO1xyXG4gIC8vICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIC8vICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAvL31cclxufVxyXG4iXX0=
@@ -1,29 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { OwlDateTimeIntl } from 'ng-pick-datetime';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@bnsights/bbsf-utilities";
5
- // here is the default text string - just adjust the strings to reflect your preferred language
6
- export class DefaultIntl extends OwlDateTimeIntl {
7
- constructor(utilityService) {
8
- super();
9
- this.utilityService = utilityService;
10
- /** A label for the range 'from' in picker info */
11
- this.rangeFromLabel = this.utilityService.getResourceValue('From');
12
- /** A label for the range 'to' in picker info */
13
- this.rangeToLabel = this.utilityService.getResourceValue('To');
14
- /** A label for the cancel button */
15
- this.cancelBtnLabel = this.utilityService.getResourceValue('Cancel');
16
- /** A label for the set button */
17
- this.setBtnLabel = this.utilityService.getResourceValue('Save');
18
- /** A label for the hour12 button (AM) */
19
- this.hour12AMLabel = this.utilityService.getResourceValue('AM');
20
- /** A label for the hour12 button (PM) */
21
- this.hour12PMLabel = this.utilityService.getResourceValue('PM');
22
- }
23
- }
24
- DefaultIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
25
- DefaultIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl, decorators: [{
27
- type: Injectable
28
- }], ctorParameters: function () { return [{ type: i1.UtilityService }]; } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9pbnRsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9kZWZhdWx0X2ludGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUduRCwrRkFBK0Y7QUFDL0YsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQzlDLFlBQW9CLGNBQThCO1FBQ2hELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSWxELGtEQUFrRDtRQUNsRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsZ0RBQWdEO1FBQ2hELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxvQ0FBb0M7UUFDcEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLGlDQUFpQztRQUNqQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QseUNBQXlDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCx5Q0FBeUM7UUFDekMsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBYjNELENBQUM7O3lHQUhVLFdBQVc7NkdBQVgsV0FBVzs0RkFBWCxXQUFXO2tCQUZ2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPd2xEYXRlVGltZUludGwgfSBmcm9tICduZy1waWNrLWRhdGV0aW1lJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuLy8gaGVyZSBpcyB0aGUgZGVmYXVsdCB0ZXh0IHN0cmluZyAtIGp1c3QgYWRqdXN0IHRoZSBzdHJpbmdzIHRvIHJlZmxlY3QgeW91ciBwcmVmZXJyZWQgbGFuZ3VhZ2VcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRJbnRsIGV4dGVuZHMgT3dsRGF0ZVRpbWVJbnRsIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgcmFuZ2UgJ2Zyb20nIGluIHBpY2tlciBpbmZvICovXHJcbiAgcmFuZ2VGcm9tTGFiZWwgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0Zyb20nKTtcclxuICAvKiogQSBsYWJlbCBmb3IgdGhlIHJhbmdlICd0bycgaW4gcGlja2VyIGluZm8gKi9cclxuICByYW5nZVRvTGFiZWwgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1RvJyk7XHJcbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBjYW5jZWwgYnV0dG9uICovXHJcbiAgY2FuY2VsQnRuTGFiZWwgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbCcpO1xyXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgc2V0IGJ1dHRvbiAqL1xyXG4gIHNldEJ0bkxhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlJyk7XHJcbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBob3VyMTIgYnV0dG9uIChBTSkgKi9cclxuICBob3VyMTJBTUxhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBTScpO1xyXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgaG91cjEyIGJ1dHRvbiAoUE0pICovXHJcbiAgaG91cjEyUE1MYWJlbCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUE0nKTtcclxufVxyXG4iXX0=
@@ -1,162 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { InputType } from '../Enums/InputType';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./validationErrorMassage.service";
6
- import * as i2 from "@bnsights/bbsf-utilities";
7
- export class ControlUtility {
8
- constructor(ErrorHandler, controlValidationService, utilityService) {
9
- this.ErrorHandler = ErrorHandler;
10
- this.controlValidationService = controlValidationService;
11
- this.utilityService = utilityService;
12
- }
13
- getErrorValidation(Errorsitem, CustomValidation) {
14
- let resulte = '';
15
- Errorsitem.forEach(element => {
16
- if (element.key === 'customerError' && Errorsitem.length === 1) {
17
- resulte = CustomValidation[0].massage;
18
- }
19
- else if (element.key === 'EmailValidation') {
20
- resulte = element.value;
21
- }
22
- else if (element.key === 'FluentApi') {
23
- resulte = element.value;
24
- }
25
- else if (element.key === 'errorMassage') {
26
- resulte = element.value;
27
- }
28
- else {
29
- resulte = this.ErrorHandler.getErrorMassageValidation(element);
30
- }
31
- });
32
- return resulte;
33
- }
34
- patternValidator(regex, error) {
35
- return (control) => {
36
- if (!control.value) {
37
- return null;
38
- }
39
- const valid = regex.test(control.value);
40
- return valid ? null : error;
41
- };
42
- }
43
- patchControlValue(originalValue, PatchFunction, PatchPath) {
44
- var patchOp = [{
45
- op: "replace",
46
- path: PatchPath,
47
- value: originalValue
48
- }];
49
- var patchService = PatchFunction.call(null, patchOp);
50
- patchService.subscribe(r => console.log(r), erorr => this.utilityService.notifyErrorMessage(erorr));
51
- }
52
- arabicValidator(error) {
53
- return (control) => {
54
- if (!control.value)
55
- return null;
56
- if (control.value.match('[\u0600-\u06FF]')) {
57
- if (control.value.match('[A-Za-z]') != null) {
58
- //FOUND ENGLISH CHARS
59
- var length = control.value.replace(/\W/g, '').replace(/[0-9]/g, '').length;
60
- if (length > 50) {
61
- return error;
62
- }
63
- else {
64
- return null;
65
- }
66
- }
67
- else {
68
- //NO ENGLISH CHARACTERS AT ALL
69
- return null;
70
- }
71
- }
72
- else {
73
- return error;
74
- }
75
- };
76
- }
77
- getInputType(type) {
78
- return InputType[type];
79
- }
80
- trimControlValue(value) {
81
- const whitespace = ' ';
82
- if (value.startsWith(whitespace) || value.endsWith(whitespace)) {
83
- return value.trim();
84
- }
85
- else
86
- return value;
87
- }
88
- CopyInputMessage(inputElement) {
89
- inputElement.select();
90
- document.execCommand('copy');
91
- inputElement.setSelectionRange(0, 0);
92
- }
93
- getErrorValidationMassage(ErrorList, group, options) {
94
- // if((!group.valid)&&(!UtilityService.isCreatedBefor))
95
- // {
96
- // UtilityService.showGlobalError();
97
- // this.scrollToGlobalErrorMassage()
98
- // }
99
- return this.getErrorValidation(ErrorList, options.CustomValidation);
100
- }
101
- scrollToGlobalErrorMassage() {
102
- let element = document.getElementById('errorId');
103
- element.scrollIntoView({ behavior: "smooth", inline: "nearest" });
104
- }
105
- setAttributeForControl(options) {
106
- if (options.AttributeList != null) {
107
- var element = document.getElementById(options.Name);
108
- for (let index = 0; index < options.AttributeList.length; index++) {
109
- element.setAttribute(options.AttributeList[index].Key, options.AttributeList[index].value);
110
- }
111
- }
112
- }
113
- showGlobalError(formId) {
114
- this.controlValidationService.showGlobalError(null, formId);
115
- this.scrollToGlobalErrorMassage();
116
- }
117
- RemoveRequiredValidation(FormControl, ValidationRole, Options) {
118
- Options.IsRequired = false;
119
- ValidationRole = ValidationRole.filter((e) => e != Validators.required);
120
- FormControl.setValidators(ValidationRole);
121
- FormControl.updateValueAndValidity();
122
- }
123
- AddRequiredValidation(FormControl, ValidationRole, Options) {
124
- Options.IsRequired = true;
125
- ValidationRole.push(Validators.required);
126
- FormControl.setValidators(ValidationRole);
127
- FormControl.updateValueAndValidity();
128
- }
129
- addRequiredToControl(FormControl, Options) {
130
- Options.IsRequired = true;
131
- FormControl.addValidators(Validators.required);
132
- FormControl.updateValueAndValidity();
133
- }
134
- removeRequiredFromControl(FormControl, Options) {
135
- Options.IsRequired = false;
136
- FormControl.removeValidators(Validators.required);
137
- FormControl.updateValueAndValidity();
138
- }
139
- RemoveCustomValidation(FormControl, ValidationRole, CustomValidation) {
140
- ValidationRole = ValidationRole.filter((e) => e != CustomValidation.functionBody);
141
- FormControl.setValidators(ValidationRole);
142
- FormControl.updateValueAndValidity();
143
- }
144
- AddCustomValidation(FormControl, ValidationRole, CustomValidation) {
145
- ValidationRole.push(CustomValidation.functionBody);
146
- FormControl.setValidators(ValidationRole);
147
- FormControl.updateValueAndValidity();
148
- }
149
- static getLocal() {
150
- let lang = localStorage.getItem('language');
151
- return lang == "ar" ? "ar" : "en-UK";
152
- }
153
- IsValid(FormControl) {
154
- FormControl.markAsTouched();
155
- }
156
- }
157
- ControlUtility.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility, deps: [{ token: i1.ErrorMassageValidation }, { token: i2.ControlValidationService }, { token: i2.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
158
- ControlUtility.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility, decorators: [{
160
- type: Injectable
161
- }], ctorParameters: function () { return [{ type: i1.ErrorMassageValidation }, { type: i2.ControlValidationService }, { type: i2.UtilityService }]; } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBR2hGLE9BQU8sRUFBK0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTS9DLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLFlBQW9DLEVBQVUsd0JBQWtELEVBQVUsY0FBOEI7UUFBeEksaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUU1SixDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBaUIsRUFBRSxnQkFBbUM7UUFDdkUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFFM0IsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLGVBQWUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDOUQsT0FBTyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUN2QztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssaUJBQWlCLEVBQUU7Z0JBQzVDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQ3pCO2lCQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7Z0JBQ3RDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQ3pCO2lCQUNJLElBQUksT0FBTyxDQUFDLEdBQUcs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SUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNqRixXQUFXLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxXQUE0QixFQUFFLGNBQXFCLEVBQUUsZ0JBQWtDO1FBQ3pHLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDbEQsV0FBVyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtJQUN0QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVE7UUFDYixJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUE0QjtRQUVsQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7NEdBdktVLGNBQWM7Z0hBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEhvc3QsIFNraXBTZWxmLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdGlvbiB9IGZyb20gJy4uL01vZGVscy9DdXN0b21WYWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFV0aWxpdHkge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgRXJyb3JIYW5kbGVyOiBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG5cclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvcnNpdGVtOiBhbnlbXSwgQ3VzdG9tVmFsaWRhdGlvbj86IEN1c3RvbVZhbGlkYXRpb24pOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdGUgPSAnJztcclxuICAgIEVycm9yc2l0ZW0uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LmtleSA9PT0gJ2N1c3RvbWVyRXJyb3InICYmIEVycm9yc2l0ZW0ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgcmVzdWx0ZSA9IEN1c3RvbVZhbGlkYXRpb25bMF0ubWFzc2FnZTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmtleSA9PT0gJ0VtYWlsVmFsaWRhdGlvbicpIHtcclxuICAgICAgICByZXN1bHRlID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmtleSA9PT0gJ0ZsdWVudEFwaScpIHtcclxuICAgICAgICByZXN1bHRlID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChlbGVtZW50LmtleSA9PT0gJ2Vycm9yTWFzc2FnZScpIHtcclxuICAgICAgICByZXN1bHRlID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHRlID0gdGhpcy5FcnJvckhhbmRsZXIuZ2V0RXJyb3JNYXNzYWdlVmFsaWRhdGlvbihlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdGU7XHJcbiAgfVxyXG5cclxuICBwYXR0ZXJuVmFsaWRhdG9yKHJlZ2V4OiBSZWdFeHAsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gcmVnZXgudGVzdChjb250cm9sLnZhbHVlKTtcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcbiAgcGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgUGF0Y2hGdW5jdGlvbiwgUGF0Y2hQYXRoKSB7XHJcbiAgICB2YXIgcGF0Y2hPcCA9IFt7XHJcbiAgICAgIG9wOiBcInJlcGxhY2VcIixcclxuICAgICAgcGF0aDogUGF0Y2hQYXRoLFxyXG4gICAgICB2YWx1ZTogb3JpZ2luYWxWYWx1ZVxyXG4gICAgfV1cclxuICAgIHZhciBwYXRjaFNlcnZpY2UgPSBQYXRjaEZ1bmN0aW9uLmNhbGwobnVsbCwgcGF0Y2hPcCkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcGF0Y2hTZXJ2aWNlLnN1YnNjcmliZShyID0+IGNvbnNvbGUubG9nKHIpLCBlcm9yciA9PiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShlcm9ycikpO1xyXG5cclxuICB9XHJcbiAgYXJhYmljVmFsaWRhdG9yKGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZS5tYXRjaCgnW1xcdTA2MDAtXFx1MDZGRl0nKSkge1xyXG4gICAgICAgIGlmIChjb250cm9sLnZhbHVlLm1hdGNoKCdbQS1aYS16XScpICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vRk9VTkQgRU5HTElTSCBDSEFSU1xyXG4gICAgICAgICAgdmFyIGxlbmd0aCA9IGNvbnRyb2wudmFsdWUucmVwbGFjZSgvXFxXL2csICcnKS5yZXBsYWNlKC9bMC05XS9nLCAnJykubGVuZ3RoO1xyXG4gICAgICAgICAgaWYgKGxlbmd0aCA+IDUwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIC8vTk8gRU5HTElTSCBDSEFSQUNURVJTIEFUIEFMTFxyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldElucHV0VHlwZSh0eXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElucHV0VHlwZVt0eXBlXSBhcyBzdHJpbmdcclxuICB9XHJcblxyXG5cclxuICB0cmltQ29udHJvbFZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IHdoaXRlc3BhY2U6IHN0cmluZyA9ICcgJztcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHZhbHVlLmVuZHNXaXRoKHdoaXRlc3BhY2UpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50cmltKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIGlucHV0RWxlbWVudC5zZWxlY3QoKTtcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICBpbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIGdyb3VwLCBvcHRpb25zKSB7XHJcbiAgICAvLyBpZigoIWdyb3VwLnZhbGlkKSYmKCFVdGlsaXR5U2VydmljZS5pc0NyZWF0ZWRCZWZvcikpXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIFV0aWxpdHlTZXJ2aWNlLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgLy8gICB0aGlzLnNjcm9sbFRvR2xvYmFsRXJyb3JNYXNzYWdlKClcclxuICAgIC8vIH1cclxuICAgIHJldHVybiB0aGlzLmdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QsIG9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0dsb2JhbEVycm9yTWFzc2FnZSgpIHtcclxuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9ySWQnKTtcclxuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgaW5saW5lOiBcIm5lYXJlc3RcIiB9KTtcclxuICB9XHJcbiAgc2V0QXR0cmlidXRlRm9yQ29udHJvbChvcHRpb25zKSB7XHJcbiAgICBpZiAob3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLk5hbWUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb3B0aW9ucy5BdHRyaWJ1dGVMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCBvcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLnZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoZm9ybUlkPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5zaG93R2xvYmFsRXJyb3IobnVsbCwgZm9ybUlkKTtcclxuICAgIHRoaXMuc2Nyb2xsVG9HbG9iYWxFcnJvck1hc3NhZ2UoKVxyXG4gIH1cclxuXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25Sb2xlOiBhbnlbXSwgT3B0aW9uczogYW55KSB7XHJcbiAgICBPcHRpb25zLklzUmVxdWlyZWQgPSBmYWxzZVxyXG4gICAgVmFsaWRhdGlvblJvbGUgPSBWYWxpZGF0aW9uUm9sZS5maWx0ZXIoKGUpID0+IGUgIT0gVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgIEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdGlvblJvbGUpO1xyXG4gICAgRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgfVxyXG5cclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24oRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvblJvbGU6IGFueVtdLCBPcHRpb25zOiBhbnkpIHtcclxuICAgIE9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgIFZhbGlkYXRpb25Sb2xlLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgIEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdGlvblJvbGUpO1xyXG4gICAgRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgfVxyXG5cclxuICBhZGRSZXF1aXJlZFRvQ29udHJvbChGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCBPcHRpb25zOiBhbnkpIHtcclxuICAgIE9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgIEZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICBGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcbiAgcmVtb3ZlUmVxdWlyZWRGcm9tQ29udHJvbChGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCBPcHRpb25zOiBhbnkpIHtcclxuICAgIE9wdGlvbnMuSXNSZXF1aXJlZCA9IGZhbHNlXHJcbiAgICBGb3JtQ29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbihGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uUm9sZTogYW55W10sIEN1c3RvbVZhbGlkYXRpb246IEN1c3RvbVZhbGlkYXRpb24pIHtcclxuICAgIFZhbGlkYXRpb25Sb2xlID0gVmFsaWRhdGlvblJvbGUuZmlsdGVyKChlKSA9PiBlICE9IEN1c3RvbVZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KVxyXG4gICAgRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0aW9uUm9sZSk7XHJcbiAgICBGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcblxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24oRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvblJvbGU6IGFueVtdLCBDdXN0b21WYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uKSB7XHJcbiAgICBWYWxpZGF0aW9uUm9sZS5wdXNoKEN1c3RvbVZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KVxyXG4gICAgRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0aW9uUm9sZSk7XHJcbiAgICBGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcbiAgc3RhdGljIGdldExvY2FsKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xyXG4gICAgcmV0dXJuIGxhbmcgPT0gXCJhclwiID8gXCJhclwiIDogXCJlbi1VS1wiO1xyXG4gIH1cclxuXHJcbiAgSXNWYWxpZChGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblxyXG4gICAgRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==