@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.
- package/README.md +2 -3
- package/bnsights-bbsf-controls-1.0.88.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 +9434 -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/{esm2020/lib/Shared/Models/datePickerOptions.mjs → esm2015/lib/Shared/Models/datePickerOptions.js} +1 -1
- 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 +248 -0
- package/esm2015/lib/controls/Calendar/Calendar.component.js +176 -0
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +114 -0
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +139 -0
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +215 -0
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +178 -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 +222 -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 +119 -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 +131 -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 +268 -0
- package/esm2015/lib/controls/TextArea/TextArea.component.js +191 -0
- package/esm2015/lib/controls/TextBox/TextBox.component.js +262 -0
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +83 -0
- package/esm2015/lib/controls/bbsf-controls.module.js +243 -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} +1506 -1645
- package/fesm2015/bnsights-bbsf-controls.js.map +1 -0
- package/lib/Shared/Directives/template-name.directive.d.ts +0 -3
- package/lib/Shared/Models/datePickerOptions.d.ts +1 -1
- 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 -4
- package/lib/controls/Calendar/Calendar.component.d.ts +0 -3
- package/lib/controls/CheckBox/CheckBox.component.d.ts +0 -4
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +0 -3
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +2 -8
- package/lib/controls/DropdownList/DropdownList.component.d.ts +0 -4
- 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 -4
- 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 +1 -7
- 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 -4
- 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 -4
- package/lib/controls/TextArea/TextArea.component.d.ts +0 -4
- package/lib/controls/TextBox/TextBox.component.d.ts +0 -4
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +0 -4
- 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 +8 -20
- 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/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
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import dayGridPlugin from '@fullcalendar/daygrid';
|
|
2
|
-
import timeGrigPlugin from '@fullcalendar/timegrid';
|
|
3
|
-
import interactionPlugin from '@fullcalendar/interaction'; // for dateClick
|
|
4
|
-
import timeGridPlugin from '@fullcalendar/timegrid';
|
|
5
|
-
import listPlugin from '@fullcalendar/list';
|
|
6
|
-
import { Component, Input, Optional, ViewChild } from '@angular/core';
|
|
7
|
-
import { FormControl } from '@angular/forms';
|
|
8
|
-
import { CalendarView } from '../../Shared/Enums/CalendarView';
|
|
9
|
-
import enGbLocale from '@fullcalendar/core/locales/en-gb';
|
|
10
|
-
import ArLocale from '@fullcalendar/core/locales/ar';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "../../Shared/services/validationErrorMassage.service";
|
|
13
|
-
import * as i2 from "../../Shared/services/ControlUtility";
|
|
14
|
-
import * as i3 from "@angular/forms";
|
|
15
|
-
import * as i4 from "@bnsights/bbsf-utilities";
|
|
16
|
-
import * as i5 from "@fullcalendar/angular";
|
|
17
|
-
import * as i6 from "@angular/common";
|
|
18
|
-
import * as i7 from "ngx-intl-tel-input";
|
|
19
|
-
export class CalendarComponent {
|
|
20
|
-
// tslint:disable-next-line: max-line-length
|
|
21
|
-
constructor(ErrorHandler, controlUtility, controlContainer, PhoneControlHost, UtilityService, translate, controlValidationService) {
|
|
22
|
-
this.ErrorHandler = ErrorHandler;
|
|
23
|
-
this.controlUtility = controlUtility;
|
|
24
|
-
this.controlContainer = controlContainer;
|
|
25
|
-
this.PhoneControlHost = PhoneControlHost;
|
|
26
|
-
this.UtilityService = UtilityService;
|
|
27
|
-
this.translate = translate;
|
|
28
|
-
this.controlValidationService = controlValidationService;
|
|
29
|
-
this.calendarVisible = true;
|
|
30
|
-
this.currentEvents = [];
|
|
31
|
-
this.calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin, listPlugin];
|
|
32
|
-
this.calendarWeekends = true;
|
|
33
|
-
this.calendarEvents = [];
|
|
34
|
-
this.DefaultView = "";
|
|
35
|
-
this.CalendarViews = '';
|
|
36
|
-
this.locales = [];
|
|
37
|
-
this.CurrentLanguage = "";
|
|
38
|
-
this.resetError = () => {
|
|
39
|
-
this.controlValidationService.RemoveGlobalError();
|
|
40
|
-
};
|
|
41
|
-
CalendarComponent.controlContainerstatic = this.controlContainer;
|
|
42
|
-
}
|
|
43
|
-
async ngOnInit() {
|
|
44
|
-
switch (await this.UtilityService.getCurrentLanguage()) {
|
|
45
|
-
case 'ar':
|
|
46
|
-
this.locales = [ArLocale];
|
|
47
|
-
this.CurrentLanguage = "Ar";
|
|
48
|
-
break;
|
|
49
|
-
case 'en':
|
|
50
|
-
this.locales = [enGbLocale];
|
|
51
|
-
this.CurrentLanguage = "En";
|
|
52
|
-
break;
|
|
53
|
-
default:
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
this.translate.onLangChange.subscribe((event) => {
|
|
57
|
-
switch (event.lang) {
|
|
58
|
-
case 'ar':
|
|
59
|
-
this.locales = [ArLocale];
|
|
60
|
-
this.CurrentLanguage = "Ar";
|
|
61
|
-
break;
|
|
62
|
-
case 'en':
|
|
63
|
-
this.locales = [enGbLocale];
|
|
64
|
-
this.CurrentLanguage = "En";
|
|
65
|
-
break;
|
|
66
|
-
default:
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
this.calendarEvents = this.options.EventList;
|
|
71
|
-
this.calendarWeekends = this.options.AllowCalendarWeekends;
|
|
72
|
-
switch (this.options.DefaultView) {
|
|
73
|
-
case CalendarView.Month:
|
|
74
|
-
this.DefaultView = "dayGridMonth";
|
|
75
|
-
break;
|
|
76
|
-
case CalendarView.Weekly:
|
|
77
|
-
this.DefaultView = "timeGridWeek";
|
|
78
|
-
break;
|
|
79
|
-
case CalendarView.Daily:
|
|
80
|
-
this.DefaultView = "timeGridDay";
|
|
81
|
-
break;
|
|
82
|
-
default:
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
if (this.options.CalendarViews != null && this.options.CalendarViews.length > 0)
|
|
86
|
-
for (let index = 0; index < this.options.CalendarViews.length; index++) {
|
|
87
|
-
const element = this.options.CalendarViews[index];
|
|
88
|
-
switch (element) {
|
|
89
|
-
case CalendarView.Agenda:
|
|
90
|
-
this.CalendarViews += "listWeek,";
|
|
91
|
-
break;
|
|
92
|
-
case CalendarView.Daily:
|
|
93
|
-
this.CalendarViews += "timeGridDay,";
|
|
94
|
-
break;
|
|
95
|
-
case CalendarView.Weekly:
|
|
96
|
-
this.CalendarViews += "timeGridWeek,";
|
|
97
|
-
break;
|
|
98
|
-
case CalendarView.Month:
|
|
99
|
-
this.CalendarViews += "dayGridMonth,";
|
|
100
|
-
break;
|
|
101
|
-
default:
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
this.group.addControl(this.options.Name, new FormControl(''));
|
|
106
|
-
this.CalendarFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
107
|
-
this.calendarOptions = {
|
|
108
|
-
plugins: [
|
|
109
|
-
dayGridPlugin,
|
|
110
|
-
timeGridPlugin,
|
|
111
|
-
listPlugin,
|
|
112
|
-
interactionPlugin
|
|
113
|
-
],
|
|
114
|
-
headerToolbar: {
|
|
115
|
-
left: 'prev,next today',
|
|
116
|
-
center: 'title',
|
|
117
|
-
right: this.CalendarViews.substring(0, this.CalendarViews.length - 1)
|
|
118
|
-
},
|
|
119
|
-
locales: this.locales,
|
|
120
|
-
locale: this.CurrentLanguage,
|
|
121
|
-
initialView: this.CalendarViews.split(',')[0],
|
|
122
|
-
initialEvents: this.calendarEvents,
|
|
123
|
-
initialDate: this.options.DefaultDate,
|
|
124
|
-
weekends: this.options.AllowCalendarWeekends,
|
|
125
|
-
editable: this.options.Eventeditable,
|
|
126
|
-
selectable: this.options.Eventselectable,
|
|
127
|
-
// selectMirror: true,
|
|
128
|
-
dayMaxEvents: this.options.dayMaxEvents,
|
|
129
|
-
select: this.OnDayClickFunction.bind(this),
|
|
130
|
-
eventClick: this.OnEventClickFunction.bind(this),
|
|
131
|
-
// eventsSet: this.handleEvents.bind(this)
|
|
132
|
-
/* you can update a remote database when these fire:
|
|
133
|
-
eventAdd:
|
|
134
|
-
eventChange:
|
|
135
|
-
eventRemove:
|
|
136
|
-
*/
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
ngAfterViewInit() {
|
|
140
|
-
}
|
|
141
|
-
getErrorValidation(Errorsitem) {
|
|
142
|
-
}
|
|
143
|
-
OnDayClickFunction(arg) {
|
|
144
|
-
if (this.options.OnDayClickFunction != null) {
|
|
145
|
-
let DayClickFunction = this.options.OnDayClickFunction;
|
|
146
|
-
DayClickFunction(arg);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
OnEventClickFunction(arg) {
|
|
150
|
-
if (this.options.OnEventClickFunction != null) {
|
|
151
|
-
let EventClickFunction = this.options.OnEventClickFunction;
|
|
152
|
-
EventClickFunction(arg.event);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
CalendarComponent.controlContainerstatic = null;
|
|
157
|
-
CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.ErrorMassageValidation }, { token: i2.ControlUtility }, { token: i3.ControlContainer, optional: true }, { token: i3.FormGroupDirective }, { token: i4.UtilityService }, { token: i4.BBSFTranslateService }, { token: i4.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
158
|
-
CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CalendarComponent, selector: "BBSF-Calendar", inputs: { group: "group", options: "options" }, viewQueries: [{ propertyName: "calendarComponent", first: true, predicate: ["calendar"], descendants: true }], ngImport: i0, template: "\r\n<div class=\"b-control b-calendar\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <!-- <full-calendar #calendar\r\n [defaultDate]=\"options.DefaultDate\"\r\n [defaultView]=\"DefaultView\"\r\n [header]=\"{\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: CalendarViews\r\n }\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [locales]=\"locales\"\r\n [plugins]=\"calendarPlugins\"\r\n [weekends]=\"calendarWeekends\"\r\n [events]=\"calendarEvents\"\r\n (dateClick)=\"OnDayClickFunction($event)\"\r\n (eventClick)=\"OnEventClickFunction($event)\"\r\n id=\"{{options.Name}}\"></full-calendar> -->\r\n\r\n\r\n <full-calendar\r\n *ngIf=\"options.CalendarVisible\"\r\n [options]='calendarOptions'\r\n id=\"{{options.Name}}\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n ></full-calendar>\r\n\r\n </div>\r\n</div>\r\n", styles: [""], components: [{ type: i5.FullCalendarComponent, selector: "full-calendar", inputs: ["options", "deepChangeDetection"] }], directives: [{ type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }] });
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CalendarComponent, decorators: [{
|
|
160
|
-
type: Component,
|
|
161
|
-
args: [{ selector: 'BBSF-Calendar', template: "\r\n<div class=\"b-control b-calendar\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <!-- <full-calendar #calendar\r\n [defaultDate]=\"options.DefaultDate\"\r\n [defaultView]=\"DefaultView\"\r\n [header]=\"{\r\n left: 'prev,next today',\r\n center: 'title',\r\n right: CalendarViews\r\n }\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n [locales]=\"locales\"\r\n [plugins]=\"calendarPlugins\"\r\n [weekends]=\"calendarWeekends\"\r\n [events]=\"calendarEvents\"\r\n (dateClick)=\"OnDayClickFunction($event)\"\r\n (eventClick)=\"OnEventClickFunction($event)\"\r\n id=\"{{options.Name}}\"></full-calendar> -->\r\n\r\n\r\n <full-calendar\r\n *ngIf=\"options.CalendarVisible\"\r\n [options]='calendarOptions'\r\n id=\"{{options.Name}}\"\r\n ngDefaultControl\r\n formControlName=\"{{options.Name}}\"\r\n ></full-calendar>\r\n\r\n </div>\r\n</div>\r\n", styles: [""] }]
|
|
162
|
-
}], ctorParameters: function () { return [{ type: i1.ErrorMassageValidation }, { type: i2.ControlUtility }, { type: i3.ControlContainer, decorators: [{
|
|
163
|
-
type: Optional
|
|
164
|
-
}] }, { type: i3.FormGroupDirective }, { type: i4.UtilityService }, { type: i4.BBSFTranslateService }, { type: i4.ControlValidationService }]; }, propDecorators: { group: [{
|
|
165
|
-
type: Input
|
|
166
|
-
}], options: [{
|
|
167
|
-
type: Input
|
|
168
|
-
}], calendarComponent: [{
|
|
169
|
-
type: ViewChild,
|
|
170
|
-
args: ['calendar', { static: false }]
|
|
171
|
-
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NhbGVuZGFyL0NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9DYWxlbmRhci9DYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLGFBQWEsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLGNBQWMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLGlCQUFpQixNQUFNLDJCQUEyQixDQUFDLENBQUMsZ0JBQWdCO0FBQzNFLE9BQU8sY0FBYyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sVUFBVSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFXLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFdBQVcsRUFBK0csTUFBTSxnQkFBZ0IsQ0FBQztBQUkxSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxVQUFVLE1BQU0sa0NBQWtDLENBQUM7QUFDMUQsT0FBTyxRQUFRLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7OztBQVNyRCxNQUFNLE9BQU8saUJBQWlCO0lBSTVCLDRDQUE0QztJQUM1QyxZQUFvQixZQUFvQyxFQUFVLGNBQThCLEVBQXNCLGdCQUFrQyxFQUFTLGdCQUFvQyxFQUFTLGNBQTZCLEVBQVMsU0FBK0IsRUFBUyx3QkFBaUQ7UUFBelQsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQXNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFBUyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQVMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUFTLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBeUI7UUFVN1Usb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFdkIsa0JBQWEsR0FBZSxFQUFFLENBQUM7UUFDL0Isb0JBQWUsR0FBRyxDQUFDLGFBQWEsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakYscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLG1CQUFjLEdBQWlCLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixrQkFBYSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2Isb0JBQWUsR0FBRyxFQUFFLENBQUE7UUFnSHBCLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDaEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFBO1FBcElDLGlCQUFpQixDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNuRSxDQUFDO0lBa0JELEtBQUssQ0FBQyxRQUFRO1FBQ1osUUFBUSxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUN0RCxLQUFLLElBQUk7Z0JBQ1AsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtnQkFDM0IsTUFBTTtZQUNSLEtBQUssSUFBSTtnQkFDUCxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7Z0JBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFBO2dCQUMzQixNQUFNO1lBRVI7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQy9ELFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDbEIsS0FBSyxJQUFJO29CQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtvQkFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUE7b0JBQzNCLE1BQU07Z0JBQ1IsS0FBSyxJQUFJO29CQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtvQkFDM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUE7b0JBQzNCLE1BQU07Z0JBRVI7b0JBQ0UsTUFBTTthQUNUO1FBRUgsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFBO1FBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFBO1FBQzFELFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDaEMsS0FBSyxZQUFZLENBQUMsS0FBSztnQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUE7Z0JBQ2pDLE1BQU07WUFDUixLQUFLLFlBQVksQ0FBQyxNQUFNO2dCQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQTtnQkFDakMsTUFBTTtZQUNSLEtBQUssWUFBWSxDQUFDLEtBQUs7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFBO2dCQUNoQyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDN0UsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2xELFFBQVEsT0FBTyxFQUFFO29CQUNmLEtBQUssWUFBWSxDQUFDLE1BQU07d0JBQ3RCLElBQUksQ0FBQyxhQUFhLElBQUksV0FBVyxDQUFBO3dCQUNqQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLEtBQUs7d0JBQ3JCLElBQUksQ0FBQyxhQUFhLElBQUksY0FBYyxDQUFBO3dCQUNwQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLE1BQU07d0JBQ3RCLElBQUksQ0FBQyxhQUFhLElBQUksZUFBZSxDQUFBO3dCQUNyQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLEtBQUs7d0JBQ3JCLElBQUksQ0FBQyxhQUFhLElBQUksZUFBZSxDQUFBO3dCQUNyQyxNQUFNO29CQUdSO3dCQUNFLE1BQU07aUJBQ1Q7YUFDRjtRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0M7UUFHM0csSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixPQUFPLEVBQUU7Z0JBQ1AsYUFBYTtnQkFDYixjQUFjO2dCQUNkLFVBQVU7Z0JBQ1YsaUJBQWlCO2FBQ2xCO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE1BQU0sRUFBRSxPQUFPO2dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2FBQ3RFO1lBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtZQUM1QixXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO1lBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQjtZQUM1QyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7WUFDeEMsc0JBQXNCO1lBQ3RCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7WUFDdkMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzFDLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNoRCwwQ0FBMEM7WUFDMUM7Ozs7Y0FJRTtTQUNILENBQUM7SUFFSixDQUFDO0lBR0QsZUFBZTtJQUdmLENBQUM7SUFNRCxrQkFBa0IsQ0FBQyxVQUFpQjtJQUNwQyxDQUFDO0lBR0Qsa0JBQWtCLENBQUMsR0FBRztRQUVwQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLElBQUksSUFBSSxFQUFFO1lBQzNDLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RCxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFHO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLEVBQUU7WUFDN0MsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1lBQzNELGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQjtJQUVILENBQUM7O0FBM0pNLHdDQUFzQixHQUFHLElBQUksQ0FBQzsrR0FIMUIsaUJBQWlCO21HQUFqQixpQkFBaUIsb05DeEI5QixzeUNBZ0NBOzRGRFJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkFTMEUsUUFBUTtvTEFHbEcsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFb0MsaUJBQWlCO3NCQUExRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGdWxsQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICdAZnVsbGNhbGVuZGFyL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBFdmVudElucHV0IH0gZnJvbSAnQGZ1bGxjYWxlbmRhci9jb3JlJztcclxuaW1wb3J0IGRheUdyaWRQbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci9kYXlncmlkJztcclxuaW1wb3J0IHRpbWVHcmlnUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvdGltZWdyaWQnO1xyXG5pbXBvcnQgaW50ZXJhY3Rpb25QbHVnaW4gZnJvbSAnQGZ1bGxjYWxlbmRhci9pbnRlcmFjdGlvbic7IC8vIGZvciBkYXRlQ2xpY2tcclxuaW1wb3J0IHRpbWVHcmlkUGx1Z2luIGZyb20gJ0BmdWxsY2FsZW5kYXIvdGltZWdyaWQnO1xyXG5pbXBvcnQgbGlzdFBsdWdpbiBmcm9tICdAZnVsbGNhbGVuZGFyL2xpc3QnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIERvQ2hlY2ssIE9wdGlvbmFsLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3ZhbGlkYXRpb25FcnJvck1hc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xVdGlsaXR5IH0gZnJvbSAnLi4vLi4vU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vU2hhcmVkL01vZGVscy9DYWxlbmRhck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclZpZXcgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvQ2FsZW5kYXJWaWV3JztcclxuaW1wb3J0IHsgQ2FsZW5kYXJPcHRpb25zIGFzIENhbGVuZGFyT3B0aW9uc01vZGVsLCBEYXRlU2VsZWN0QXJnLCBFdmVudEFwaSwgRXZlbnRDbGlja0FyZyB9IGZyb20gJ0BmdWxsY2FsZW5kYXIvYW5ndWxhcic7XHJcbmltcG9ydCBlbkdiTG9jYWxlIGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZS9sb2NhbGVzL2VuLWdiJztcclxuaW1wb3J0IEFyTG9jYWxlIGZyb20gJ0BmdWxsY2FsZW5kYXIvY29yZS9sb2NhbGVzL2FyJztcclxuaW1wb3J0IHsgTGFuZ0NoYW5nZUV2ZW50IH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnQkJTRi1DYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL0NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9DYWxlbmRhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEVycm9ySGFuZGxlcjogRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiwgcHJpdmF0ZSBjb250cm9sVXRpbGl0eTogQ29udHJvbFV0aWxpdHksIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbENvbnRhaW5lcjogQ29udHJvbENvbnRhaW5lciwgcHVibGljIFBob25lQ29udHJvbEhvc3Q6IEZvcm1Hcm91cERpcmVjdGl2ZSxwcml2YXRlIFV0aWxpdHlTZXJ2aWNlOlV0aWxpdHlTZXJ2aWNlLHByaXZhdGUgdHJhbnNsYXRlOiBCQlNGVHJhbnNsYXRlU2VydmljZSxwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTpDb250cm9sVmFsaWRhdGlvblNlcnZpY2UpIHtcclxuICAgIENhbGVuZGFyQ29tcG9uZW50LmNvbnRyb2xDb250YWluZXJzdGF0aWMgPSB0aGlzLmNvbnRyb2xDb250YWluZXI7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogQ2FsZW5kYXJPcHRpb25zO1xyXG4gIENhbGVuZGFyRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjYWxlbmRhckNvbXBvbmVudDogRnVsbENhbGVuZGFyQ29tcG9uZW50OyAvLyB0aGUgI2NhbGVuZGFyIGluIHRoZSB0ZW1wbGF0ZVxyXG5cclxuXHJcblxyXG4gIGNhbGVuZGFyVmlzaWJsZSA9IHRydWU7XHJcbiAgY2FsZW5kYXJPcHRpb25zOiBDYWxlbmRhck9wdGlvbnNNb2RlbDtcclxuICBjdXJyZW50RXZlbnRzOiBFdmVudEFwaVtdID0gW107XHJcbiAgY2FsZW5kYXJQbHVnaW5zID0gW2RheUdyaWRQbHVnaW4sIHRpbWVHcmlnUGx1Z2luLCBpbnRlcmFjdGlvblBsdWdpbiwgbGlzdFBsdWdpbl07XHJcbiAgY2FsZW5kYXJXZWVrZW5kcyA9IHRydWU7XHJcbiAgY2FsZW5kYXJFdmVudHM6IEV2ZW50SW5wdXRbXSA9IFtdO1xyXG4gIERlZmF1bHRWaWV3ID0gXCJcIlxyXG4gIENhbGVuZGFyVmlld3MgPSAnJ1xyXG4gIGxvY2FsZXMgPSBbXTtcclxuICBDdXJyZW50TGFuZ3VhZ2UgPSBcIlwiXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICBzd2l0Y2ggKGF3YWl0IHRoaXMuVXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkpIHtcclxuICAgICAgY2FzZSAnYXInOlxyXG4gICAgICAgIHRoaXMubG9jYWxlcyA9IFtBckxvY2FsZV1cclxuICAgICAgICB0aGlzLkN1cnJlbnRMYW5ndWFnZSA9IFwiQXJcIlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgdGhpcy5sb2NhbGVzID0gW2VuR2JMb2NhbGVdXHJcbiAgICAgICAgdGhpcy5DdXJyZW50TGFuZ3VhZ2UgPSBcIkVuXCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIHN3aXRjaCAoZXZlbnQubGFuZykge1xyXG4gICAgICAgIGNhc2UgJ2FyJzpcclxuICAgICAgICAgIHRoaXMubG9jYWxlcyA9IFtBckxvY2FsZV1cclxuICAgICAgICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gXCJBclwiXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbic6XHJcbiAgICAgICAgICB0aGlzLmxvY2FsZXMgPSBbZW5HYkxvY2FsZV1cclxuICAgICAgICAgIHRoaXMuQ3VycmVudExhbmd1YWdlID0gXCJFblwiXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNhbGVuZGFyRXZlbnRzID0gdGhpcy5vcHRpb25zLkV2ZW50TGlzdFxyXG4gICAgdGhpcy5jYWxlbmRhcldlZWtlbmRzID0gdGhpcy5vcHRpb25zLkFsbG93Q2FsZW5kYXJXZWVrZW5kc1xyXG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMuRGVmYXVsdFZpZXcpIHtcclxuICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGg6XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0VmlldyA9IFwiZGF5R3JpZE1vbnRoXCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDYWxlbmRhclZpZXcuV2Vla2x5OlxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZpZXcgPSBcInRpbWVHcmlkV2Vla1wiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRhaWx5OlxyXG4gICAgICAgIHRoaXMuRGVmYXVsdFZpZXcgPSBcInRpbWVHcmlkRGF5XCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuQ2FsZW5kYXJWaWV3cyAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5DYWxlbmRhclZpZXdzLmxlbmd0aCA+IDApXHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuQ2FsZW5kYXJWaWV3cy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5vcHRpb25zLkNhbGVuZGFyVmlld3NbaW5kZXhdO1xyXG4gICAgICAgIHN3aXRjaCAoZWxlbWVudCkge1xyXG4gICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuQWdlbmRhOlxyXG4gICAgICAgICAgICB0aGlzLkNhbGVuZGFyVmlld3MgKz0gXCJsaXN0V2VlayxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LkRhaWx5OlxyXG4gICAgICAgICAgICB0aGlzLkNhbGVuZGFyVmlld3MgKz0gXCJ0aW1lR3JpZERheSxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgQ2FsZW5kYXJWaWV3LldlZWtseTpcclxuICAgICAgICAgICAgdGhpcy5DYWxlbmRhclZpZXdzICs9IFwidGltZUdyaWRXZWVrLFwiXHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBDYWxlbmRhclZpZXcuTW9udGg6XHJcbiAgICAgICAgICAgIHRoaXMuQ2FsZW5kYXJWaWV3cyArPSBcImRheUdyaWRNb250aCxcIlxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB0aGlzLmdyb3VwLmFkZENvbnRyb2wodGhpcy5vcHRpb25zLk5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xyXG4gICAgdGhpcy5DYWxlbmRhckZvcm1Db250cm9sID0gdGhpcy5ncm91cC5jb250cm9sc1t0aGlzLm9wdGlvbnMuTmFtZV07IC8vICBuZXcgRm9ybUNvbnRyb2woJycsdmFsaWRhdGlvblJ1bGVzKTtcclxuXHJcblxyXG4gICAgdGhpcy5jYWxlbmRhck9wdGlvbnMgPSB7XHJcbiAgICAgIHBsdWdpbnM6IFtcclxuICAgICAgICBkYXlHcmlkUGx1Z2luLFxyXG4gICAgICAgIHRpbWVHcmlkUGx1Z2luLFxyXG4gICAgICAgIGxpc3RQbHVnaW4sXHJcbiAgICAgICAgaW50ZXJhY3Rpb25QbHVnaW5cclxuICAgICAgXSxcclxuICAgICAgaGVhZGVyVG9vbGJhcjoge1xyXG4gICAgICAgIGxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLFxyXG4gICAgICAgIGNlbnRlcjogJ3RpdGxlJyxcclxuICAgICAgICByaWdodDogdGhpcy5DYWxlbmRhclZpZXdzLnN1YnN0cmluZygwLCB0aGlzLkNhbGVuZGFyVmlld3MubGVuZ3RoIC0gMSlcclxuICAgICAgfSxcclxuICAgICAgbG9jYWxlczogdGhpcy5sb2NhbGVzLFxyXG4gICAgICBsb2NhbGU6IHRoaXMuQ3VycmVudExhbmd1YWdlLFxyXG4gICAgICBpbml0aWFsVmlldzogdGhpcy5DYWxlbmRhclZpZXdzLnNwbGl0KCcsJylbMF0sXHJcbiAgICAgIGluaXRpYWxFdmVudHM6IHRoaXMuY2FsZW5kYXJFdmVudHMsXHJcbiAgICAgIGluaXRpYWxEYXRlOiB0aGlzLm9wdGlvbnMuRGVmYXVsdERhdGUsXHJcbiAgICAgIHdlZWtlbmRzOiB0aGlzLm9wdGlvbnMuQWxsb3dDYWxlbmRhcldlZWtlbmRzLFxyXG4gICAgICBlZGl0YWJsZTogdGhpcy5vcHRpb25zLkV2ZW50ZWRpdGFibGUsXHJcbiAgICAgIHNlbGVjdGFibGU6IHRoaXMub3B0aW9ucy5FdmVudHNlbGVjdGFibGUsXHJcbiAgICAgIC8vIHNlbGVjdE1pcnJvcjogdHJ1ZSxcclxuICAgICAgZGF5TWF4RXZlbnRzOiB0aGlzLm9wdGlvbnMuZGF5TWF4RXZlbnRzLFxyXG4gICAgICBzZWxlY3Q6IHRoaXMuT25EYXlDbGlja0Z1bmN0aW9uLmJpbmQodGhpcyksXHJcbiAgICAgIGV2ZW50Q2xpY2s6IHRoaXMuT25FdmVudENsaWNrRnVuY3Rpb24uYmluZCh0aGlzKSxcclxuICAgICAgLy8gZXZlbnRzU2V0OiB0aGlzLmhhbmRsZUV2ZW50cy5iaW5kKHRoaXMpXHJcbiAgICAgIC8qIHlvdSBjYW4gdXBkYXRlIGEgcmVtb3RlIGRhdGFiYXNlIHdoZW4gdGhlc2UgZmlyZTpcclxuICAgICAgZXZlbnRBZGQ6XHJcbiAgICAgIGV2ZW50Q2hhbmdlOlxyXG4gICAgICBldmVudFJlbW92ZTpcclxuICAgICAgKi9cclxuICAgIH07XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRFcnJvciA9ICgpID0+IHtcclxuICAgIHRoaXMuY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLlJlbW92ZUdsb2JhbEVycm9yKCk7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JzaXRlbTogYW55W10pIHtcclxuICB9XHJcblxyXG5cclxuICBPbkRheUNsaWNrRnVuY3Rpb24oYXJnKSB7XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkRheUNsaWNrRnVuY3Rpb24gIT0gbnVsbCkge1xyXG4gICAgICBsZXQgRGF5Q2xpY2tGdW5jdGlvbiA9IHRoaXMub3B0aW9ucy5PbkRheUNsaWNrRnVuY3Rpb247XHJcbiAgICAgIERheUNsaWNrRnVuY3Rpb24oYXJnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIE9uRXZlbnRDbGlja0Z1bmN0aW9uKGFyZykge1xyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5PbkV2ZW50Q2xpY2tGdW5jdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgIGxldCBFdmVudENsaWNrRnVuY3Rpb24gPSB0aGlzLm9wdGlvbnMuT25FdmVudENsaWNrRnVuY3Rpb247XHJcbiAgICAgIEV2ZW50Q2xpY2tGdW5jdGlvbihhcmcuZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gaGFuZGxlRGF0ZVNlbGVjdChzZWxlY3RJbmZvOiBEYXRlU2VsZWN0QXJnKSB7XHJcbiAgLy8gICBjb25zdCB0aXRsZSA9IHByb21wdCgnUGxlYXNlIGVudGVyIGEgbmV3IHRpdGxlIGZvciB5b3VyIGV2ZW50Jyk7XHJcbiAgLy8gICBjb25zdCBjYWxlbmRhckFwaSA9IHNlbGVjdEluZm8udmlldy5jYWxlbmRhcjtcclxuXHJcbiAgLy8gICBjYWxlbmRhckFwaS51bnNlbGVjdCgpOyAvLyBjbGVhciBkYXRlIHNlbGVjdGlvblxyXG5cclxuICAvLyAgIGlmICh0aXRsZSkge1xyXG4gIC8vICAgICBjYWxlbmRhckFwaS5hZGRFdmVudCh7XHJcbiAgLy8gICAgICAgaWQ6IFwiMVwiLFxyXG4gIC8vICAgICAgIHRpdGxlLFxyXG4gIC8vICAgICAgIHN0YXJ0OiBzZWxlY3RJbmZvLnN0YXJ0U3RyLFxyXG4gIC8vICAgICAgIGVuZDogc2VsZWN0SW5mby5lbmRTdHIsXHJcbiAgLy8gICAgICAgYWxsRGF5OiBzZWxlY3RJbmZvLmFsbERheVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIC8vIGhhbmRsZUV2ZW50Q2xpY2soY2xpY2tJbmZvOiBFdmVudENsaWNrQXJnKSB7XHJcbiAgLy8gICBpZiAoY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGUgZXZlbnQgJyR7Y2xpY2tJbmZvLmV2ZW50LnRpdGxlfSdgKSkge1xyXG4gIC8vICAgICBjbGlja0luZm8uZXZlbnQucmVtb3ZlKCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBoYW5kbGVFdmVudHMoZXZlbnRzOiBFdmVudEFwaVtdKSB7XHJcbiAgLy8gICB0aGlzLmN1cnJlbnRFdmVudHMgPSBldmVudHM7XHJcbiAgLy8gfVxyXG5cclxuXHJcblxyXG5cclxufVxyXG5cclxuXHJcbiIsIlxyXG48ZGl2IGNsYXNzPVwiYi1jb250cm9sIGItY2FsZW5kYXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB2YWxpZGF0ZSBpcy1pbnZhbGlkXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gICAgPCEtLSA8ZnVsbC1jYWxlbmRhciAjY2FsZW5kYXJcclxuICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJvcHRpb25zLkRlZmF1bHREYXRlXCJcclxuICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0Vmlld109XCJEZWZhdWx0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICBbaGVhZGVyXT1cIntcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAncHJldixuZXh0IHRvZGF5JyxcclxuICAgICAgICAgICAgICAgICAgICBjZW50ZXI6ICd0aXRsZScsXHJcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IENhbGVuZGFyVmlld3NcclxuICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e29wdGlvbnMuTmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgIFtsb2NhbGVzXT1cImxvY2FsZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgW3BsdWdpbnNdPVwiY2FsZW5kYXJQbHVnaW5zXCJcclxuICAgICAgICAgICAgICAgICAgIFt3ZWVrZW5kc109XCJjYWxlbmRhcldlZWtlbmRzXCJcclxuICAgICAgICAgICAgICAgICAgIFtldmVudHNdPVwiY2FsZW5kYXJFdmVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgKGRhdGVDbGljayk9XCJPbkRheUNsaWNrRnVuY3Rpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAoZXZlbnRDbGljayk9XCJPbkV2ZW50Q2xpY2tGdW5jdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgIGlkPVwie3tvcHRpb25zLk5hbWV9fVwiPjwvZnVsbC1jYWxlbmRhcj4gLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgIDxmdWxsLWNhbGVuZGFyXHJcbiAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbnMuQ2FsZW5kYXJWaXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT0nY2FsZW5kYXJPcHRpb25zJ1xyXG4gICAgICAgICAgICAgICAgICAgaWQ9XCJ7e29wdGlvbnMuTmFtZX19XCJcclxuICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2xcclxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7b3B0aW9ucy5OYW1lfX1cIlxyXG4gICAgICAgICAgICAgICAgID48L2Z1bGwtY2FsZW5kYXI+XHJcblxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Optional, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { FormControl, Validators } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../Shared/services/ControlUtility";
|
|
5
|
-
import * as i2 from "@angular/forms";
|
|
6
|
-
import * as i3 from "@bnsights/bbsf-utilities";
|
|
7
|
-
import * as i4 from "@angular/cdk/bidi";
|
|
8
|
-
import * as i5 from "ngx-intl-tel-input";
|
|
9
|
-
import * as i6 from "@angular/common";
|
|
10
|
-
export class CheckBoxComponent {
|
|
11
|
-
// tslint:disable-next-line: max-line-length
|
|
12
|
-
constructor(controlUtility, controlContainer, CheckBoxControlHost, UtilityService, translate, controlValidationService) {
|
|
13
|
-
this.controlUtility = controlUtility;
|
|
14
|
-
this.controlContainer = controlContainer;
|
|
15
|
-
this.CheckBoxControlHost = CheckBoxControlHost;
|
|
16
|
-
this.UtilityService = UtilityService;
|
|
17
|
-
this.translate = translate;
|
|
18
|
-
this.controlValidationService = controlValidationService;
|
|
19
|
-
this.OnChange = new EventEmitter();
|
|
20
|
-
this.markAllAsTouched = false;
|
|
21
|
-
this.validationRules = [];
|
|
22
|
-
this.validationRulesasync = [];
|
|
23
|
-
this.resetError = () => {
|
|
24
|
-
this.controlValidationService.RemoveGlobalError();
|
|
25
|
-
};
|
|
26
|
-
//External Method
|
|
27
|
-
this.RemoveRequiredValidation = () => {
|
|
28
|
-
this.controlUtility.RemoveRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options);
|
|
29
|
-
};
|
|
30
|
-
//External Method
|
|
31
|
-
this.AddRequiredValidation = () => {
|
|
32
|
-
this.controlUtility.AddRequiredValidation(this.CheckBoxFormControl, this.validationRules, this.options);
|
|
33
|
-
};
|
|
34
|
-
//External Method
|
|
35
|
-
this.RemoveCustomValidation = (CustomValidation) => {
|
|
36
|
-
this.controlUtility.RemoveCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation);
|
|
37
|
-
};
|
|
38
|
-
//External Method
|
|
39
|
-
this.AddCustomValidation = (CustomValidation) => {
|
|
40
|
-
this.controlUtility.AddCustomValidation(this.CheckBoxFormControl, this.validationRules, CustomValidation);
|
|
41
|
-
};
|
|
42
|
-
//External Method
|
|
43
|
-
this.IsValid = () => {
|
|
44
|
-
this.controlUtility.IsValid(this.CheckBoxFormControl);
|
|
45
|
-
};
|
|
46
|
-
CheckBoxComponent.controlContainerstatic = this.controlContainer;
|
|
47
|
-
}
|
|
48
|
-
ngOnInit() {
|
|
49
|
-
this.textDir = this.options.ForceDirection == 2 ? 'rtl' : 'ltr';
|
|
50
|
-
this.controlValidationService.isCreatedBefor = false;
|
|
51
|
-
this.group.addControl(this.options.Name, new FormControl(''));
|
|
52
|
-
this.CheckBoxFormControl = this.group.controls[this.options.Name]; // new FormControl('',validationRules);
|
|
53
|
-
this.validationRules = [];
|
|
54
|
-
this.validationRulesasync = [];
|
|
55
|
-
this.CheckBoxFormControl.setValue(this.options.Value);
|
|
56
|
-
if (this.options.LabelKey != null && this.options.LabelKey != "")
|
|
57
|
-
this.options.LabelValue = this.UtilityService.getResourceValue(this.options.LabelKey);
|
|
58
|
-
if (this.options.IsRequired) {
|
|
59
|
-
this.validationRules.push(Validators.required);
|
|
60
|
-
}
|
|
61
|
-
if (this.options.CustomValidation.length > 0) {
|
|
62
|
-
let Validations = this.options.CustomValidation;
|
|
63
|
-
for (let index = 0; index < Validations.length; index++) {
|
|
64
|
-
const Validation = Validations[index];
|
|
65
|
-
this.validationRules.push(Validation.functionBody);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
this.CheckBoxFormControl.setValidators(this.validationRules);
|
|
69
|
-
this.CheckBoxFormControl.setAsyncValidators(this.validationRulesasync);
|
|
70
|
-
if (this.options.IsDisabled) {
|
|
71
|
-
this.CheckBoxFormControl.disable();
|
|
72
|
-
}
|
|
73
|
-
this.CheckBoxControlHost.ngSubmit.subscribe((value) => {
|
|
74
|
-
this.group.markAllAsTouched();
|
|
75
|
-
this.markAllAsTouched = true;
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
ngAfterViewInit() {
|
|
79
|
-
this.controlUtility.setAttributeForControl(this.options);
|
|
80
|
-
}
|
|
81
|
-
showGlobalError() {
|
|
82
|
-
this.controlUtility.showGlobalError();
|
|
83
|
-
}
|
|
84
|
-
getErrorValidation(ErrorList) {
|
|
85
|
-
if (this.markAllAsTouched && this.group.invalid) {
|
|
86
|
-
this.showGlobalError();
|
|
87
|
-
this.markAllAsTouched = false;
|
|
88
|
-
}
|
|
89
|
-
return this.controlUtility.getErrorValidationMassage(ErrorList, this.group, this.options);
|
|
90
|
-
}
|
|
91
|
-
onValueChanged() {
|
|
92
|
-
this.OnChange.emit(this.CheckBoxFormControl.value);
|
|
93
|
-
let originalValue = this.CheckBoxFormControl.value;
|
|
94
|
-
if (this.options.PatchFunction && this.options.PatchPath && this.group.get(this.options.Name).valid) {
|
|
95
|
-
this.controlUtility.patchControlValue(originalValue, this.options.PatchFunction, this.options.PatchPath);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
CheckBoxComponent.controlContainerstatic = null;
|
|
100
|
-
CheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i1.ControlUtility }, { token: i2.ControlContainer, optional: true }, { token: i2.FormGroupDirective }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i3.ControlValidationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
-
CheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: CheckBoxComponent, selector: "BBSF-CheckBox", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n", directives: [{ type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: i5.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "keyvalue": i6.KeyValuePipe } });
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CheckBoxComponent, decorators: [{
|
|
103
|
-
type: Component,
|
|
104
|
-
args: [{ selector: 'BBSF-CheckBox', template: "<div class=\"form-group bbsf-control bbsf-checkbox\" [formGroup]=\"group\">\r\n <div class=\"bbsf-input-container\">\r\n <!--input-->\r\n <input class=\"bbsf-checkbox-input {{options.ExtraClasses}}\" [dir]=\"textDir\" [checked]=\"options.Value==true?true:null\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n (change)=\"onValueChanged()\"\r\n [class.is-invalid]=\"CheckBoxFormControl.invalid && CheckBoxFormControl.touched\"\r\n id=\"{{options.Name}}\" type=\"checkbox\" value=\"options.Value==true?true:null\">\r\n\r\n <div class=\"label-subtext-container\">\r\n <!--label-->\r\n <label *ngIf=\"!options.HideLabel\" class=\"bbsf-label {{options.LabelExtraClasses}}\">\r\n {{options.LabelValue}}\r\n <!--Asterisk-->\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger\">*</span>\r\n </label>\r\n <div class=\"subtext-container\">\r\n <!-- LabelDescription-->\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n <!-- requiredText-->\r\n <div class=\"bbsf-validation\" *ngIf=\"(CheckBoxFormControl.invalid && CheckBoxFormControl.touched)\">\r\n {{getErrorValidation(CheckBoxFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n</div>\r\n" }]
|
|
105
|
-
}], ctorParameters: function () { return [{ type: i1.ControlUtility }, { type: i2.ControlContainer, decorators: [{
|
|
106
|
-
type: Optional
|
|
107
|
-
}] }, { type: i2.FormGroupDirective }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i3.ControlValidationService }]; }, propDecorators: { group: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], options: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], OnChange: [{
|
|
112
|
-
type: Output
|
|
113
|
-
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2tCb3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NoZWNrQm94L0NoZWNrQm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9DaGVja0JveC9DaGVja0JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBb0UsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFXM0gsTUFBTSxPQUFPLGlCQUFpQjtJQUk1Qiw0Q0FBNEM7SUFDNUMsWUFBb0IsY0FBOEIsRUFBc0IsZ0JBQWtDLEVBQVMsbUJBQXVDLEVBQVMsY0FBNkIsRUFBUyxTQUErQixFQUFTLHdCQUFpRDtRQUE5USxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBc0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFTLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUFTLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQVMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQUt4UixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd4QyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFDckIseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBK0MxQixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FB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YyxDQUFDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsRCxJQUFJLGFBQWEsR0FBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDbkcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUN4RztJQUNILENBQUM7O0FBbkZNLHdDQUFzQixHQUFHLElBQUksQ0FBQzsrR0FIMUIsaUJBQWlCO21HQUFqQixpQkFBaUIsd0lDWjlCLDJrREE0QkE7NEZEaEJhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFFRSxlQUFlOzswQkFRNEIsUUFBUTtvTEFHcEQsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBEb0NoZWNrLCBPcHRpb25hbCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgQWJzdHJhY3RDb250cm9sLCBDb250cm9sQ29udGFpbmVyLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yTWFzc2FnZVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvdmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFV0aWxpdHkgfSBmcm9tICcuLi8uLi9TaGFyZWQvc2VydmljZXMvQ29udHJvbFV0aWxpdHknO1xyXG5pbXBvcnQgeyBDaGVja0JveE9wdGlvbnMgfSBmcm9tICcuLi8uLi9TaGFyZWQvTW9kZWxzL0NoZWNrQm94T3B0aW9ucyc7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBDb250cm9sVmFsaWRhdGlvblNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdCQlNGLUNoZWNrQm94JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vQ2hlY2tCb3guY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGVja0JveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cclxuICBzdGF0aWMgY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IG51bGw7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnRyb2xVdGlsaXR5OiBDb250cm9sVXRpbGl0eSwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLCBwdWJsaWMgQ2hlY2tCb3hDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlLHByaXZhdGUgVXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UscHJpdmF0ZSB0cmFuc2xhdGU6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLHByaXZhdGUgY29udHJvbFZhbGlkYXRpb25TZXJ2aWNlOkNvbnRyb2xWYWxpZGF0aW9uU2VydmljZSkge1xyXG4gICAgQ2hlY2tCb3hDb21wb25lbnQuY29udHJvbENvbnRhaW5lcnN0YXRpYyA9IHRoaXMuY29udHJvbENvbnRhaW5lcjtcclxuICB9XHJcbiAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBvcHRpb25zOiBDaGVja0JveE9wdGlvbnM7XHJcbiAgQE91dHB1dCgpIE9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBDaGVja0JveEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XHJcbiAgbWFya0FsbEFzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gIHZhbGlkYXRpb25SdWxlc2FzeW5jID0gW107XHJcbiAgdGV4dERpcjtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRleHREaXI9dGhpcy5vcHRpb25zLkZvcmNlRGlyZWN0aW9uPT0yPydydGwnOidsdHInO1xyXG4gICAgdGhpcy5jb250cm9sVmFsaWRhdGlvblNlcnZpY2UuaXNDcmVhdGVkQmVmb3IgPSBmYWxzZVxyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCBuZXcgRm9ybUNvbnRyb2woJycpKTtcclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbCA9IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdOyAvLyAgbmV3IEZvcm1Db250cm9sKCcnLHZhbGlkYXRpb25SdWxlcyk7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyA9IFtdO1xyXG4gICAgdGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyA9IFtdO1xyXG4gICAgdGhpcy5DaGVja0JveEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMub3B0aW9ucy5WYWx1ZSk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLkxhYmVsS2V5ICE9IFwiXCIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5MYWJlbFZhbHVlID0gdGhpcy5VdGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKHRoaXMub3B0aW9ucy5MYWJlbEtleSk7XHJcblxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMuSXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5DdXN0b21WYWxpZGF0aW9uLmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IFZhbGlkYXRpb25zID0gdGhpcy5vcHRpb25zLkN1c3RvbVZhbGlkYXRpb25cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IFZhbGlkYXRpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IFZhbGlkYXRpb24gPSBWYWxpZGF0aW9uc1tpbmRleF07XHJcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uUnVsZXMucHVzaChWYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMudmFsaWRhdGlvblJ1bGVzKTtcclxuICAgIHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnModGhpcy52YWxpZGF0aW9uUnVsZXNhc3luYyk7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLklzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5DaGVja0JveEZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkNoZWNrQm94Q29udHJvbEhvc3QubmdTdWJtaXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwLm1hcmtBbGxBc1RvdWNoZWQoKVxyXG4gICAgICB0aGlzLm1hcmtBbGxBc1RvdWNoZWQgPSB0cnVlXHJcbiAgICB9KVxyXG5cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5zZXRBdHRyaWJ1dGVGb3JDb250cm9sKHRoaXMub3B0aW9ucylcclxuICB9XHJcblxyXG4gIHJlc2V0RXJyb3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5SZW1vdmVHbG9iYWxFcnJvcigpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LnNob3dHbG9iYWxFcnJvcigpXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvclZhbGlkYXRpb24oRXJyb3JMaXN0KSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsQXNUb3VjaGVkICYmIHRoaXMuZ3JvdXAuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnNob3dHbG9iYWxFcnJvcigpXHJcbiAgICAgIHRoaXMubWFya0FsbEFzVG91Y2hlZCA9IGZhbHNlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sVXRpbGl0eS5nZXRFcnJvclZhbGlkYXRpb25NYXNzYWdlKEVycm9yTGlzdCwgdGhpcy5ncm91cCwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgdGhpcy5PbkNoYW5nZS5lbWl0KHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbC52YWx1ZSlcclxuICAgIGxldCBvcmlnaW5hbFZhbHVlID10aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAodGhpcy5vcHRpb25zLlBhdGNoRnVuY3Rpb24gJiYgdGhpcy5vcHRpb25zLlBhdGNoUGF0aCAmJiB0aGlzLmdyb3VwLmdldCh0aGlzLm9wdGlvbnMuTmFtZSkudmFsaWQpIHtcclxuICAgICAgdGhpcy5jb250cm9sVXRpbGl0eS5wYXRjaENvbnRyb2xWYWx1ZShvcmlnaW5hbFZhbHVlLHRoaXMub3B0aW9ucy5QYXRjaEZ1bmN0aW9uICx0aGlzLm9wdGlvbnMuUGF0Y2hQYXRoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVSZXF1aXJlZFZhbGlkYXRpb24gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LlJlbW92ZVJlcXVpcmVkVmFsaWRhdGlvbih0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCB0aGlzLm9wdGlvbnMpXHJcbiAgfVxyXG4gIC8vRXh0ZXJuYWwgTWV0aG9kXHJcbiAgQWRkUmVxdWlyZWRWYWxpZGF0aW9uID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRSZXF1aXJlZFZhbGlkYXRpb24odGhpcy5DaGVja0JveEZvcm1Db250cm9sLCB0aGlzLnZhbGlkYXRpb25SdWxlcywgdGhpcy5vcHRpb25zKVxyXG4gIH1cclxuXHJcbiAgLy9FeHRlcm5hbCBNZXRob2RcclxuICBSZW1vdmVDdXN0b21WYWxpZGF0aW9uID0gKEN1c3RvbVZhbGlkYXRpb24pID0+IHtcclxuICAgIHRoaXMuY29udHJvbFV0aWxpdHkuUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbih0aGlzLkNoZWNrQm94Rm9ybUNvbnRyb2wsIHRoaXMudmFsaWRhdGlvblJ1bGVzLCBDdXN0b21WYWxpZGF0aW9uKVxyXG4gIH1cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24gPSAoQ3VzdG9tVmFsaWRhdGlvbikgPT4ge1xyXG4gICAgdGhpcy5jb250cm9sVXRpbGl0eS5BZGRDdXN0b21WYWxpZGF0aW9uKHRoaXMuQ2hlY2tCb3hGb3JtQ29udHJvbCwgdGhpcy52YWxpZGF0aW9uUnVsZXMsIEN1c3RvbVZhbGlkYXRpb24pXHJcbiAgfVxyXG5cclxuICAvL0V4dGVybmFsIE1ldGhvZFxyXG4gIElzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNvbnRyb2xVdGlsaXR5LklzVmFsaWQodGhpcy5DaGVja0JveEZvcm1Db250cm9sKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJic2YtY29udHJvbCBiYnNmLWNoZWNrYm94XCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJiYnNmLWlucHV0LWNvbnRhaW5lclwiPlxyXG4gICAgPCEtLWlucHV0LS0+XHJcbiAgICA8aW5wdXQgY2xhc3M9XCJiYnNmLWNoZWNrYm94LWlucHV0IHt7b3B0aW9ucy5FeHRyYUNsYXNzZXN9fVwiIFtkaXJdPVwidGV4dERpclwiIFtjaGVja2VkXT1cIm9wdGlvbnMuVmFsdWU9PXRydWU/dHJ1ZTpudWxsXCJcclxuICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWwtZXJyb3JcIiBhcmlhLWludmFsaWQ9XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwie3tvcHRpb25zLk5hbWV9fVwiXHJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJDaGVja0JveEZvcm1Db250cm9sLmludmFsaWQgJiYgQ2hlY2tCb3hGb3JtQ29udHJvbC50b3VjaGVkXCJcclxuICAgICAgICAgICBpZD1cInt7b3B0aW9ucy5OYW1lfX1cIiB0eXBlPVwiY2hlY2tib3hcIiB2YWx1ZT1cIm9wdGlvbnMuVmFsdWU9PXRydWU/dHJ1ZTpudWxsXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLXN1YnRleHQtY29udGFpbmVyXCI+XHJcbiAgICAgIDwhLS1sYWJlbC0tPlxyXG4gICAgICA8bGFiZWwgKm5nSWY9XCIhb3B0aW9ucy5IaWRlTGFiZWxcIiBjbGFzcz1cImJic2YtbGFiZWwge3tvcHRpb25zLkxhYmVsRXh0cmFDbGFzc2VzfX1cIj5cclxuICAgICAgICB7e29wdGlvbnMuTGFiZWxWYWx1ZX19XHJcbiAgICAgICAgPCEtLUFzdGVyaXNrLS0+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIob3B0aW9ucy5TaG93QXN0ZXJpc2smJm9wdGlvbnMuSXNSZXF1aXJlZCl8fChvcHRpb25zLklzUmVxdWlyZWQpXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPio8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0ZXh0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDwhLS0gTGFiZWxEZXNjcmlwdGlvbi0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJiYnNmLWNvbnRyb2wtZGVzY1wiICpuZ0lmPVwib3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIT1udWxsXCI+e3tvcHRpb25zLkxhYmVsRGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgIDwhLS0gcmVxdWlyZWRUZXh0LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJic2YtdmFsaWRhdGlvblwiICpuZ0lmPVwiKENoZWNrQm94Rm9ybUNvbnRyb2wuaW52YWxpZCAmJiBDaGVja0JveEZvcm1Db250cm9sLnRvdWNoZWQpXCI+XHJcbiAgICAgICAgICB7e2dldEVycm9yVmFsaWRhdGlvbihDaGVja0JveEZvcm1Db250cm9sLmVycm9yc3xrZXl2YWx1ZSl9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCIoZ3JvdXAudmFsaWQmJmdyb3VwLmRpcnR5JiZncm91cC50b3VjaGVkICl8fChncm91cC51bnRvdWNoZWQmJmdyb3VwLmludmFsaWQmJmdyb3VwLmRpcnR5KSBcIj57e3Jlc2V0RXJyb3IoKX19PC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
-
import { StyleConfirmationMode } from '../../../public-api';
|
|
3
|
-
import { PagingActionMode } from '../../Shared/Enums/PagingActionMode';
|
|
4
|
-
import Swal from 'sweetalert2';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@bnsights/bbsf-utilities";
|
|
7
|
-
import * as i2 from "@ng-bootstrap/ng-bootstrap";
|
|
8
|
-
import * as i3 from "@angular/router";
|
|
9
|
-
export class ConfirmationModalComponent {
|
|
10
|
-
constructor(utilityService, modalService, router) {
|
|
11
|
-
this.utilityService = utilityService;
|
|
12
|
-
this.modalService = modalService;
|
|
13
|
-
this.router = router;
|
|
14
|
-
this.styleDanger = StyleConfirmationMode.Danger;
|
|
15
|
-
this.styleWarning = StyleConfirmationMode.Warning;
|
|
16
|
-
this.styleSuccess = StyleConfirmationMode.Success;
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
}
|
|
20
|
-
//Method used to show confirmation modal
|
|
21
|
-
showModal() {
|
|
22
|
-
this.utilityService.startBlockUI();
|
|
23
|
-
//check for options text values
|
|
24
|
-
this.setTextValues();
|
|
25
|
-
//sweetalert styles//
|
|
26
|
-
switch (this.options.StyleConfirmationMode) {
|
|
27
|
-
case this.styleSuccess: {
|
|
28
|
-
this.icon = 'success';
|
|
29
|
-
this.btnColor = '#50cd89';
|
|
30
|
-
this.iconHtml = '<i class="fa fa-check"></i>';
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
case this.styleWarning: {
|
|
34
|
-
this.icon = 'warning';
|
|
35
|
-
this.btnColor = '#ffc700';
|
|
36
|
-
this.iconHtml = '<i class="fa fa-warning"></i>';
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
case this.styleDanger: {
|
|
40
|
-
this.icon = 'error';
|
|
41
|
-
this.btnColor = '#f1416c';
|
|
42
|
-
this.iconHtml = '<i class="fa fa-close"></i>';
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
Swal.fire({
|
|
47
|
-
title: this.utilityService.getResourceValue(this.options.ConfirmationHeader),
|
|
48
|
-
text: this.options.ConfirmationBody,
|
|
49
|
-
icon: this.icon,
|
|
50
|
-
iconColor: this.btnColor,
|
|
51
|
-
confirmButtonColor: this.btnColor,
|
|
52
|
-
cancelButtonColor: '#f5f8fa',
|
|
53
|
-
cancelButtonText: this.utilityService.getResourceValue("CancelLabel"),
|
|
54
|
-
confirmButtonText: this.options.SubmitButtonText,
|
|
55
|
-
showCancelButton: this.options.showCancelButton,
|
|
56
|
-
showCloseButton: this.options.showCloseButton,
|
|
57
|
-
allowOutsideClick: false
|
|
58
|
-
}).then((result) => {
|
|
59
|
-
if (result.isConfirmed) {
|
|
60
|
-
this.submit();
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
this.utilityService.stopBlockUI();
|
|
64
|
-
}
|
|
65
|
-
setTextValues() {
|
|
66
|
-
if (!this.options.ConfirmationHeader)
|
|
67
|
-
this.options.ConfirmationHeader = this.utilityService.getResourceValue("DeleteConfirmation");
|
|
68
|
-
if (!this.options.ConfirmationBody)
|
|
69
|
-
this.options.ConfirmationBody = this.utilityService.getResourceValue("Delete_Question");
|
|
70
|
-
if (!this.options.SubmitButtonText)
|
|
71
|
-
this.options.SubmitButtonText = this.utilityService.getResourceValue("Delete");
|
|
72
|
-
if (!this.options.SuccessNotificationMessage)
|
|
73
|
-
this.options.SuccessNotificationMessage = this.utilityService.getResourceValue("DeletedSuccessfully");
|
|
74
|
-
}
|
|
75
|
-
//Modal confirmation submit function
|
|
76
|
-
submit() {
|
|
77
|
-
let submitModel = this.options.ServiceSubmitModel;
|
|
78
|
-
let submittedService = this.options.ServiceSubmitFunction.apply(null, submitModel);
|
|
79
|
-
submittedService.subscribe((result) => {
|
|
80
|
-
if (!this.options.DisableModalDismiss)
|
|
81
|
-
this.modalService.dismissAll();
|
|
82
|
-
if (!this.options.DisableSuccessNotification) {
|
|
83
|
-
if (!this.options.SuccessNotificationMessage)
|
|
84
|
-
this.options.SuccessNotificationMessage = this.utilityService.getResourceValue("DeletedSuccessfully");
|
|
85
|
-
this.utilityService.notifySuccessMessage(this.options.SuccessNotificationMessage);
|
|
86
|
-
}
|
|
87
|
-
if (this.options.OnSuccessHandler)
|
|
88
|
-
this.options.OnSuccessHandler(result);
|
|
89
|
-
if (this.options.PagingReference) {
|
|
90
|
-
let paging = this.options.PagingReference;
|
|
91
|
-
this.options.PagingActionMode == PagingActionMode.Reinitialize ? paging.ReinitializePaging() : paging.UpdatePaging();
|
|
92
|
-
}
|
|
93
|
-
this.utilityService.stopBlockUI();
|
|
94
|
-
}, (error) => {
|
|
95
|
-
if (this.options.OnErrorHandler)
|
|
96
|
-
this.options.OnErrorHandler(error);
|
|
97
|
-
else
|
|
98
|
-
this.handleError(error);
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
handleError(err) {
|
|
102
|
-
let errorMessage = '';
|
|
103
|
-
if (err.error instanceof ErrorEvent) {
|
|
104
|
-
errorMessage = `An error occurred: ${err.error.message}`;
|
|
105
|
-
if (!this.options.DisableErrorNotification)
|
|
106
|
-
this.utilityService.notifyErrorMessage();
|
|
107
|
-
}
|
|
108
|
-
else if (err.status == 401) {
|
|
109
|
-
this.router.navigate(["/Admin/account/login"]);
|
|
110
|
-
}
|
|
111
|
-
else if (err.status == 510) {
|
|
112
|
-
errorMessage = this.utilityService.getCurrentLanguage() == "en" ? "Can not delete this item as it is related to others" : "لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى";
|
|
113
|
-
if (!this.options.DisableErrorNotification)
|
|
114
|
-
this.utilityService.notifyErrorMessage(errorMessage);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;
|
|
118
|
-
console.log(errorMessage);
|
|
119
|
-
if (!this.options.DisableErrorNotification)
|
|
120
|
-
this.utilityService.notifyErrorMessage();
|
|
121
|
-
}
|
|
122
|
-
this.utilityService.stopBlockUI();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
ConfirmationModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfirmationModalComponent, deps: [{ token: i1.UtilityService }, { token: i2.NgbModal }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
126
|
-
ConfirmationModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ConfirmationModalComponent, selector: "BBSF-ConfirmationModal", inputs: { options: "options" }, viewQueries: [{ propertyName: "confirmationModal", first: true, predicate: ["confirmationModal"], descendants: true }], ngImport: i0, template: "" });
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ConfirmationModalComponent, decorators: [{
|
|
128
|
-
type: Component,
|
|
129
|
-
args: [{ selector: 'BBSF-ConfirmationModal', template: "" }]
|
|
130
|
-
}], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i2.NgbModal }, { type: i3.Router }]; }, propDecorators: { options: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], confirmationModal: [{
|
|
133
|
-
type: ViewChild,
|
|
134
|
-
args: ['confirmationModal', { static: false }]
|
|
135
|
-
}] } });
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL0NvbmZpcm1hdGlvbk1vZGFsL0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9Db25maXJtYXRpb25Nb2RhbC9Db25maXJtYXRpb25Nb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdkUsT0FBTyxJQUF3QixNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFPbkQsTUFBTSxPQUFPLDBCQUEwQjtJQVdyQyxZQUFtQixjQUE4QixFQUFVLFlBQXNCLEVBQVUsTUFBYztRQUF0RixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7UUFUekcsZ0JBQVcsR0FBMEIscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBQ2xFLGlCQUFZLEdBQTBCLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUNwRSxpQkFBWSxHQUEwQixxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFPeUMsQ0FBQztJQUU5RyxRQUFRO0lBQ1IsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNsQywrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGFBQWEs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QUMsQ0FBQztZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0I7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtTQUMzQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7d0hBOUhVLDBCQUEwQjs0R0FBMUIsMEJBQTBCLHNOQ2Z2QyxFQUFBOzRGRGVhLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFFRSx3QkFBd0I7aUpBR3pCLE9BQU87c0JBQWYsS0FBSztnQkFJNkMsaUJBQWlCO3NCQUFuRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnXHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU3R5bGVDb25maXJtYXRpb25Nb2RlIH0gZnJvbSAnLi4vLi4vLi4vcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IFBhZ2luZ0FjdGlvbk1vZGUgfSBmcm9tICcuLi8uLi9TaGFyZWQvRW51bXMvUGFnaW5nQWN0aW9uTW9kZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucyB9IGZyb20gJy4uLy4uL1NoYXJlZC9Nb2RlbHMvQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zJztcclxuaW1wb3J0IFN3YWwsIHsgU3dlZXRBbGVydEljb24gfSBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ0NvbmZpcm1hdGlvbk1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzZWxlY3RvcjogJ0JCU0YtQ29uZmlybWF0aW9uTW9kYWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucztcclxuICBzdHlsZURhbmdlcjogU3R5bGVDb25maXJtYXRpb25Nb2RlID0gU3R5bGVDb25maXJtYXRpb25Nb2RlLkRhbmdlcjtcclxuICBzdHlsZVdhcm5pbmc6IFN0eWxlQ29uZmlybWF0aW9uTW9kZSA9IFN0eWxlQ29uZmlybWF0aW9uTW9kZS5XYXJuaW5nO1xyXG4gIHN0eWxlU3VjY2VzczogU3R5bGVDb25maXJtYXRpb25Nb2RlID0gU3R5bGVDb25maXJtYXRpb25Nb2RlLlN1Y2Nlc3M7XHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybWF0aW9uTW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgY29uZmlybWF0aW9uTW9kYWw6IEVsZW1lbnRSZWY7XHJcbiAgaWNvbjogU3dlZXRBbGVydEljb247XHJcbiAgYnRuQ29sb3I6IGFueTtcclxuICBpY29uSHRtbDogc3RyaW5nO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvL01ldGhvZCB1c2VkIHRvIHNob3cgY29uZmlybWF0aW9uIG1vZGFsXHJcbiAgc2hvd01vZGFsKCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKVxyXG4gICAgLy9jaGVjayBmb3Igb3B0aW9ucyB0ZXh0IHZhbHVlc1xyXG4gICAgdGhpcy5zZXRUZXh0VmFsdWVzKCk7XHJcbiAgICAvL3N3ZWV0YWxlcnQgc3R5bGVzLy9cclxuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLlN0eWxlQ29uZmlybWF0aW9uTW9kZSkge1xyXG4gICAgICBjYXNlIHRoaXMuc3R5bGVTdWNjZXNzOiB7XHJcbiAgICAgICAgdGhpcy5pY29uID0gJ3N1Y2Nlc3MnXHJcbiAgICAgICAgdGhpcy5idG5Db2xvciA9ICcjNTBjZDg5J1xyXG4gICAgICAgIHRoaXMuaWNvbkh0bWw9JzxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+J1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgdGhpcy5zdHlsZVdhcm5pbmc6IHtcclxuICAgICAgICB0aGlzLmljb24gPSAnd2FybmluZydcclxuICAgICAgICB0aGlzLmJ0bkNvbG9yID0gJyNmZmM3MDAnXHJcbiAgICAgICAgdGhpcy5pY29uSHRtbD0nPGkgY2xhc3M9XCJmYSBmYS13YXJuaW5nXCI+PC9pPidcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIH1cclxuICAgICAgY2FzZSB0aGlzLnN0eWxlRGFuZ2VyOiB7XHJcbiAgICAgICAgdGhpcy5pY29uID0gJ2Vycm9yJ1xyXG4gICAgICAgIHRoaXMuYnRuQ29sb3IgPSAnI2YxNDE2YydcclxuICAgICAgICB0aGlzLmljb25IdG1sPSc8aSBjbGFzcz1cImZhIGZhLWNsb3NlXCI+PC9pPidcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgICAgICB0aXRsZTp0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUodGhpcy5vcHRpb25zLkNvbmZpcm1hdGlvbkhlYWRlciksXHJcbiAgICAgICAgICB0ZXh0OiB0aGlzLm9wdGlvbnMuQ29uZmlybWF0aW9uQm9keSxcclxuICAgICAgICAgIGljb246IHRoaXMuaWNvbixcclxuICAgICAgICAgIGljb25Db2xvcjp0aGlzLmJ0bkNvbG9yLFxyXG4gICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiB0aGlzLmJ0bkNvbG9yLFxyXG4gICAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6ICcjZjVmOGZhJyxcclxuICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6dGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIiksXHJcbiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDp0aGlzLm9wdGlvbnMuU3VibWl0QnV0dG9uVGV4dCxcclxuICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRoaXMub3B0aW9ucy5zaG93Q2FuY2VsQnV0dG9uLFxyXG4gICAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiAgdGhpcy5vcHRpb25zLnNob3dDbG9zZUJ1dHRvbixcclxuICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZVxyXG4gICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbmZpcm1lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnN1Ym1pdCgpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gIH1cclxuICBwcml2YXRlIHNldFRleHRWYWx1ZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5Db25maXJtYXRpb25IZWFkZXIpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5Db25maXJtYXRpb25IZWFkZXIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVDb25maXJtYXRpb25cIik7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5Db25maXJtYXRpb25Cb2R5KVxyXG4gICAgICB0aGlzLm9wdGlvbnMuQ29uZmlybWF0aW9uQm9keSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZV9RdWVzdGlvblwiKTtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLlN1Ym1pdEJ1dHRvblRleHQpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5TdWJtaXRCdXR0b25UZXh0ID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuU3VjY2Vzc05vdGlmaWNhdGlvbk1lc3NhZ2UpXHJcbiAgICAgIHRoaXMub3B0aW9ucy5TdWNjZXNzTm90aWZpY2F0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlbGV0ZWRTdWNjZXNzZnVsbHlcIik7XHJcbiAgfVxyXG4gIC8vTW9kYWwgY29uZmlybWF0aW9uIHN1Ym1pdCBmdW5jdGlvblxyXG4gIHN1Ym1pdCgpIHtcclxuICAgIGxldCBzdWJtaXRNb2RlbCA9IHRoaXMub3B0aW9ucy5TZXJ2aWNlU3VibWl0TW9kZWw7XHJcblxyXG4gICAgbGV0IHN1Ym1pdHRlZFNlcnZpY2UgPSB0aGlzLm9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uLmFwcGx5KG51bGwsIHN1Ym1pdE1vZGVsKSBhcyBPYnNlcnZhYmxlPGFueT5cclxuICAgIHN1Ym1pdHRlZFNlcnZpY2Uuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYoIXRoaXMub3B0aW9ucy5EaXNhYmxlTW9kYWxEaXNtaXNzKVxyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuRGlzYWJsZVN1Y2Nlc3NOb3RpZmljYXRpb24pIHtcclxuICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLlN1Y2Nlc3NOb3RpZmljYXRpb25NZXNzYWdlKVxyXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuU3VjY2Vzc05vdGlmaWNhdGlvbk1lc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVkU3VjY2Vzc2Z1bGx5XCIpO1xyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlTdWNjZXNzTWVzc2FnZSh0aGlzLm9wdGlvbnMuU3VjY2Vzc05vdGlmaWNhdGlvbk1lc3NhZ2UpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuT25TdWNjZXNzSGFuZGxlcilcclxuICAgICAgICAgIHRoaXMub3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyKHJlc3VsdClcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSkge1xyXG4gICAgICAgICAgbGV0IHBhZ2luZyA9IHRoaXMub3B0aW9ucy5QYWdpbmdSZWZlcmVuY2U7XHJcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9PSBQYWdpbmdBY3Rpb25Nb2RlLlJlaW5pdGlhbGl6ZSA/IHBhZ2luZy5SZWluaXRpYWxpemVQYWdpbmcoKSA6IHBhZ2luZy5VcGRhdGVQYWdpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLk9uRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgdGhpcy5vcHRpb25zLk9uRXJyb3JIYW5kbGVyKGVycm9yKVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcclxuICAgIGlmIChlcnIuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSB7XHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBBbiBlcnJvciBvY2N1cnJlZDogJHtlcnIuZXJyb3IubWVzc2FnZX1gO1xyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlRXJyb3JOb3RpZmljYXRpb24pXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoKVxyXG4gICAgfVxyXG5cclxuICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDAxKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9BZG1pbi9hY2NvdW50L2xvZ2luXCJdKVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA1MTApIHtcclxuICAgICAgZXJyb3JNZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKT09XCJlblwiPyBcIkNhbiBub3QgZGVsZXRlIHRoaXMgaXRlbSBhcyBpdCBpcyByZWxhdGVkIHRvIG90aGVyc1wiOlwi2YTYpyDZitmF2YPZhiDYrdiw2YEg2YfYsNinINin2YTYudmG2LXYsSDZhNij2YbZhyDZhdix2KrYqNi3INio2LnZhtin2LXYsSDYo9iu2LHZiVwiO1xyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlRXJyb3JOb3RpZmljYXRpb24pXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGBTZXJ2ZXIgcmV0dXJuZWQgY29kZTogJHtlcnIuc3RhdHVzfSwgZXJyb3IgbWVzc2FnZSBpczogJHtlcnIubWVzc2FnZX1gO1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvck1lc3NhZ2UpO1xyXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5EaXNhYmxlRXJyb3JOb3RpZmljYXRpb24pXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoKVxyXG4gICAgfVxyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIiJdfQ==
|