@bnsights/bbsf-controls 1.0.87 → 1.0.89
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.
- package/README.md +6 -2
- package/bnsights-bbsf-controls-1.0.89.tgz +0 -0
- package/bnsights-bbsf-controls.d.ts +1 -1
- package/bnsights-bbsf-controls.metadata.json +1 -0
- package/bundles/bnsights-bbsf-controls.umd.js +9454 -0
- package/bundles/bnsights-bbsf-controls.umd.js.map +1 -0
- package/esm2015/bnsights-bbsf-controls.js +6 -0
- package/esm2015/lib/Shared/Directives/template-name.directive.js +18 -0
- package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +20 -0
- package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +20 -0
- package/esm2015/lib/Shared/components/app-base-component.js +202 -0
- package/esm2015/lib/Shared/components/ng-tag-input.js +323 -0
- package/esm2015/lib/Shared/default_intl.js +29 -0
- package/esm2015/lib/Shared/services/ControlUtility.js +164 -0
- package/esm2015/lib/Shared/services/GlobalSettings.service.js +28 -0
- package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +22 -0
- package/esm2015/lib/Shared/services/render-component-service.service.js +30 -0
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +137 -0
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +249 -0
- package/esm2015/lib/controls/Calendar/Calendar.component.js +177 -0
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +115 -0
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +139 -0
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +221 -0
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +179 -0
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +451 -0
- package/esm2015/lib/controls/Form/Form.component.js +106 -0
- package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +223 -0
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +347 -0
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +325 -0
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +429 -0
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +430 -0
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +429 -0
- package/esm2015/lib/controls/Paging/JwPagination.component.js +129 -0
- package/esm2015/lib/controls/Paging/Paging.component.js +312 -0
- package/esm2015/lib/controls/Phone/Phone.component.js +124 -0
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +349 -0
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +108 -0
- package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +132 -0
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +117 -0
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +748 -0
- package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +19 -0
- package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +108 -0
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +269 -0
- package/esm2015/lib/controls/TextArea/TextArea.component.js +192 -0
- package/esm2015/lib/controls/TextBox/TextBox.component.js +263 -0
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +84 -0
- package/esm2015/lib/controls/bbsf-controls.module.js +239 -0
- package/esm2015/lib/controls/page-header-component/page-header-component.component.js +32 -0
- package/fesm2015/{bnsights-bbsf-controls.mjs → bnsights-bbsf-controls.js} +1511 -1630
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
- package/lib/Shared/Directives/template-name.directive.d.ts +0 -3
- package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +0 -3
- package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +0 -3
- package/lib/Shared/components/app-base-component.d.ts +1 -3
- package/lib/Shared/components/ng-tag-input.d.ts +0 -3
- package/lib/Shared/default_intl.d.ts +0 -3
- package/lib/Shared/services/ControlUtility.d.ts +0 -3
- package/lib/Shared/services/GlobalSettings.service.d.ts +0 -3
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +0 -3
- package/lib/Shared/services/render-component-service.service.d.ts +0 -3
- package/lib/Shared/services/validationErrorMassage.service.d.ts +0 -3
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +0 -3
- package/lib/controls/Calendar/Calendar.component.d.ts +5 -9
- package/lib/controls/CheckBox/CheckBox.component.d.ts +0 -3
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +0 -3
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +0 -3
- package/lib/controls/DropdownList/DropdownList.component.d.ts +0 -3
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +0 -3
- package/lib/controls/Form/Form.component.d.ts +0 -3
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +0 -3
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +0 -3
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +0 -3
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +0 -3
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +0 -3
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +0 -3
- package/lib/controls/Paging/JwPagination.component.d.ts +0 -3
- package/lib/controls/Paging/Paging.component.d.ts +0 -3
- package/lib/controls/Phone/Phone.component.d.ts +0 -3
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +0 -3
- package/lib/controls/RadioButton/RadioButton.component.d.ts +0 -3
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +0 -3
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +0 -3
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +0 -3
- package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +0 -3
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +0 -3
- package/lib/controls/TagsInput/TagsInput.component.d.ts +0 -3
- package/lib/controls/TextArea/TextArea.component.d.ts +0 -3
- package/lib/controls/TextBox/TextBox.component.d.ts +0 -3
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +0 -3
- package/lib/controls/bbsf-controls.module.d.ts +0 -74
- package/lib/controls/page-header-component/page-header-component.component.d.ts +0 -3
- package/package.json +15 -27
- package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
- package/esm2020/bnsights-bbsf-controls.mjs +0 -5
- package/esm2020/lib/Shared/Directives/template-name.directive.mjs +0 -18
- package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +0 -21
- package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +0 -21
- package/esm2020/lib/Shared/components/app-base-component.mjs +0 -198
- package/esm2020/lib/Shared/components/ng-tag-input.mjs +0 -336
- package/esm2020/lib/Shared/default_intl.mjs +0 -29
- package/esm2020/lib/Shared/services/ControlUtility.mjs +0 -162
- package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +0 -30
- package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
- package/esm2020/lib/Shared/services/render-component-service.service.mjs +0 -30
- package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -137
- package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -245
- package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -172
- package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -114
- package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +0 -136
- package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -217
- package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -179
- package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -453
- package/esm2020/lib/controls/Form/Form.component.mjs +0 -101
- package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -223
- package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +0 -350
- package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +0 -325
- package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +0 -427
- package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +0 -427
- package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -426
- package/esm2020/lib/controls/Paging/JwPagination.component.mjs +0 -156
- package/esm2020/lib/controls/Paging/Paging.component.mjs +0 -312
- package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -124
- package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -354
- package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -106
- package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +0 -132
- package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +0 -125
- package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +0 -750
- package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +0 -21
- package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +0 -108
- package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -268
- package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -192
- package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -266
- package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -84
- package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -401
- package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +0 -37
- package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-controls.mjs +0 -8938
- package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
- /package/{esm2020/lib/Shared/Enums/CalendarView.mjs → esm2015/lib/Shared/Enums/CalendarView.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/ControlLayout.mjs → esm2015/lib/Shared/Enums/ControlLayout.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/Countries.mjs → esm2015/lib/Shared/Enums/Countries.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/Enums.mjs → esm2015/lib/Shared/Enums/Enums.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/FileType.mjs → esm2015/lib/Shared/Enums/FileType.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/FilterType.mjs → esm2015/lib/Shared/Enums/FilterType.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/FontSize.mjs → esm2015/lib/Shared/Enums/FontSize.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/ForceDirection.mjs → esm2015/lib/Shared/Enums/ForceDirection.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/IconPosition.mjs → esm2015/lib/Shared/Enums/IconPosition.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/ImageType.mjs → esm2015/lib/Shared/Enums/ImageType.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/InputType.mjs → esm2015/lib/Shared/Enums/InputType.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/Insert.mjs → esm2015/lib/Shared/Enums/Insert.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/LanguageMode.mjs → esm2015/lib/Shared/Enums/LanguageMode.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/LanguageValidation.mjs → esm2015/lib/Shared/Enums/LanguageValidation.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/Misc.mjs → esm2015/lib/Shared/Enums/Misc.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/PagingActionMode.mjs → esm2015/lib/Shared/Enums/PagingActionMode.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/Para.mjs → esm2015/lib/Shared/Enums/Para.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/PickerType.mjs → esm2015/lib/Shared/Enums/PickerType.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/SelectMode.mjs → esm2015/lib/Shared/Enums/SelectMode.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/StartView.mjs → esm2015/lib/Shared/Enums/StartView.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/Style.mjs → esm2015/lib/Shared/Enums/Style.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs → esm2015/lib/Shared/Enums/StyleConfirmationMode.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/TagInputView.mjs → esm2015/lib/Shared/Enums/TagInputView.js} +0 -0
- /package/{esm2020/lib/Shared/Enums/menu-list-enum.mjs → esm2015/lib/Shared/Enums/menu-list-enum.js} +0 -0
- /package/{esm2020/lib/Shared/Models/Attribute.mjs → esm2015/lib/Shared/Models/Attribute.js} +0 -0
- /package/{esm2020/lib/Shared/Models/AutocompleteDTO.mjs → esm2015/lib/Shared/Models/AutocompleteDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/AutocompleteOptions.mjs → esm2015/lib/Shared/Models/AutocompleteOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/CalendarEventDTO.mjs → esm2015/lib/Shared/Models/CalendarEventDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/CalendarOptions.mjs → esm2015/lib/Shared/Models/CalendarOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/CancelDTO.mjs → esm2015/lib/Shared/Models/CancelDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/CaptchaStyle.mjs → esm2015/lib/Shared/Models/CaptchaStyle.js} +0 -0
- /package/{esm2020/lib/Shared/Models/CheckBoxOptions.mjs → esm2015/lib/Shared/Models/CheckBoxOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs → esm2015/lib/Shared/Models/ConfirmationModalOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/ControlOptionsBase.mjs → esm2015/lib/Shared/Models/ControlOptionsBase.js} +0 -0
- /package/{esm2020/lib/Shared/Models/CustomValidation.mjs → esm2015/lib/Shared/Models/CustomValidation.js} +0 -0
- /package/{esm2020/lib/Shared/Models/DropdownListItem.mjs → esm2015/lib/Shared/Models/DropdownListItem.js} +0 -0
- /package/{esm2020/lib/Shared/Models/DropdownOptions.mjs → esm2015/lib/Shared/Models/DropdownOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/EditPersonalImage.mjs → esm2015/lib/Shared/Models/EditPersonalImage.js} +0 -0
- /package/{esm2020/lib/Shared/Models/EnglishArabicDTO.mjs → esm2015/lib/Shared/Models/EnglishArabicDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/FileDTO.mjs → esm2015/lib/Shared/Models/FileDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/FileUploadModel.mjs → esm2015/lib/Shared/Models/FileUploadModel.js} +0 -0
- /package/{esm2020/lib/Shared/Models/FileUploadOptions.mjs → esm2015/lib/Shared/Models/FileUploadOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/FilterItem.mjs → esm2015/lib/Shared/Models/FilterItem.js} +0 -0
- /package/{esm2020/lib/Shared/Models/FormOptions.mjs → esm2015/lib/Shared/Models/FormOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/HtmlEditorOptions.mjs → esm2015/lib/Shared/Models/HtmlEditorOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/ImageUploadOptions.mjs → esm2015/lib/Shared/Models/ImageUploadOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs → esm2015/lib/Shared/Models/MapAutoCompleteOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs → esm2015/lib/Shared/Models/MapAutocompleteDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs → esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs → esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs → esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs → esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs → esm2015/lib/Shared/Models/MultipleFileUploadModel.js} +0 -0
- /package/{esm2020/lib/Shared/Models/PagingDTO.mjs → esm2015/lib/Shared/Models/PagingDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/PagingOptions.mjs → esm2015/lib/Shared/Models/PagingOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/PagingPayload.mjs → esm2015/lib/Shared/Models/PagingPayload.js} +0 -0
- /package/{esm2020/lib/Shared/Models/PhoneOptions.mjs → esm2015/lib/Shared/Models/PhoneOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs → esm2015/lib/Shared/Models/ProfileImageUploadOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/ProfilePictureDTO.mjs → esm2015/lib/Shared/Models/ProfilePictureDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/RadioButtonItem.mjs → esm2015/lib/Shared/Models/RadioButtonItem.js} +0 -0
- /package/{esm2020/lib/Shared/Models/RadioButtonOptions.mjs → esm2015/lib/Shared/Models/RadioButtonOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/RangeNumber.mjs → esm2015/lib/Shared/Models/RangeNumber.js} +0 -0
- /package/{esm2020/lib/Shared/Models/Recaptcha.mjs → esm2015/lib/Shared/Models/Recaptcha.js} +0 -0
- /package/{esm2020/lib/Shared/Models/RecaptchaOptions.mjs → esm2015/lib/Shared/Models/RecaptchaOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/RepeaterField.mjs → esm2015/lib/Shared/Models/RepeaterField.js} +0 -0
- /package/{esm2020/lib/Shared/Models/RepeaterOptions.mjs → esm2015/lib/Shared/Models/RepeaterOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/SaveDTO.mjs → esm2015/lib/Shared/Models/SaveDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/TagsInputDTO.mjs → esm2015/lib/Shared/Models/TagsInputDTO.js} +0 -0
- /package/{esm2020/lib/Shared/Models/TagsInputOptions.mjs → esm2015/lib/Shared/Models/TagsInputOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/TextAreaOptions.mjs → esm2015/lib/Shared/Models/TextAreaOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/TextBoxOptions.mjs → esm2015/lib/Shared/Models/TextBoxOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/ToggleslideOptions.mjs → esm2015/lib/Shared/Models/ToggleslideOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/UploadPersonalImage.mjs → esm2015/lib/Shared/Models/UploadPersonalImage.js} +0 -0
- /package/{esm2020/lib/Shared/Models/bread-crumb.mjs → esm2015/lib/Shared/Models/bread-crumb.js} +0 -0
- /package/{esm2020/lib/Shared/Models/control-filter-Item.mjs → esm2015/lib/Shared/Models/control-filter-Item.js} +0 -0
- /package/{esm2020/lib/Shared/Models/datePickerOptions.mjs → esm2015/lib/Shared/Models/datePickerOptions.js} +0 -0
- /package/{esm2020/lib/Shared/Models/filter-options.mjs → esm2015/lib/Shared/Models/filter-options.js} +0 -0
- /package/{esm2020/lib/Shared/Models/page-header-options.mjs → esm2015/lib/Shared/Models/page-header-options.js} +0 -0
- /package/{esm2020/lib/Shared/config/environment.mjs → esm2015/lib/Shared/config/environment.js} +0 -0
- /package/{esm2020/public-api.mjs → esm2015/public-api.js} +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ComponentFactoryResolver, Injectable } from "@angular/core";
|
|
2
|
+
export class RenderComponentService {
|
|
3
|
+
constructor(componentFactoryResolver) {
|
|
4
|
+
this.componentFactoryResolver = componentFactoryResolver;
|
|
5
|
+
}
|
|
6
|
+
renderDynamicComponent(viewContainerRef, component, group, options, size = 0) {
|
|
7
|
+
let factory = this.componentFactoryResolver.resolveComponentFactory(component);
|
|
8
|
+
const componentRef = viewContainerRef.createComponent(factory);
|
|
9
|
+
componentRef.instance.group = group;
|
|
10
|
+
componentRef.instance.options = options;
|
|
11
|
+
if (size > 0) {
|
|
12
|
+
let htmlElement = componentRef.hostView.rootNodes[0];
|
|
13
|
+
// `element` is the element you want to wrap
|
|
14
|
+
var parent = htmlElement.parentNode;
|
|
15
|
+
var wrapper = document.createElement('div');
|
|
16
|
+
wrapper.className = `col-md-${size}`;
|
|
17
|
+
// set the wrapper as child (instead of the element)
|
|
18
|
+
parent.replaceChild(wrapper, htmlElement);
|
|
19
|
+
// set element as child of wrapper
|
|
20
|
+
wrapper.appendChild(htmlElement);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
RenderComponentService.decorators = [
|
|
25
|
+
{ type: Injectable }
|
|
26
|
+
];
|
|
27
|
+
RenderComponentService.ctorParameters = () => [
|
|
28
|
+
{ type: ComponentFactoryResolver }
|
|
29
|
+
];
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWNvbXBvbmVudC1zZXJ2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL3NlcnZpY2VzL3JlbmRlci1jb21wb25lbnQtc2VydmljZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSx3QkFBd0IsRUFBbUIsVUFBVSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQU01SCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLFlBQXFCLHdCQUFrRDtRQUFsRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO0lBQ3ZFLENBQUM7SUFFRCxzQkFBc0IsQ0FBSSxnQkFBa0MsRUFBRSxTQUFjLEVBQUUsS0FBZ0IsRUFBRSxPQUFZLEVBQUUsT0FBZSxDQUFDO1FBQzVILElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBSSxTQUFTLENBQUMsQ0FBQTtRQUNqRixNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUksT0FBTyxDQUFRLENBQUM7UUFDekUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN4QyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDWixJQUFJLFdBQVcsR0FBSSxZQUFZLENBQUMsUUFBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFnQixDQUFDO1lBQzlGLDRDQUE0QztZQUM1QyxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BDLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxVQUFVLElBQUksRUFBRSxDQUFBO1lBQ3BDLG9EQUFvRDtZQUNwRCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztZQUMxQyxrQ0FBa0M7WUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNsQztJQUdILENBQUM7OztZQXhCRixVQUFVOzs7WUFMTyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW1iZWRkZWRWaWV3UmVmLCBJbmplY3RhYmxlLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5cclxuXHJcbiAgQEluamVjdGFibGUoKVxyXG4gIGV4cG9ydCBjbGFzcyBSZW5kZXJDb21wb25lbnRTZXJ2aWNlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciggcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikge1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmVuZGVyRHluYW1pY0NvbXBvbmVudDxUPih2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLCBjb21wb25lbnQ6IGFueSwgZ3JvdXA6IEZvcm1Hcm91cCwgb3B0aW9uczogYW55LCBzaXplOiBudW1iZXIgPSAwKSB7XHJcbiAgICAgIGxldCBmYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnk8VD4oY29tcG9uZW50KVxyXG4gICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxUPihmYWN0b3J5KSBhcyBhbnk7XHJcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ncm91cCA9IGdyb3VwO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgIGlmIChzaXplID4gMCkge1xyXG4gICAgICAgIGxldCBodG1sRWxlbWVudCA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAvLyBgZWxlbWVudGAgaXMgdGhlIGVsZW1lbnQgeW91IHdhbnQgdG8gd3JhcFxyXG4gICAgICAgIHZhciBwYXJlbnQgPSBodG1sRWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgICAgIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgd3JhcHBlci5jbGFzc05hbWUgPSBgY29sLW1kLSR7c2l6ZX1gXHJcbiAgICAgICAgLy8gc2V0IHRoZSB3cmFwcGVyIGFzIGNoaWxkIChpbnN0ZWFkIG9mIHRoZSBlbGVtZW50KVxyXG4gICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQod3JhcHBlciwgaHRtbEVsZW1lbnQpO1xyXG4gICAgICAgIC8vIHNldCBlbGVtZW50IGFzIGNoaWxkIG9mIHdyYXBwZXJcclxuICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKGh0bWxFbGVtZW50KTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { Http } from '@angular/http';
|
|
3
|
+
import { ControlContainer } from '@angular/forms';
|
|
4
|
+
import { UtilityService } from '@bnsights/bbsf-utilities';
|
|
5
|
+
export class ErrorMassageValidation {
|
|
6
|
+
// tslint:disable-next-line: deprecation
|
|
7
|
+
constructor(http, controlContainer, utilityService) {
|
|
8
|
+
this.http = http;
|
|
9
|
+
this.controlContainer = controlContainer;
|
|
10
|
+
this.utilityService = utilityService;
|
|
11
|
+
this.url = 'CheckEmailValidation';
|
|
12
|
+
ErrorMassageValidation.controlContainerstatic = this.controlContainer;
|
|
13
|
+
}
|
|
14
|
+
// tslint:disable-next-line: deprecation
|
|
15
|
+
static showerror(FormControlName) {
|
|
16
|
+
;
|
|
17
|
+
let form = ErrorMassageValidation.controlContainerstatic.control;
|
|
18
|
+
let control = form.get(FormControlName);
|
|
19
|
+
//console.log(control)
|
|
20
|
+
control.setErrors({ 'minlength': true });
|
|
21
|
+
control.markAsTouched();
|
|
22
|
+
}
|
|
23
|
+
// isEmailRegisterd(Email: string)
|
|
24
|
+
// {
|
|
25
|
+
// let resource:object={
|
|
26
|
+
// email:Email
|
|
27
|
+
// };
|
|
28
|
+
// let body = JSON.stringify(resource);
|
|
29
|
+
// let headers = new Headers({ 'Content-Type': 'application/json' });
|
|
30
|
+
// let options = new RequestOptions({ headers: headers });
|
|
31
|
+
// return this.http.post(environment.baseUrl+this.url,body,options)
|
|
32
|
+
// .pipe(map(response => response.json()))
|
|
33
|
+
// }
|
|
34
|
+
getErrorMassageValidation(error) {
|
|
35
|
+
;
|
|
36
|
+
let result = "";
|
|
37
|
+
switch (error.key) {
|
|
38
|
+
case "required":
|
|
39
|
+
result = this.utilityService.getResourceValue("RequiredValidationKey");
|
|
40
|
+
break;
|
|
41
|
+
case "email":
|
|
42
|
+
result = this.utilityService.getResourceValue("EmailValidationKey");
|
|
43
|
+
break;
|
|
44
|
+
case "EmailValidationKey":
|
|
45
|
+
result = this.utilityService.getResourceValue("EmailValidationKey");
|
|
46
|
+
break;
|
|
47
|
+
case "pattern":
|
|
48
|
+
result = this.utilityService.getResourceValue("NumberValidationKey");
|
|
49
|
+
break;
|
|
50
|
+
case "maxlength":
|
|
51
|
+
result = this.utilityService.getResourceValue("MaxLenghtValidationKey") + " " + error.value.requiredLength;
|
|
52
|
+
break;
|
|
53
|
+
case "minlength":
|
|
54
|
+
result = this.utilityService.getResourceValue("MinLenghtValidationKey") + " " + error.value.requiredLength;
|
|
55
|
+
break;
|
|
56
|
+
case "min":
|
|
57
|
+
result = this.utilityService.getResourceValue("MinValueValidationKey") + " " + error.value.min;
|
|
58
|
+
break;
|
|
59
|
+
case "max":
|
|
60
|
+
result = this.utilityService.getResourceValue("MaxValueValidationKey") + " " + error.value.max;
|
|
61
|
+
break;
|
|
62
|
+
case "IntegerNumberValidationKey":
|
|
63
|
+
result = this.utilityService.getResourceValue("IntegerNumberValidationKey");
|
|
64
|
+
break;
|
|
65
|
+
case "PositiveNumberValidationKey":
|
|
66
|
+
result = this.utilityService.getResourceValue("PositiveNumberValidationKey");
|
|
67
|
+
break;
|
|
68
|
+
case "validatePhoneNumber":
|
|
69
|
+
result = this.utilityService.getResourceValue("PhoneNumberValidationKey");
|
|
70
|
+
break;
|
|
71
|
+
case "mask":
|
|
72
|
+
result = this.utilityService.getResourceValue("MaskValidationKey") + " " + error.value.requiredMask;
|
|
73
|
+
break;
|
|
74
|
+
case "PasswordComplexityHasNumber":
|
|
75
|
+
result = this.utilityService.getResourceValue("PasswordComplexityHasNumber");
|
|
76
|
+
break;
|
|
77
|
+
case "ArabicLetterOnly":
|
|
78
|
+
result = this.utilityService.getResourceValue("ArabicLetterOnly");
|
|
79
|
+
break;
|
|
80
|
+
case "EnglishLetterOnly":
|
|
81
|
+
result = this.utilityService.getResourceValue("EnglishLetterOnly");
|
|
82
|
+
break;
|
|
83
|
+
case "ArabicIsRequiredAndOnly50CharactersEnglish":
|
|
84
|
+
result = this.utilityService.getResourceValue("ArabicIsRequiredAndOnly50CharactersEnglish");
|
|
85
|
+
break;
|
|
86
|
+
case "PasswordComplexityHasCapitalLetter":
|
|
87
|
+
result = this.utilityService.getResourceValue("PasswordComplexityHasCapitalLetter");
|
|
88
|
+
break;
|
|
89
|
+
case "PasswordComplexityHasSmallLetter":
|
|
90
|
+
result = this.utilityService.getResourceValue("PasswordComplexityHasSmallLetter");
|
|
91
|
+
break;
|
|
92
|
+
case "PasswordComplexityHasSpecialLetter":
|
|
93
|
+
result = this.utilityService.getResourceValue("PasswordComplexityHasSpecialLetter");
|
|
94
|
+
break;
|
|
95
|
+
case "MaxWordCountValidationKey":
|
|
96
|
+
result = this.utilityService.getResourceValue("MaxWordCountValidationKey") + " " + error.value;
|
|
97
|
+
break;
|
|
98
|
+
case "NewSelectionValidationKey":
|
|
99
|
+
result = this.utilityService.getResourceValue("NewSelectionValidationKey");
|
|
100
|
+
break;
|
|
101
|
+
case "MaxFileCountValidationKey":
|
|
102
|
+
result = this.utilityService.getResourceValue("MaxFileCountValidationKey") + " " + error.value;
|
|
103
|
+
break;
|
|
104
|
+
case "MinFileCountValidationKey":
|
|
105
|
+
result = this.utilityService.getResourceValue("MinFileCountValidationKey") + " " + error.value;
|
|
106
|
+
break;
|
|
107
|
+
case "MaxSizeForAllFilesInMB":
|
|
108
|
+
result = this.utilityService.getResourceValue("MaxSizeForAllFilesInMB") + " " + error.value;
|
|
109
|
+
break;
|
|
110
|
+
case "FileMaxSizeInMB":
|
|
111
|
+
result = this.utilityService.getResourceValue("FileMaxSizeInMB") + " " + error.value;
|
|
112
|
+
break;
|
|
113
|
+
case "ToolTipTypeError":
|
|
114
|
+
result = this.utilityService.getResourceValue("ToolTipTypeError") + " " + error.value;
|
|
115
|
+
break;
|
|
116
|
+
case "InvalidEndDate":
|
|
117
|
+
result = this.utilityService.getResourceValue("InvalidEndDate");
|
|
118
|
+
break;
|
|
119
|
+
case "InvalidStartDate":
|
|
120
|
+
result = this.utilityService.getResourceValue("InvalidStartDate");
|
|
121
|
+
break;
|
|
122
|
+
default:
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
ErrorMassageValidation.controlContainerstatic = null;
|
|
129
|
+
ErrorMassageValidation.decorators = [
|
|
130
|
+
{ type: Injectable }
|
|
131
|
+
];
|
|
132
|
+
ErrorMassageValidation.ctorParameters = () => [
|
|
133
|
+
{ type: Http },
|
|
134
|
+
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
135
|
+
{ type: UtilityService }
|
|
136
|
+
];
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBcUMsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLGdCQUFnQixFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkxRCxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLHdDQUF3QztJQUN4QyxZQUFvQixJQUFVLEVBQXNCLGdCQUFrQyxFQUFVLGNBQThCO1FBQTFHLFNBQUksR0FBSixJQUFJLENBQU07UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUk5SCxRQUFHLEdBQUcsc0JBQXNCLENBQUM7UUFGM0Isc0JBQXNCLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO0lBQ3ZFLENBQUM7SUFFRCx3Q0FBd0M7SUFJeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUF1QjtRQUN0QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQUcsc0JBQXNCLENBQUMsc0JBQXNCLENBQUMsT0FBb0IsQ0FBQztRQUM5RSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBZ0IsQ0FBQztRQUN2RCxzQkFBc0I7UUFDdEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxh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TUFBTTtZQUNSLEtBQUssd0JBQXdCO2dCQUMzQixNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUM1RixNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ3JGLE1BQU07WUFDUixLQUFLLGtCQUFrQjtnQkFDckIsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDdEYsTUFBTTtZQUNSLEtBQUssZ0JBQWdCO2dCQUNuQixNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNO1lBQ1IsS0FBSyxrQkFBa0I7Z0JBQ3JCLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2xFLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQTdITSw2Q0FBc0IsR0FBRyxJQUFJLENBQUM7O1lBSnRDLFVBQVU7OztZQUxGLElBQUk7WUFFSixnQkFBZ0IsdUJBVVUsUUFBUTtZQVRsQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cCwgUmVzcG9uc2UsIEhlYWRlcnMsIFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvaHR0cCc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5cclxuZXhwb3J0IGNsYXNzIEVycm9yTWFzc2FnZVZhbGlkYXRpb24ge1xyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcblxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZGVwcmVjYXRpb25cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHAsIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UpIHtcclxuXHJcbiAgICBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXJcclxuICB9XHJcbiAgdXJsID0gJ0NoZWNrRW1haWxWYWxpZGF0aW9uJztcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRlcHJlY2F0aW9uXHJcblxyXG5cclxuXHJcbiAgc3RhdGljIHNob3dlcnJvcihGb3JtQ29udHJvbE5hbWU6IHN0cmluZykge1xyXG4gICAgO1xyXG4gICAgbGV0IGZvcm0gPSBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLmNvbnRyb2xDb250YWluZXJzdGF0aWMuY29udHJvbCBhcyBGb3JtR3JvdXA7XHJcbiAgICBsZXQgY29udHJvbCA9IGZvcm0uZ2V0KEZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICAvL2NvbnNvbGUubG9nKGNvbnRyb2wpXHJcbiAgICBjb250cm9sLnNldEVycm9ycyh7ICdtaW5sZW5ndGgnOiB0cnVlIH0pO1xyXG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKClcclxuICB9XHJcblxyXG4gIC8vICBpc0VtYWlsUmVnaXN0ZXJkKEVtYWlsOiBzdHJpbmcpIFxyXG4gIC8vICB7XHJcbiAgLy8gICAgbGV0IHJlc291cmNlOm9iamVjdD17XHJcbiAgLy8gICAgICBlbWFpbDpFbWFpbFxyXG4gIC8vICAgIH07XHJcbiAgLy8gICAgbGV0IGJvZHkgPSBKU09OLnN0cmluZ2lmeShyZXNvdXJjZSk7XHJcbiAgLy8gICAgbGV0IGhlYWRlcnMgPSBuZXcgSGVhZGVycyh7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSk7XHJcbiAgLy8gICAgbGV0IG9wdGlvbnMgPSBuZXcgUmVxdWVzdE9wdGlvbnMoeyBoZWFkZXJzOiBoZWFkZXJzIH0pO1xyXG4gIC8vICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChlbnZpcm9ubWVudC5iYXNlVXJsK3RoaXMudXJsLGJvZHksb3B0aW9ucylcclxuICAvLyAgICAucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuanNvbigpKSlcclxuICAvLyAgfVxyXG5cclxuICBnZXRFcnJvck1hc3NhZ2VWYWxpZGF0aW9uKGVycm9yOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgO1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nID0gXCJcIlxyXG4gICAgc3dpdGNoIChlcnJvci5rZXkpIHtcclxuICAgICAgY2FzZSBcInJlcXVpcmVkXCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVxdWlyZWRWYWxpZGF0aW9uS2V5XCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFZhbGlkYXRpb25LZXlcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJFbWFpbFZhbGlkYXRpb25LZXlcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFZhbGlkYXRpb25LZXlcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJwYXR0ZXJuXCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTnVtYmVyVmFsaWRhdGlvbktleVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1heGxlbmd0aFwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1heExlbmdodFZhbGlkYXRpb25LZXlcIikgKyBcIiBcIiArIGVycm9yLnZhbHVlLnJlcXVpcmVkTGVuZ3RoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibWlubGVuZ3RoXCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWluTGVuZ2h0VmFsaWRhdGlvbktleVwiKSArIFwiIFwiICsgZXJyb3IudmFsdWUucmVxdWlyZWRMZW5ndGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaW5cIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNaW5WYWx1ZVZhbGlkYXRpb25LZXlcIikgKyBcIiBcIiArIGVycm9yLnZhbHVlLm1pbjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1heFwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1heFZhbHVlVmFsaWRhdGlvbktleVwiKSArIFwiIFwiICsgZXJyb3IudmFsdWUubWF4O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiSW50ZWdlck51bWJlclZhbGlkYXRpb25LZXlcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbnRlZ2VyTnVtYmVyVmFsaWRhdGlvbktleVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBvc2l0aXZlTnVtYmVyVmFsaWRhdGlvbktleVwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBvc2l0aXZlTnVtYmVyVmFsaWRhdGlvbktleVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInZhbGlkYXRlUGhvbmVOdW1iZXJcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQaG9uZU51bWJlclZhbGlkYXRpb25LZXlcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtYXNrXCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWFza1ZhbGlkYXRpb25LZXlcIikgKyBcIiBcIiArIGVycm9yLnZhbHVlLnJlcXVpcmVkTWFzaztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBhc3N3b3JkQ29tcGxleGl0eUhhc051bWJlclwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhc3N3b3JkQ29tcGxleGl0eUhhc051bWJlclwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkFyYWJpY0xldHRlck9ubHlcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBcmFiaWNMZXR0ZXJPbmx5XCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiRW5nbGlzaExldHRlck9ubHlcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmdsaXNoTGV0dGVyT25seVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkFyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaFwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFyYWJpY0lzUmVxdWlyZWRBbmRPbmx5NTBDaGFyYWN0ZXJzRW5nbGlzaFwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBhc3N3b3JkQ29tcGxleGl0eUhhc0NhcGl0YWxMZXR0ZXJcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZENvbXBsZXhpdHlIYXNDYXBpdGFsTGV0dGVyXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiUGFzc3dvcmRDb21wbGV4aXR5SGFzU21hbGxMZXR0ZXJcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZENvbXBsZXhpdHlIYXNTbWFsbExldHRlclwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIlBhc3N3b3JkQ29tcGxleGl0eUhhc1NwZWNpYWxMZXR0ZXJcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZENvbXBsZXhpdHlIYXNTcGVjaWFsTGV0dGVyXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiTWF4V29yZENvdW50VmFsaWRhdGlvbktleVwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk1heFdvcmRDb3VudFZhbGlkYXRpb25LZXlcIikgKyBcIiBcIiArIGVycm9yLnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleVwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXlcIik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJNYXhGaWxlQ291bnRWYWxpZGF0aW9uS2V5XCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4RmlsZUNvdW50VmFsaWRhdGlvbktleVwiKSArIFwiIFwiICsgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJNaW5GaWxlQ291bnRWYWxpZGF0aW9uS2V5XCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWluRmlsZUNvdW50VmFsaWRhdGlvbktleVwiKSArIFwiIFwiICsgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJNYXhTaXplRm9yQWxsRmlsZXNJbk1CXCI6XHJcbiAgICAgICAgcmVzdWx0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTWF4U2l6ZUZvckFsbEZpbGVzSW5NQlwiKSArIFwiIFwiICsgZXJyb3IudmFsdWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJGaWxlTWF4U2l6ZUluTUJcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJGaWxlTWF4U2l6ZUluTUJcIikgKyBcIiBcIiArIGVycm9yLnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiVG9vbFRpcFR5cGVFcnJvclwiOlxyXG4gICAgICAgIHJlc3VsdCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRvb2xUaXBUeXBlRXJyb3JcIikgKyBcIiBcIiArIGVycm9yLnZhbHVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiSW52YWxpZEVuZERhdGVcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbnZhbGlkRW5kRGF0ZVwiKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIkludmFsaWRTdGFydERhdGVcIjpcclxuICAgICAgICByZXN1bHQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJJbnZhbGlkU3RhcnREYXRlXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
|
|
3
|
+
import { FormControl, Validators, ControlContainer, FormGroupDirective } from '@angular/forms';
|
|
4
|
+
import { ErrorMassageValidation } from '../../Shared/services/validationErrorMassage.service';
|
|
5
|
+
import { ControlUtility } from '../../Shared/services/ControlUtility';
|
|
6
|
+
import { AutocompleteDTO } from '../../Shared/Models/AutocompleteDTO';
|
|
7
|
+
import { noop, Observable, of } from 'rxjs';
|
|
8
|
+
import { map, switchMap, tap } from 'rxjs/operators';
|
|
9
|
+
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
10
|
+
import { ControlValidationService, RequestHandlerService, RequestOptionsModel, UtilityService } from '@bnsights/bbsf-utilities';
|
|
11
|
+
import { GlobalSettings } from '../../Shared/services/GlobalSettings.service';
|
|
12
|
+
export class AutocompleteTextBoxComponent {
|
|
13
|
+
// tslint:disable-next-line: max-line-length
|
|
14
|
+
constructor(http, ErrorHandler, requestHandlerService, controlUtility, controlContainer, AutocompleteTextBoxControlHost, UtilityService, controlValidationService, globalSettings) {
|
|
15
|
+
this.http = http;
|
|
16
|
+
this.ErrorHandler = ErrorHandler;
|
|
17
|
+
this.requestHandlerService = requestHandlerService;
|
|
18
|
+
this.controlUtility = controlUtility;
|
|
19
|
+
this.controlContainer = controlContainer;
|
|
20
|
+
this.AutocompleteTextBoxControlHost = AutocompleteTextBoxControlHost;
|
|
21
|
+
this.UtilityService = UtilityService;
|
|
22
|
+
this.controlValidationService = controlValidationService;
|
|
23
|
+
this.globalSettings = globalSettings;
|
|
24
|
+
this.OnChange = new EventEmitter();
|
|
25
|
+
this.keyword = 'value';
|
|
26
|
+
this.Search = '';
|
|
27
|
+
this.Key = '';
|
|
28
|
+
this.Api = 'http';
|
|
29
|
+
this.Value = 'value';
|
|
30
|
+
this.NewSelectionValidationKey = '';
|
|
31
|
+
this.markAllAsTouched = false;
|
|
32
|
+
this.validationRules = [];
|
|
33
|
+
this.validationRulesasync = [];
|
|
34
|
+
this.dataList = [];
|
|
35
|
+
this.SelectedValue = "";
|
|
36
|
+
this.avatarImage = "./src/assets/images/userimg.png";
|
|
37
|
+
this.resetError = () => {
|
|
38
|
+
this.controlValidationService.RemoveGlobalError();
|
|
39
|
+
};
|
|
40
|
+
// onFocused(e) {
|
|
41
|
+
// // do something
|
|
42
|
+
// }
|
|
43
|
+
// onBlur(Value) {
|
|
44
|
+
// if (this.options.AllowNewSelection == true) {
|
|
45
|
+
// if (typeof (Value) == 'object') {
|
|
46
|
+
// this.AutocompleteTextBoxControl.setValue(Value);
|
|
47
|
+
// this.AutocompleteTextBoxControl.updateValueAndValidity()
|
|
48
|
+
// }
|
|
49
|
+
// else {
|
|
50
|
+
// let AutocompleteModel = new AutocompleteDTO();
|
|
51
|
+
// AutocompleteModel.value = Value;
|
|
52
|
+
// let model = new TypeaheadMatch(AutocompleteModel,Value);
|
|
53
|
+
// this.AutocompleteTextBoxControl.setValue(model);
|
|
54
|
+
// this.AutocompleteTextBoxControl.updateValueAndValidity()
|
|
55
|
+
// }
|
|
56
|
+
// }
|
|
57
|
+
// else {
|
|
58
|
+
// if (this.AutocompleteTextBoxControl.value == Value) {
|
|
59
|
+
// this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });
|
|
60
|
+
// this.AutocompleteTextBoxControl.markAsTouched();
|
|
61
|
+
// this.AutocompleteTextBoxControl.invalid;
|
|
62
|
+
// return;
|
|
63
|
+
// }
|
|
64
|
+
// }
|
|
65
|
+
// }
|
|
66
|
+
// handleResultSelected(result) {
|
|
67
|
+
// this.AutocompleteTextBoxControl.setValue(result);
|
|
68
|
+
// this.AutocompleteTextBoxControl.updateValueAndValidity()
|
|
69
|
+
// this.OnChange.emit(this.AutocompleteTextBoxControl.value)
|
|
70
|
+
// this.Search = this.AutocompleteTextBoxControl.value.value
|
|
71
|
+
// }
|
|
72
|
+
//External Method
|
|
73
|
+
this.RemoveRequiredValidation = () => {
|
|
74
|
+
this.controlUtility.RemoveRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options);
|
|
75
|
+
};
|
|
76
|
+
//External Method
|
|
77
|
+
this.AddRequiredValidation = () => {
|
|
78
|
+
this.controlUtility.AddRequiredValidation(this.AutocompleteTextBoxControl, this.validationRules, this.options);
|
|
79
|
+
};
|
|
80
|
+
//External Method
|
|
81
|
+
this.RemoveCustomValidation = (CustomValidation) => {
|
|
82
|
+
this.controlUtility.RemoveCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation);
|
|
83
|
+
};
|
|
84
|
+
//External Method
|
|
85
|
+
this.AddCustomValidation = (CustomValidation) => {
|
|
86
|
+
this.controlUtility.AddCustomValidation(this.AutocompleteTextBoxControl, this.validationRules, CustomValidation);
|
|
87
|
+
};
|
|
88
|
+
//External Method
|
|
89
|
+
this.IsValid = () => {
|
|
90
|
+
this.controlUtility.IsValid(this.AutocompleteTextBoxControl);
|
|
91
|
+
};
|
|
92
|
+
AutocompleteTextBoxComponent.controlContainerstatic = this.controlContainer;
|
|
93
|
+
}
|
|
94
|
+
ngOnInit() {
|
|
95
|
+
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
96
|
+
this.controlValidationService.isCreatedBefor = false;
|
|
97
|
+
this.group.addControl(this.options.Name, new FormControl(''));
|
|
98
|
+
this.AutocompleteTextBoxControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
99
|
+
if (!this.options.ViewType)
|
|
100
|
+
this.options.ViewType = this.globalSettings.ViewType;
|
|
101
|
+
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
102
|
+
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
103
|
+
// this.AutocompleteTextBoxControl.setValue(this.options.Value);
|
|
104
|
+
if (this.options.CustomValidation.length > 0) {
|
|
105
|
+
let Validations = this.options.CustomValidation;
|
|
106
|
+
for (let index = 0; index < Validations.length; index++) {
|
|
107
|
+
const Validation = Validations[index];
|
|
108
|
+
this.validationRules.push(Validation.functionBody);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (this.options.IsRequired) {
|
|
112
|
+
this.validationRules.push(Validators.required);
|
|
113
|
+
}
|
|
114
|
+
this.AutocompleteTextBoxControl.setValidators(this.validationRules);
|
|
115
|
+
this.AutocompleteTextBoxControl.setAsyncValidators(this.validationRulesasync);
|
|
116
|
+
if (this.options.IsDisabled) {
|
|
117
|
+
this.AutocompleteTextBoxControl.disable();
|
|
118
|
+
}
|
|
119
|
+
if (this.options.SelectedValue != undefined && this.options.SelectedValue != null) {
|
|
120
|
+
this.SelectedValue = this.options.SelectedValue;
|
|
121
|
+
}
|
|
122
|
+
this.AutocompleteTextBoxControlHost.ngSubmit.subscribe((value) => {
|
|
123
|
+
if (this.AutocompleteTextBoxControl.value == this.Search && this.options.AllowNewSelection == false) {
|
|
124
|
+
this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });
|
|
125
|
+
this.AutocompleteTextBoxControl.markAsTouched();
|
|
126
|
+
this.AutocompleteTextBoxControl.invalid;
|
|
127
|
+
}
|
|
128
|
+
this.group.markAllAsTouched();
|
|
129
|
+
this.markAllAsTouched = true;
|
|
130
|
+
});
|
|
131
|
+
const httpOptions = {
|
|
132
|
+
headers: new HttpHeaders({
|
|
133
|
+
'Content-Type': 'application/json',
|
|
134
|
+
'Authorization': this.options.ValidationToken
|
|
135
|
+
}),
|
|
136
|
+
};
|
|
137
|
+
this.suggestions$ = new Observable((observer) => {
|
|
138
|
+
observer.next(this.Search);
|
|
139
|
+
}).pipe(switchMap((query) => {
|
|
140
|
+
if (query) {
|
|
141
|
+
let params = new HttpParams();
|
|
142
|
+
params = params.append(this.options.QueryParam, query);
|
|
143
|
+
let requestOptionsModel = new RequestOptionsModel();
|
|
144
|
+
requestOptionsModel.disableBlockUI = true;
|
|
145
|
+
requestOptionsModel.disableSuccessNotification = true;
|
|
146
|
+
// using github public api to get users by name
|
|
147
|
+
return this.requestHandlerService.get(this.options.ActionURL, params, null, requestOptionsModel)
|
|
148
|
+
.pipe(map((data) => data || []), tap(() => noop, err => {
|
|
149
|
+
// in case of http error
|
|
150
|
+
this.errorMessage = err && err.message || 'Something goes wrong';
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
return of([]);
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
ngAfterViewInit() {
|
|
157
|
+
this.controlUtility.setAttributeForControl(this.options);
|
|
158
|
+
}
|
|
159
|
+
showGlobalError() {
|
|
160
|
+
this.controlUtility.showGlobalError();
|
|
161
|
+
}
|
|
162
|
+
getErrorValidation(ErrorList) {
|
|
163
|
+
if (this.markAllAsTouched && this.group.invalid) {
|
|
164
|
+
this.showGlobalError();
|
|
165
|
+
this.markAllAsTouched = false;
|
|
166
|
+
}
|
|
167
|
+
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
168
|
+
}
|
|
169
|
+
copyInputMessage(inputElement) {
|
|
170
|
+
this.controlUtility.CopyInputMessage(inputElement);
|
|
171
|
+
}
|
|
172
|
+
selectEvent(item) {
|
|
173
|
+
if (this.options.AllowNewSelection == true) {
|
|
174
|
+
if (typeof (item) == 'object') {
|
|
175
|
+
this.AutocompleteTextBoxControl.setValue(item);
|
|
176
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
let AutocompleteModel = new AutocompleteDTO();
|
|
180
|
+
AutocompleteModel.value = item;
|
|
181
|
+
this.AutocompleteTextBoxControl.setValue(AutocompleteModel);
|
|
182
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
if (this.AutocompleteTextBoxControl.value == item.value) {
|
|
187
|
+
this.AutocompleteTextBoxControl.setErrors({ NewSelectionValidationKey: this.NewSelectionValidationKey });
|
|
188
|
+
this.AutocompleteTextBoxControl.markAsTouched();
|
|
189
|
+
this.AutocompleteTextBoxControl.invalid;
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
this.AutocompleteTextBoxControl.setValue(item);
|
|
194
|
+
this.AutocompleteTextBoxControl.updateValueAndValidity();
|
|
195
|
+
let originalValue = this.AutocompleteTextBoxControl.value;
|
|
196
|
+
if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
|
|
197
|
+
this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
|
|
198
|
+
}
|
|
199
|
+
this.OnChange.emit(this.AutocompleteTextBoxControl.value);
|
|
200
|
+
//Use this line to enable two way binding.
|
|
201
|
+
this.options.Value = this.AutocompleteTextBoxControl.value;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
onChangeSearch(search) {
|
|
206
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
+
this.Search = search;
|
|
208
|
+
this.SelectedValue = "";
|
|
209
|
+
yield this.suggestions$.subscribe((result) => {
|
|
210
|
+
if ((result == null || result.length == 0 || result.length == 0) && this.options.AllowNewSelection == true) {
|
|
211
|
+
this.dataList = [
|
|
212
|
+
{
|
|
213
|
+
key: 0,
|
|
214
|
+
value: this.Search
|
|
215
|
+
}
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this.dataList = result;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
AutocompleteTextBoxComponent.controlContainerstatic = null;
|
|
226
|
+
AutocompleteTextBoxComponent.decorators = [
|
|
227
|
+
{ type: Component, args: [{
|
|
228
|
+
// tslint:disable-next-line: component-selector
|
|
229
|
+
selector: 'BBSF-AutocompleteTextBox',
|
|
230
|
+
template: "\r\n<div class=\"form-group bbsf-control bbsf-autocomplete-textbox\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.ViewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <!--Input container-->\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\"\r\n aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete class=\"form-control {{options.ExtraClasses}}\" *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [dir]=\"textDir\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n </div>\r\n </div>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty)\"> {{resetError()}} </div>\r\n</div>\r\n\r\n"
|
|
231
|
+
},] }
|
|
232
|
+
];
|
|
233
|
+
AutocompleteTextBoxComponent.ctorParameters = () => [
|
|
234
|
+
{ type: HttpClient },
|
|
235
|
+
{ type: ErrorMassageValidation },
|
|
236
|
+
{ type: RequestHandlerService },
|
|
237
|
+
{ type: ControlUtility },
|
|
238
|
+
{ type: ControlContainer, decorators: [{ type: Optional }] },
|
|
239
|
+
{ type: FormGroupDirective },
|
|
240
|
+
{ type: UtilityService },
|
|
241
|
+
{ type: ControlValidationService },
|
|
242
|
+
{ type: GlobalSettings }
|
|
243
|
+
];
|
|
244
|
+
AutocompleteTextBoxComponent.propDecorators = {
|
|
245
|
+
group: [{ type: Input }],
|
|
246
|
+
options: [{ type: Input }],
|
|
247
|
+
OnChange: [{ type: Output }]
|
|
248
|
+
};
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b2NvbXBsZXRlVGV4dEJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvQXV0b2NvbXBsZXRlVGV4dEJveC9BdXRvY29tcGxldGVUZXh0Qm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVcsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQThCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFKLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQVksRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFPOUUsTUFBTSxPQUFPLDRCQUE0QjtJQUl2Qyw0Q0FBNEM7SUFDNUMsWUFBb0IsSUFBZ0IsRUFBVSxZQUFvQyxFQUFTLHFCQUEyQyxFQUM1SCxjQUE4QixFQUFzQixnQkFDMUMsRUFBUyw4QkFBa0QsRUFBUyxjQUE4QixFQUM1Ryx3QkFBa0QsRUFBVSxjQUE4QjtRQUhoRixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQVMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUM1SCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUMxRDtRQUFTLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDNUcsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUsxRixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxZQUFPLEdBQVcsT0FBTyxDQUFBO1FBRXpCLFdBQU0sR0FBVyxFQUFFLENBQUE7UUFDbkIsUUFBRyxHQUFXLEVBQUUsQ0FBQTtRQUVoQixRQUFHLEdBQVcsTUFBTSxDQUFDO1FBQ3JCLFVBQUssR0FBVyxPQUFPLENBQUE7UUFDdkIsOEJBQXlCLEdBQVcsRUFBRSxDQUFDO1FBQ3ZDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQix5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFJMUIsYUFBUSxHQUFPLEVBQUUsQ0FBQztRQUNsQixrQkFBYSxHQUFRLEVBQUUsQ0FBQTtRQUN2QixnQkFBVyxHQUFZLGlDQUFpQyxDQUFDO1FBNkZ6RCxlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQTtRQStFRCxpQkFBaUI7UUFDakIsb0JBQW9CO1FBQ3BCLElBQUk7UUFHSixrQkFBa0I7UUFDbEIsa0RBQWtEO1FBRWxELHdDQUF3QztRQUN4Qyx5REFBeUQ7UUFDekQsaUVBQWlFO1FBRWpFLFFBQVE7UUFDUixhQUFhO1FBQ2IsdURBQXVEO1FBQ3ZELHlDQUF5QztRQUN6QyxpRUFBaUU7UUFDakUseURBQXlEO1FBQ3pELGlFQUFpRTtRQUVqRSxRQUFRO1FBQ1IsT0FBTztRQUVQLFdBQVc7UUFFWCw0REFBNEQ7UUFDNUQsa0hBQWtIO1FBQ2xILHlEQUF5RDtRQUN6RCxpREFBaUQ7UUFDakQsZ0JBQWdCO1FBQ2hCLFFBQVE7UUFDUixNQUFNO1FBQ04sS0FBSztRQUdMLGlDQUFpQztRQUVqQyxzREFBc0Q7UUFDdEQsNkRBQTZEO1FBQzdELDhEQUE4RDtRQUM5RCw4REFBOEQ7UUFJOUQsSUFBSTtRQUVKLGlCQUFpQjtRQUNqQiw2QkFBd0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbkgsQ0FBQyxDQUFBO1FBQ0QsaUJBQWlCO1FBQ2pCLDBCQUFxQixHQUFHLEdBQUcsRUFBRTtZQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNoSCxDQUFDLENBQUE7UUFFRCxpQkFBaUI7UUFDakIsMkJBQXNCLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNySCxDQUFDLENBQUE7UUFDRCxpQkFBaUI7UUFDakIsd0JBQW1CLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtRQUNsSCxDQUFDLENBQUE7UUFDRCxpQkFBaUI7UUFDakIsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1FBQzlELENBQUMsQ0FBQTtRQXJRQyw0QkFBNEIsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDOUUsQ0FBQztJQXNCRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFBLEtBQUssQ0FBQSxDQUFDLENBQUEsS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFBO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7UUFFbEgsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUV2RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzlELElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV4RixnRUFBZ0U7UUFHaEUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQTtZQUMvQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDcEQ7U0FFRjtRQUlELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDM0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzNDO1FBR0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ2pGLElBQUksQ0FBQyxhQUFhLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDL0M7UUFHRCxJQUFJLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9ELElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUUsS0FBSyxFQUFFO2dCQUMvRixJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQztnQkFDekcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDO2FBQzNDO1lBQ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLFdBQVcsR0FBRztZQUNsQixPQUFPLEVBQUUsSUFBSSxXQUFXLENBQUM7Z0JBQ3ZCLGNBQWMsRUFBRyxrQkFBa0I7Z0JBQ25DLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7YUFDOUMsQ0FBQztTQUNILENBQUM7UUFLRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsUUFBMEIsRUFBRSxFQUFFO1lBQ2hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDTCxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRTtZQUMxQixJQUFJLEtBQUssRUFBRTtnQkFDVCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRyxLQUFLLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxtQkFBbUIsR0FBRSxJQUFJLG1CQUFtQixFQUFFLENBQUE7Z0JBQ2xELG1CQUFtQixDQUFDLGNBQWMsR0FBQyxJQUFJLENBQUM7Z0JBQ3hDLG1CQUFtQixDQUFDLDBCQUEwQixHQUFDLElBQUksQ0FBQztnQkFDcEQsK0NBQStDO2dCQUMvQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBQyxtQkFBbUIsQ0FBQztxQkFDNUYsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBbUIsSUFBSSxFQUFFLENBQUMsRUFDeEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDcEIsd0JBQXdCO29CQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLHNCQUFzQixDQUFDO2dCQUNuRSxDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7WUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUdELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMxRCxDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDdkMsQ0FBQztJQUdELGtCQUFrQixDQUFDLFNBQVM7UUFFMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7U0FDOUI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxZQUFZO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUdELFdBQVcsQ0FBQyxJQUFJO1FBRWQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLElBQUksRUFBRTtZQUMxQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLEVBQUU7Z0JBQzdCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO2FBRXpEO2lCQUNJO2dCQUNILElBQUksaUJBQWlCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDOUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTthQUN6RDtTQUVGO2FBQ0k7WUFFSCxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDdkQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7Z0JBQ3pHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQztnQkFDeEMsT0FBTzthQUNSO2lCQUNHO2dCQUNGLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO2dCQUN4RCxJQUFJLGFBQWEsR0FBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDO2dCQUN6RCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUNuRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO2lCQUN4RztnQkFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3hELDBDQUEwQztnQkFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQzthQUM1RDtTQUNGO0lBQ0gsQ0FBQztJQUVLLGNBQWMsQ0FBQyxNQUFjOztZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFDLE1BQU0sQ0FBQztZQUNuQixJQUFJLENBQUMsYUFBYSxHQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFDLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxNQUFNLElBQUUsSUFBSSxJQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUUsQ0FBQyxJQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLElBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBRSxJQUFJLEVBQUU7b0JBQzVGLElBQUksQ0FBQyxRQUFRLEdBQUc7d0JBQ2Q7NEJBQ0UsR0FBRyxFQUFDLENBQUM7NEJBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO3lCQUNuQjtxQkFDRixDQUFBO2lCQUNGO3FCQUVEO29CQUNFLElBQUksQ0FBQyxRQUFRLEdBQUMsTUFBTSxDQUFBO2lCQUNyQjtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztLQUFBOztBQXZNTSxtREFBc0IsR0FBRyxJQUFJLENBQUM7O1lBUnRDLFNBQVMsU0FBQztnQkFDVCwrQ0FBK0M7Z0JBQy9DLFFBQVEsRUFBRSwwQkFBMEI7Z0JBQ3BDLHM0RkFBbUQ7YUFDcEQ7OztZQVJRLFVBQVU7WUFOVixzQkFBc0I7WUFPSSxxQkFBcUI7WUFOL0MsY0FBYztZQUZ1QyxnQkFBZ0IsdUJBc0JqQyxRQUFRO1lBdEIyQixrQkFBa0I7WUFRbkIsY0FBYztZQUFwRix3QkFBd0I7WUFDeEIsY0FBYzs7O29CQWtCcEIsS0FBSztzQkFDTCxLQUFLO3VCQUNMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzLCBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy92YWxpZGF0aW9uRXJyb3JNYXNzYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250cm9sVXRpbGl0eSB9IGZyb20gJy4uLy4uL1NoYXJlZC9zZXJ2aWNlcy9Db250cm9sVXRpbGl0eSc7XHJcbmltcG9ydCB7IEF1dG9jb21wbGV0ZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0F1dG9jb21wbGV0ZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBBdXRvY29tcGxldGVEVE8gfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0F1dG9jb21wbGV0ZURUTyc7XHJcbmltcG9ydCB7IG5vb3AsIE9ic2VydmFibGUsIE9ic2VydmVyLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UsIFJlcXVlc3RPcHRpb25zTW9kZWwsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgR2xvYmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvR2xvYmFsU2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGNvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnQkJTRi1BdXRvY29tcGxldGVUZXh0Qm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vQXV0b2NvbXBsZXRlVGV4dEJveC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRleHRCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHJcbiAgc3RhdGljIGNvbnRyb2xDb250YWluZXJzdGF0aWMgPSBudWxsO1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbixwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTpSZXF1ZXN0SGFuZGxlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOlxyXG4gICAgICBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2xIb3N0OiBGb3JtR3JvdXBEaXJlY3RpdmUscHJpdmF0ZSBVdGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIGdsb2JhbFNldHRpbmdzOiBHbG9iYWxTZXR0aW5ncykge1xyXG4gICAgQXV0b2NvbXBsZXRlVGV4dEJveENvbXBvbmVudC5jb250cm9sQ29udGFpbmVyc3RhdGljID0gdGhpcy5jb250cm9sQ29udGFpbmVyO1xyXG4gIH1cclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IEF1dG9jb21wbGV0ZU9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGtleXdvcmQ6IHN0cmluZyA9ICd2YWx1ZSdcclxuICBBdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbDogQWJzdHJhY3RDb250cm9sO1xyXG4gIFNlYXJjaDogc3RyaW5nID0gJydcclxuICBLZXk6IHN0cmluZyA9ICcnXHJcbiBcclxuICBBcGk6IHN0cmluZyA9ICdodHRwJztcclxuICBWYWx1ZTogc3RyaW5nID0gJ3ZhbHVlJ1xyXG4gIE5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXk6IHN0cmluZyA9ICcnO1xyXG4gIG1hcmtBbGxBc1RvdWNoZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2YWxpZGF0aW9uUnVsZXMgPSBbXTtcclxuICB2YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gIGRhdGFTb3VyY2U6IE9ic2VydmFibGU8YW55PjtcclxuICBzdWdnZXN0aW9ucyQ6IE9ic2VydmFibGU8YW55W10+O1xyXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nO1xyXG4gIGRhdGFMaXN0OmFueVtdPVtdO1xyXG4gIFNlbGVjdGVkVmFsdWU6c3RyaW5nPVwiXCJcclxuICBhdmF0YXJJbWFnZTogc3RyaW5nID0gIFwiLi9zcmMvYXNzZXRzL2ltYWdlcy91c2VyaW1nLnBuZ1wiO1xyXG4gIHRleHREaXI7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRleHREaXI9dGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidsdHInO1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMub3B0aW9ucy5OYW1lXTsgLy8gIG5ldyBGb3JtQ29udHJvbCgnJyx2YWxpZGF0aW9uUnVsZXMpO1xyXG5cclxuICAgIGlmICghdGhpcy5vcHRpb25zLlZpZXdUeXBlKVxyXG4gICAgICB0aGlzLm9wdGlvbnMuVmlld1R5cGUgPSB0aGlzLmdsb2JhbFNldHRpbmdzLlZpZXdUeXBlO1xyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMuTGFiZWxLZXkgIT0gXCJcIilcclxuICAgICAgdGhpcy5vcHRpb25zLkxhYmVsVmFsdWUgPSB0aGlzLlV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkxhYmVsS2V5KTtcclxuXHJcbiAgICAvLyB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBWYWxpZGF0aW9ucyA9IHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBWYWxpZGF0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBWYWxpZGF0aW9uID0gVmFsaWRhdGlvbnNbaW5kZXhdO1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdGlvbi5mdW5jdGlvbkJvZHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXMpO1xyXG4gICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9XHJcblxyXG4gIFxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5TZWxlY3RlZFZhbHVlICE9IHVuZGVmaW5lZCAmJiB0aGlzLm9wdGlvbnMuU2VsZWN0ZWRWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRWYWx1ZT10aGlzLm9wdGlvbnMuU2VsZWN0ZWRWYWx1ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC52YWx1ZSA9PSB0aGlzLlNlYXJjaCYmdGhpcy5vcHRpb25zLkFsbG93TmV3U2VsZWN0aW9uPT1mYWxzZSkge1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0RXJyb3JzKHsgTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleTogdGhpcy5OZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5IH0pO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuaW52YWxpZDtcclxuICAgIH1cclxuICAgICAgdGhpcy5ncm91cC5tYXJrQWxsQXNUb3VjaGVkKClcclxuICAgICAgdGhpcy5tYXJrQWxsQXNUb3VjaGVkID0gdHJ1ZVxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnQXV0aG9yaXphdGlvbic6IHRoaXMub3B0aW9ucy5WYWxpZGF0aW9uVG9rZW5cclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICBcclxuICBcclxuICAgXHJcbiAgICBcclxuICAgIHRoaXMuc3VnZ2VzdGlvbnMkID0gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyOiBPYnNlcnZlcjxzdHJpbmc+KSA9PiB7XHJcbiAgICAgIG9ic2VydmVyLm5leHQodGhpcy5TZWFyY2gpO1xyXG4gICAgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChxdWVyeTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQodGhpcy5vcHRpb25zLlF1ZXJ5UGFyYW0sICBxdWVyeSk7XHJcbiAgICAgICAgICBsZXQgcmVxdWVzdE9wdGlvbnNNb2RlbD0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKVxyXG4gICAgICAgICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlQmxvY2tVST10cnVlO1xyXG4gICAgICAgICAgcmVxdWVzdE9wdGlvbnNNb2RlbC5kaXNhYmxlU3VjY2Vzc05vdGlmaWNhdGlvbj10cnVlO1xyXG4gICAgICAgICAgLy8gdXNpbmcgZ2l0aHViIHB1YmxpYyBhcGkgdG8gZ2V0IHVzZXJzIGJ5IG5hbWVcclxuICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5nZXQodGhpcy5vcHRpb25zLkFjdGlvblVSTCxwYXJhbXMsbnVsbCxyZXF1ZXN0T3B0aW9uc01vZGVsKVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4gZGF0YSBhcyBBdHRyaWJ1dGVbXSB8fCBbXSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiBub29wLCBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgaHR0cCBlcnJvclxyXG4gICAgICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyICYmIGVyci5tZXNzYWdlIHx8ICdTb21ldGhpbmcgZ29lcyB3cm9uZyc7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuIFxyXG4gICAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuc2V0QXR0cmlidXRlRm9yQ29udHJvbCh0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5SZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0dsb2JhbEVycm9yKCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zaG93R2xvYmFsRXJyb3IoKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QpIHtcclxuXHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFV0aWxpdHkuZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIHRoaXMuZ3JvdXAsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBjb3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5Db3B5SW5wdXRNZXNzYWdlKGlucHV0RWxlbWVudClcclxuICB9XHJcblxyXG5cclxuICBzZWxlY3RFdmVudChpdGVtKSB7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKGl0ZW0pID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRWYWx1ZShpdGVtKTtcclxuICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxyXG5cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgQXV0b2NvbXBsZXRlTW9kZWwgPSBuZXcgQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgICAgICAgQXV0b2NvbXBsZXRlTW9kZWwudmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0VmFsdWUoQXV0b2NvbXBsZXRlTW9kZWwpO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9ICBcclxuICAgIGVsc2Uge1xyXG5cclxuICAgICAgaWYgKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudmFsdWUgPT0gaXRlbS52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0RXJyb3JzKHsgTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleTogdGhpcy5OZXdTZWxlY3Rpb25WYWxpZGF0aW9uS2V5IH0pO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuaW52YWxpZDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKGl0ZW0pO1xyXG4gICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgICAgICAgbGV0IG9yaWdpbmFsVmFsdWUgPXRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICYmIHRoaXMub3B0aW9ucy5QYXRjaFBhdGggJiYgdGhpcy5ncm91cC5nZXQodGhpcy5vcHRpb25zLk5hbWUpLnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnBhdGNoQ29udHJvbFZhbHVlKG9yaWdpbmFsVmFsdWUsdGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gLHRoaXMub3B0aW9ucy5QYXRjaFBhdGgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnZhbHVlKVxyXG4gICAgICAgICAvL1VzZSB0aGlzIGxpbmUgdG8gZW5hYmxlIHR3byB3YXkgYmluZGluZy5cclxuICAgICAgICAgdGhpcy5vcHRpb25zLlZhbHVlPSB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkNoYW5nZVNlYXJjaChzZWFyY2g6IHN0cmluZykge1xyXG4gICAgdGhpcy5TZWFyY2g9c2VhcmNoO1xyXG4gICAgdGhpcy5TZWxlY3RlZFZhbHVlPVwiXCI7XHJcbiAgICBhd2FpdCB0aGlzLnN1Z2dlc3Rpb25zJC5zdWJzY3JpYmUoKHJlc3VsdCk9PntcclxuICAgICAgaWYgKChyZXN1bHQ9PW51bGx8fHJlc3VsdC5sZW5ndGg9PTB8fHJlc3VsdC5sZW5ndGg9PTApJiZ0aGlzLm9wdGlvbnMuQWxsb3dOZXdTZWxlY3Rpb249PXRydWUpIHtcclxuICAgICAgICB0aGlzLmRhdGFMaXN0ID0gW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBrZXk6MCxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuU2VhcmNoXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAge1xyXG4gICAgICAgIHRoaXMuZGF0YUxpc3Q9cmVzdWx0XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvLyBvbkZvY3VzZWQoZSkge1xyXG4gIC8vICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgLy8gfVxyXG5cclxuIFxyXG4gIC8vIG9uQmx1cihWYWx1ZSkge1xyXG4gIC8vICAgaWYgKHRoaXMub3B0aW9ucy5BbGxvd05ld1NlbGVjdGlvbiA9PSB0cnVlKSB7XHJcblxyXG4gIC8vICAgICBpZiAodHlwZW9mIChWYWx1ZSkgPT0gJ29iamVjdCcpIHtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldFZhbHVlKFZhbHVlKTtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVxyXG5cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBlbHNlIHtcclxuICAvLyAgICAgICBsZXQgQXV0b2NvbXBsZXRlTW9kZWwgPSBuZXcgQXV0b2NvbXBsZXRlRFRPKCk7XHJcbiAgLy8gICAgICAgQXV0b2NvbXBsZXRlTW9kZWwudmFsdWUgPSBWYWx1ZTtcclxuICAvLyAgICAgICBsZXQgbW9kZWwgPSBuZXcgVHlwZWFoZWFkTWF0Y2goQXV0b2NvbXBsZXRlTW9kZWwsVmFsdWUpO1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wuc2V0VmFsdWUobW9kZWwpO1xyXG4gIC8vICAgICAgIHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcblxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9IFxyXG5cclxuICAvLyAgIGVsc2Uge1xyXG5cclxuICAvLyAgICAgaWYgKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wudmFsdWUgPT0gVmFsdWUpIHtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnNldEVycm9ycyh7IE5ld1NlbGVjdGlvblZhbGlkYXRpb25LZXk6IHRoaXMuTmV3U2VsZWN0aW9uVmFsaWRhdGlvbktleSB9KTtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAvLyAgICAgICB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLmludmFsaWQ7XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9XHJcbiAgLy8gIH1cclxuXHJcblxyXG4gIC8vIGhhbmRsZVJlc3VsdFNlbGVjdGVkKHJlc3VsdCkge1xyXG4gIFxyXG4gIC8vICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC5zZXRWYWx1ZShyZXN1bHQpO1xyXG4gIC8vICAgdGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICAvLyAgIHRoaXMuT25DaGFuZ2UuZW1pdCh0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnZhbHVlKVxyXG4gIC8vICAgdGhpcy5TZWFyY2ggPSB0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLnZhbHVlLnZhbHVlXHJcbiAgIFxyXG5cclxuXHJcbiAgLy8gfVxyXG4gXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkF1dG9jb21wbGV0ZVRleHRCb3hDb250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZFJlcXVpcmVkVmFsaWRhdGlvbiA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuQWRkUmVxdWlyZWRWYWxpZGF0aW9uKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIFJlbW92ZUN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5SZW1vdmVDdXN0b21WYWxpZGF0aW9uKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuQXV0b2NvbXBsZXRlVGV4dEJveENvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5BdXRvY29tcGxldGVUZXh0Qm94Q29udHJvbClcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19
|