@bnsights/bbsf-controls 1.0.85 → 1.0.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/bnsights-bbsf-controls-1.0.87.tgz +0 -0
- package/bnsights-bbsf-controls.d.ts +1 -1
- package/esm2020/bnsights-bbsf-controls.mjs +5 -0
- package/esm2020/lib/Shared/Directives/template-name.directive.mjs +18 -0
- package/{esm2015/lib/Shared/Enums/CalendarView.js → esm2020/lib/Shared/Enums/CalendarView.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/ControlLayout.js → esm2020/lib/Shared/Enums/ControlLayout.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/Countries.js → esm2020/lib/Shared/Enums/Countries.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/Enums.js → esm2020/lib/Shared/Enums/Enums.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/FileType.js → esm2020/lib/Shared/Enums/FileType.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/FilterType.js → esm2020/lib/Shared/Enums/FilterType.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/FontSize.js → esm2020/lib/Shared/Enums/FontSize.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/ForceDirection.js → esm2020/lib/Shared/Enums/ForceDirection.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/IconPosition.js → esm2020/lib/Shared/Enums/IconPosition.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/ImageType.js → esm2020/lib/Shared/Enums/ImageType.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/InputType.js → esm2020/lib/Shared/Enums/InputType.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/Insert.js → esm2020/lib/Shared/Enums/Insert.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/LanguageMode.js → esm2020/lib/Shared/Enums/LanguageMode.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/LanguageValidation.js → esm2020/lib/Shared/Enums/LanguageValidation.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/Misc.js → esm2020/lib/Shared/Enums/Misc.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/PagingActionMode.js → esm2020/lib/Shared/Enums/PagingActionMode.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/Para.js → esm2020/lib/Shared/Enums/Para.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/PickerType.js → esm2020/lib/Shared/Enums/PickerType.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/SelectMode.js → esm2020/lib/Shared/Enums/SelectMode.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/StartView.js → esm2020/lib/Shared/Enums/StartView.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/Style.js → esm2020/lib/Shared/Enums/Style.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/StyleConfirmationMode.js → esm2020/lib/Shared/Enums/StyleConfirmationMode.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/TagInputView.js → esm2020/lib/Shared/Enums/TagInputView.mjs} +0 -0
- package/{esm2015/lib/Shared/Enums/menu-list-enum.js → esm2020/lib/Shared/Enums/menu-list-enum.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/Attribute.js → esm2020/lib/Shared/Models/Attribute.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/AutocompleteDTO.js → esm2020/lib/Shared/Models/AutocompleteDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/AutocompleteOptions.js → esm2020/lib/Shared/Models/AutocompleteOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/CalendarEventDTO.js → esm2020/lib/Shared/Models/CalendarEventDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/CalendarOptions.js → esm2020/lib/Shared/Models/CalendarOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/CancelDTO.js → esm2020/lib/Shared/Models/CancelDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/CaptchaStyle.js → esm2020/lib/Shared/Models/CaptchaStyle.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/CheckBoxOptions.js → esm2020/lib/Shared/Models/CheckBoxOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/ConfirmationModalOptions.js → esm2020/lib/Shared/Models/ConfirmationModalOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/ControlOptionsBase.js → esm2020/lib/Shared/Models/ControlOptionsBase.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/CustomValidation.js → esm2020/lib/Shared/Models/CustomValidation.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/DropdownListItem.js → esm2020/lib/Shared/Models/DropdownListItem.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/DropdownOptions.js → esm2020/lib/Shared/Models/DropdownOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/EditPersonalImage.js → esm2020/lib/Shared/Models/EditPersonalImage.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/EnglishArabicDTO.js → esm2020/lib/Shared/Models/EnglishArabicDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/FileDTO.js → esm2020/lib/Shared/Models/FileDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/FileUploadModel.js → esm2020/lib/Shared/Models/FileUploadModel.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/FileUploadOptions.js → esm2020/lib/Shared/Models/FileUploadOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/FilterItem.js → esm2020/lib/Shared/Models/FilterItem.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/FormOptions.js → esm2020/lib/Shared/Models/FormOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/HtmlEditorOptions.js → esm2020/lib/Shared/Models/HtmlEditorOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/ImageUploadOptions.js → esm2020/lib/Shared/Models/ImageUploadOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MapAutoCompleteOptions.js → esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MapAutocompleteDTO.js → esm2020/lib/Shared/Models/MapAutocompleteDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MultiLingualHtmlEditorOptions.js → esm2020/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MultiLingualTextAreaOptions.js → esm2020/lib/Shared/Models/MultiLingualTextAreaOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MultilingualControlOptionsBase.js → esm2020/lib/Shared/Models/MultilingualControlOptionsBase.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MultilingualTextBoxOptions.js → esm2020/lib/Shared/Models/MultilingualTextBoxOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/MultipleFileUploadModel.js → esm2020/lib/Shared/Models/MultipleFileUploadModel.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/PagingDTO.js → esm2020/lib/Shared/Models/PagingDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/PagingOptions.js → esm2020/lib/Shared/Models/PagingOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/PagingPayload.js → esm2020/lib/Shared/Models/PagingPayload.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/PhoneOptions.js → esm2020/lib/Shared/Models/PhoneOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/ProfileImageUploadOptions.js → esm2020/lib/Shared/Models/ProfileImageUploadOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/ProfilePictureDTO.js → esm2020/lib/Shared/Models/ProfilePictureDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/RadioButtonItem.js → esm2020/lib/Shared/Models/RadioButtonItem.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/RadioButtonOptions.js → esm2020/lib/Shared/Models/RadioButtonOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/RangeNumber.js → esm2020/lib/Shared/Models/RangeNumber.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/Recaptcha.js → esm2020/lib/Shared/Models/Recaptcha.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/RecaptchaOptions.js → esm2020/lib/Shared/Models/RecaptchaOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/RepeaterField.js → esm2020/lib/Shared/Models/RepeaterField.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/RepeaterOptions.js → esm2020/lib/Shared/Models/RepeaterOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/SaveDTO.js → esm2020/lib/Shared/Models/SaveDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/TagsInputDTO.js → esm2020/lib/Shared/Models/TagsInputDTO.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/TagsInputOptions.js → esm2020/lib/Shared/Models/TagsInputOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/TextAreaOptions.js → esm2020/lib/Shared/Models/TextAreaOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/TextBoxOptions.js → esm2020/lib/Shared/Models/TextBoxOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/ToggleslideOptions.js → esm2020/lib/Shared/Models/ToggleslideOptions.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/UploadPersonalImage.js → esm2020/lib/Shared/Models/UploadPersonalImage.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/bread-crumb.js → esm2020/lib/Shared/Models/bread-crumb.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/control-filter-Item.js → esm2020/lib/Shared/Models/control-filter-Item.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/datePickerOptions.js → esm2020/lib/Shared/Models/datePickerOptions.mjs} +1 -1
- package/{esm2015/lib/Shared/Models/filter-options.js → esm2020/lib/Shared/Models/filter-options.mjs} +0 -0
- package/{esm2015/lib/Shared/Models/page-header-options.js → esm2020/lib/Shared/Models/page-header-options.mjs} +0 -0
- package/esm2020/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -0
- package/esm2020/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -0
- package/esm2020/lib/Shared/components/app-base-component.mjs +198 -0
- package/esm2020/lib/Shared/components/ng-tag-input.mjs +336 -0
- package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs} +0 -0
- package/esm2020/lib/Shared/default_intl.mjs +29 -0
- package/esm2020/lib/Shared/services/ControlUtility.mjs +162 -0
- package/esm2020/lib/Shared/services/GlobalSettings.service.mjs +30 -0
- package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
- package/esm2020/lib/Shared/services/render-component-service.service.mjs +30 -0
- package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +137 -0
- package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +245 -0
- package/esm2020/lib/controls/Calendar/Calendar.component.mjs +172 -0
- package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +114 -0
- package/esm2020/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -0
- package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +217 -0
- package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +179 -0
- package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +453 -0
- package/esm2020/lib/controls/Form/Form.component.mjs +101 -0
- package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +223 -0
- package/esm2020/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
- package/esm2020/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +325 -0
- package/esm2020/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
- package/esm2020/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +427 -0
- package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +426 -0
- package/esm2020/lib/controls/Paging/JwPagination.component.mjs +156 -0
- package/esm2020/lib/controls/Paging/Paging.component.mjs +312 -0
- package/esm2020/lib/controls/Phone/Phone.component.mjs +124 -0
- package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +354 -0
- package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +106 -0
- package/esm2020/lib/controls/Recaptcha/Recaptcha.component.mjs +132 -0
- package/esm2020/lib/controls/Repeater/repeater/repeater.component.mjs +125 -0
- package/esm2020/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -0
- package/esm2020/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -0
- package/esm2020/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -0
- package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +268 -0
- package/esm2020/lib/controls/TextArea/TextArea.component.mjs +192 -0
- package/esm2020/lib/controls/TextBox/TextBox.component.mjs +266 -0
- package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +84 -0
- package/esm2020/lib/controls/bbsf-controls.module.mjs +401 -0
- package/esm2020/lib/controls/page-header-component/page-header-component.component.mjs +37 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{bnsights-bbsf-controls.js → bnsights-bbsf-controls.mjs} +1872 -1625
- package/fesm2015/bnsights-bbsf-controls.mjs.map +1 -0
- package/fesm2020/bnsights-bbsf-controls.mjs +8938 -0
- package/fesm2020/bnsights-bbsf-controls.mjs.map +1 -0
- package/lib/Shared/Directives/template-name.directive.d.ts +3 -0
- package/lib/Shared/Models/datePickerOptions.d.ts +1 -1
- package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +3 -0
- package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +3 -0
- package/lib/Shared/components/app-base-component.d.ts +3 -0
- package/lib/Shared/components/ng-tag-input.d.ts +3 -0
- package/lib/Shared/default_intl.d.ts +3 -0
- package/lib/Shared/services/ControlUtility.d.ts +3 -0
- package/lib/Shared/services/GlobalSettings.service.d.ts +3 -0
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +3 -0
- package/lib/Shared/services/render-component-service.service.d.ts +3 -0
- package/lib/Shared/services/validationErrorMassage.service.d.ts +3 -0
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +4 -0
- package/lib/controls/Calendar/Calendar.component.d.ts +3 -0
- package/lib/controls/CheckBox/CheckBox.component.d.ts +4 -0
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +3 -0
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +8 -2
- package/lib/controls/DropdownList/DropdownList.component.d.ts +4 -0
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +5 -0
- package/lib/controls/Form/Form.component.d.ts +3 -0
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +4 -0
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +3 -0
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +3 -0
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +3 -0
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +3 -0
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +3 -0
- package/lib/controls/Paging/JwPagination.component.d.ts +3 -0
- package/lib/controls/Paging/Paging.component.d.ts +3 -0
- package/lib/controls/Phone/Phone.component.d.ts +7 -1
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +3 -0
- package/lib/controls/RadioButton/RadioButton.component.d.ts +3 -0
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +4 -0
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +3 -0
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +3 -0
- package/lib/controls/TagsInput/TagsInput.component.d.ts +4 -0
- package/lib/controls/TextArea/TextArea.component.d.ts +4 -0
- package/lib/controls/TextBox/TextBox.component.d.ts +4 -0
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +4 -0
- package/lib/controls/bbsf-controls.module.d.ts +74 -0
- package/lib/controls/page-header-component/page-header-component.component.d.ts +3 -0
- package/package.json +20 -8
- package/bnsights-bbsf-controls-1.0.85.tgz +0 -0
- package/bnsights-bbsf-controls.metadata.json +0 -1
- package/bundles/bnsights-bbsf-controls.umd.js +0 -9326
- package/bundles/bnsights-bbsf-controls.umd.js.map +0 -1
- package/esm2015/bnsights-bbsf-controls.js +0 -6
- package/esm2015/lib/Shared/Directives/template-name.directive.js +0 -18
- package/esm2015/lib/Shared/Pipes/bbsf-date-time.pipe.js +0 -20
- package/esm2015/lib/Shared/Pipes/bbsf-date.pipe.js +0 -20
- package/esm2015/lib/Shared/components/app-base-component.js +0 -198
- package/esm2015/lib/Shared/components/ng-tag-input.js +0 -323
- package/esm2015/lib/Shared/default_intl.js +0 -29
- package/esm2015/lib/Shared/services/ControlUtility.js +0 -164
- package/esm2015/lib/Shared/services/GlobalSettings.service.js +0 -28
- package/esm2015/lib/Shared/services/OnPagingFiltersChange.service.js +0 -22
- package/esm2015/lib/Shared/services/render-component-service.service.js +0 -30
- package/esm2015/lib/Shared/services/validationErrorMassage.service.js +0 -137
- package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +0 -248
- package/esm2015/lib/controls/Calendar/Calendar.component.js +0 -176
- package/esm2015/lib/controls/CheckBox/CheckBox.component.js +0 -114
- package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +0 -139
- package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +0 -215
- package/esm2015/lib/controls/DropdownList/DropdownList.component.js +0 -178
- package/esm2015/lib/controls/FileUplaod/FileUplaod.component.js +0 -347
- package/esm2015/lib/controls/Form/Form.component.js +0 -106
- package/esm2015/lib/controls/HtmlEditor/HtmlEditor.component.js +0 -222
- package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +0 -347
- package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +0 -325
- package/esm2015/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.js +0 -429
- package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +0 -430
- package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +0 -429
- package/esm2015/lib/controls/Paging/JwPagination.component.js +0 -129
- package/esm2015/lib/controls/Paging/Paging.component.js +0 -312
- package/esm2015/lib/controls/Phone/Phone.component.js +0 -119
- package/esm2015/lib/controls/ProfileImageUploader/ProfileImageUploader.component.js +0 -349
- package/esm2015/lib/controls/RadioButton/RadioButton.component.js +0 -108
- package/esm2015/lib/controls/Recaptcha/Recaptcha.component.js +0 -131
- package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +0 -117
- package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +0 -748
- package/esm2015/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.js +0 -19
- package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +0 -108
- package/esm2015/lib/controls/TagsInput/TagsInput.component.js +0 -268
- package/esm2015/lib/controls/TextArea/TextArea.component.js +0 -191
- package/esm2015/lib/controls/TextBox/TextBox.component.js +0 -262
- package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +0 -83
- package/esm2015/lib/controls/bbsf-controls.module.js +0 -243
- package/esm2015/lib/controls/page-header-component/page-header-component.component.js +0 -32
- package/fesm2015/bnsights-bbsf-controls.js.map +0 -1
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { TagInputView } from '../Enums/TagInputView';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "ngx-intl-tel-input";
|
|
8
|
+
import * as i4 from "ngx-bootstrap/typeahead";
|
|
9
|
+
const noop = () => { };
|
|
10
|
+
const TAGS_INPUT_TEMPLATE = `
|
|
11
|
+
|
|
12
|
+
<div class="tags-input">
|
|
13
|
+
<span class="tags-input__tag label label-primary badge badge-primary" *ngFor="let tag of tags">
|
|
14
|
+
|
|
15
|
+
<span [ngSwitch]="ViewMode">
|
|
16
|
+
<span *ngSwitchCase="tagInputViewEnum.WithImage">
|
|
17
|
+
<img style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
|
|
18
|
+
src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
|
|
19
|
+
</span>
|
|
20
|
+
|
|
21
|
+
<span *ngSwitchCase="tagInputViewEnum.WithInitial">
|
|
22
|
+
<div class="user-initials">{{calculateInitials(tag.name)}}</div>
|
|
23
|
+
</span>
|
|
24
|
+
|
|
25
|
+
<span *ngSwitchDefault>
|
|
26
|
+
</span>
|
|
27
|
+
|
|
28
|
+
</span>
|
|
29
|
+
{{tag[displayField]}}
|
|
30
|
+
<span *ngIf="isDeleteable(tag)" role="button" class="tags-input__tag-remove-btn" (click)="removeTag(tag)"
|
|
31
|
+
(touch)="removeTag(tag)">
|
|
32
|
+
<span aria-hidden="true">×</span>
|
|
33
|
+
<span class="sr-only">Close</span>
|
|
34
|
+
</span>
|
|
35
|
+
</span>
|
|
36
|
+
|
|
37
|
+
<input *ngIf="options === null; else withTypeahead" class="tags-input__input-field" type="text"
|
|
38
|
+
[placeholder]="getPlaceholder()" name="tags" (keyup.enter)="addTag(tagInput)"
|
|
39
|
+
(keydown.backspace)="removeLastTag(tagInput)" [disabled]="!canAddTags || maximumOfTagsReached()"
|
|
40
|
+
[hidden]="!canAddTags || maximumOfTagsReached()" #tagInput />
|
|
41
|
+
|
|
42
|
+
<ng-template #withTypeahead>
|
|
43
|
+
<span [ngSwitch]="ViewMode">
|
|
44
|
+
<span *ngSwitchCase="tagInputViewEnum.WithImage">
|
|
45
|
+
<input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
|
|
46
|
+
name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
|
|
47
|
+
[typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
|
|
48
|
+
(typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
|
|
49
|
+
[typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
|
|
50
|
+
[typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
|
|
51
|
+
[disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
|
|
52
|
+
(blur)="onBlur()" autocomplete="off"
|
|
53
|
+
#tagInput />
|
|
54
|
+
</span>
|
|
55
|
+
|
|
56
|
+
<span *ngSwitchCase="tagInputViewEnum.WithoutImage">
|
|
57
|
+
<input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
|
|
58
|
+
name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
|
|
59
|
+
[typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
|
|
60
|
+
(typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
|
|
61
|
+
[typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
|
|
62
|
+
[typeaheadItemTemplate]="itemTemplateWithoutImage"
|
|
63
|
+
[typeaheadOptionsInScrollableView]="scrollableOptionsInView"
|
|
64
|
+
[disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
|
|
65
|
+
(blur)="onBlur()" autocomplete="off"
|
|
66
|
+
#tagInput />
|
|
67
|
+
</span>
|
|
68
|
+
|
|
69
|
+
<span *ngSwitchCase="tagInputViewEnum.WithInitial">
|
|
70
|
+
<input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
|
|
71
|
+
name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
|
|
72
|
+
[typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
|
|
73
|
+
(typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
|
|
74
|
+
[typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
|
|
75
|
+
[typeaheadItemTemplate]="itemTemplateWithoutInitial"
|
|
76
|
+
[typeaheadOptionsInScrollableView]="scrollableOptionsInView"
|
|
77
|
+
[disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
|
|
78
|
+
(blur)="onBlur()" autocomplete="off"
|
|
79
|
+
#tagInput />
|
|
80
|
+
</span>
|
|
81
|
+
|
|
82
|
+
<span *ngSwitchDefault>
|
|
83
|
+
<input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
|
|
84
|
+
name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
|
|
85
|
+
[typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
|
|
86
|
+
(typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
|
|
87
|
+
[typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
|
|
88
|
+
[typeaheadItemTemplate]="itemTemplateWithoutImage"
|
|
89
|
+
[typeaheadOptionsInScrollableView]="scrollableOptionsInView"
|
|
90
|
+
[disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
|
|
91
|
+
(blur)="onBlur()" autocomplete="off"
|
|
92
|
+
#tagInput />
|
|
93
|
+
</span>
|
|
94
|
+
|
|
95
|
+
</span>
|
|
96
|
+
|
|
97
|
+
</ng-template>
|
|
98
|
+
|
|
99
|
+
<ng-template #itemTemplateWithImage let-model="item" let-index="index">
|
|
100
|
+
<img
|
|
101
|
+
style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
|
|
102
|
+
src="{{(model.imageURL?model.imageURL:defaultImageURL)}}" />
|
|
103
|
+
<div>
|
|
104
|
+
<a [innerHTML]="model.name"></a>
|
|
105
|
+
<p *ngIf="showDescription">
|
|
106
|
+
{{model.description}}
|
|
107
|
+
</p>
|
|
108
|
+
</div>
|
|
109
|
+
</ng-template>
|
|
110
|
+
|
|
111
|
+
<ng-template #itemTemplateWithoutImage let-model="item" let-index="index">
|
|
112
|
+
<div>
|
|
113
|
+
<a [innerHTML]="model.name"></a>
|
|
114
|
+
<p *ngIf="showDescription">
|
|
115
|
+
{{model.description}}
|
|
116
|
+
</p>
|
|
117
|
+
</div>
|
|
118
|
+
</ng-template>
|
|
119
|
+
|
|
120
|
+
<ng-template #itemTemplateWithoutInitial let-model="item" let-index="index">
|
|
121
|
+
<div class="user-image">
|
|
122
|
+
<div class="user-initials">{{calculateInitials(model.name)}}</div>
|
|
123
|
+
</div>
|
|
124
|
+
<div>
|
|
125
|
+
<a [innerHTML]="model.name"></a>
|
|
126
|
+
<p *ngIf="showDescription">
|
|
127
|
+
{{model.description}}
|
|
128
|
+
</p>
|
|
129
|
+
</div>
|
|
130
|
+
</ng-template>
|
|
131
|
+
</div>
|
|
132
|
+
`;
|
|
133
|
+
const TAGS_INPUT_STYLE = `
|
|
134
|
+
:host {
|
|
135
|
+
overflow: auto;
|
|
136
|
+
white-space: nowrap;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.tags-input {
|
|
140
|
+
align-items: center;
|
|
141
|
+
display: flex;
|
|
142
|
+
flex-wrap: wrap;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.tags-input__tag {
|
|
146
|
+
display: inline-block;
|
|
147
|
+
margin-bottom: 2px;
|
|
148
|
+
margin-right: 5px;
|
|
149
|
+
padding-right: 0.3em;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.tags-input__tag-remove-btn {
|
|
153
|
+
cursor: pointer;
|
|
154
|
+
display: inline-block;
|
|
155
|
+
font-size: 12px;
|
|
156
|
+
margin: -3px 0 0 3px;
|
|
157
|
+
padding: 0;
|
|
158
|
+
vertical-align: top;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.tags-input__input-field {
|
|
162
|
+
border: none;
|
|
163
|
+
flex-grow: 1;
|
|
164
|
+
outline: none;
|
|
165
|
+
}
|
|
166
|
+
`;
|
|
167
|
+
const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
|
|
168
|
+
provide: NG_VALUE_ACCESSOR,
|
|
169
|
+
useExisting: forwardRef(() => BTagsInputComponent),
|
|
170
|
+
multi: true
|
|
171
|
+
};
|
|
172
|
+
export class BTagsInputComponent {
|
|
173
|
+
constructor() {
|
|
174
|
+
this.selected = '';
|
|
175
|
+
this.tags = [];
|
|
176
|
+
this.onTouchedCallback = noop;
|
|
177
|
+
this.onChangeCallback = noop;
|
|
178
|
+
this.tagInputViewEnum = TagInputView;
|
|
179
|
+
this.removeLastOnBackspace = false;
|
|
180
|
+
this.canDeleteTags = true;
|
|
181
|
+
this.canAddTags = true;
|
|
182
|
+
this.ViewMode = TagInputView.WithoutImage;
|
|
183
|
+
this.placeholder = '';
|
|
184
|
+
this.showDescription = true;
|
|
185
|
+
this.options = null;
|
|
186
|
+
this.defaultImageURL = null;
|
|
187
|
+
this.displayField = 'name';
|
|
188
|
+
this.minLengthBeforeOptions = 1;
|
|
189
|
+
this.scrollableOptions = false;
|
|
190
|
+
this.scrollableOptionsInView = 5;
|
|
191
|
+
this.onTagsChanged = new EventEmitter();
|
|
192
|
+
this.onMaxTagsReached = new EventEmitter();
|
|
193
|
+
this.onNoOptionsMatch = new EventEmitter();
|
|
194
|
+
this.onBlurInput = new EventEmitter();
|
|
195
|
+
}
|
|
196
|
+
getPlaceholder() {
|
|
197
|
+
if (this.tags && this.tags.length > 0) {
|
|
198
|
+
return '';
|
|
199
|
+
}
|
|
200
|
+
return this.placeholder;
|
|
201
|
+
}
|
|
202
|
+
tagsChanged(type, tag) {
|
|
203
|
+
this.onChangeCallback(this.tags);
|
|
204
|
+
this.onTagsChanged.emit({
|
|
205
|
+
change: type,
|
|
206
|
+
tag: tag
|
|
207
|
+
});
|
|
208
|
+
if (this.maximumOfTagsReached()) {
|
|
209
|
+
this.onMaxTagsReached.emit();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
removeLastTag(tagInput) {
|
|
213
|
+
if (!this.removeLastOnBackspace || !this.tags?.length) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (tagInput.value === '') {
|
|
217
|
+
this.removeTag(this.tags[this.tags.length - 1]);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
addTag(tagInput) {
|
|
221
|
+
if (tagInput.value.trim() !== '') {
|
|
222
|
+
let tag = {
|
|
223
|
+
[this.displayField]: tagInput.value
|
|
224
|
+
};
|
|
225
|
+
this.addPredefinedTag(tag);
|
|
226
|
+
}
|
|
227
|
+
tagInput.value = '';
|
|
228
|
+
}
|
|
229
|
+
addPredefinedTag(tag) {
|
|
230
|
+
if (this.tags == null)
|
|
231
|
+
this.tags = [];
|
|
232
|
+
if (!this.maximumOfTagsReached()) {
|
|
233
|
+
this.tags.push(tag);
|
|
234
|
+
this.tagsChanged('add', tag);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
removeTag(tagToRemove) {
|
|
238
|
+
if (!this.isDeleteable(tagToRemove)) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
this.tags = this.tags.filter(tag => tagToRemove !== tag);
|
|
242
|
+
this.tagsChanged('remove', tagToRemove);
|
|
243
|
+
}
|
|
244
|
+
maximumOfTagsReached() {
|
|
245
|
+
return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;
|
|
246
|
+
}
|
|
247
|
+
isDeleteable(tag) {
|
|
248
|
+
if (typeof tag.deleteable !== "undefined" && !tag.deleteable) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
return this.canDeleteTags;
|
|
252
|
+
}
|
|
253
|
+
typeaheadOnSelect(e) {
|
|
254
|
+
if (typeof e.item === 'string') {
|
|
255
|
+
this.addPredefinedTag({
|
|
256
|
+
[this.displayField]: e.value
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
this.addPredefinedTag(e.item);
|
|
261
|
+
}
|
|
262
|
+
this.selected = '';
|
|
263
|
+
}
|
|
264
|
+
typeaheadOnNoMatch(e) {
|
|
265
|
+
if (typeof this.onNoOptionsMatch !== 'undefined') {
|
|
266
|
+
this.onNoOptionsMatch.emit(e);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
writeValue(value) {
|
|
270
|
+
if (value !== this.tags) {
|
|
271
|
+
this.tags = value;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
registerOnChange(fn) {
|
|
275
|
+
this.onChangeCallback = fn;
|
|
276
|
+
}
|
|
277
|
+
registerOnTouched(fn) {
|
|
278
|
+
this.onTouchedCallback = fn;
|
|
279
|
+
}
|
|
280
|
+
calculateInitials(name) {
|
|
281
|
+
var fullName = name.split(' ');
|
|
282
|
+
var initials = "";
|
|
283
|
+
if (fullName.length > 1)
|
|
284
|
+
initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
|
|
285
|
+
else
|
|
286
|
+
initials = fullName.shift().charAt(0);
|
|
287
|
+
return initials.toUpperCase();
|
|
288
|
+
}
|
|
289
|
+
onBlur() {
|
|
290
|
+
this.onBlurInput.emit();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
BTagsInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BTagsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
294
|
+
BTagsInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: BTagsInputComponent, selector: "b-tags-input", inputs: { maxTags: "maxTags", removeLastOnBackspace: "removeLastOnBackspace", canDeleteTags: "canDeleteTags", canAddTags: "canAddTags", ViewMode: "ViewMode", placeholder: "placeholder", showDescription: "showDescription", options: "options", defaultImageURL: "defaultImageURL", minLengthBeforeOptions: "minLengthBeforeOptions", scrollableOptions: "scrollableOptions", scrollableOptionsInView: "scrollableOptionsInView" }, outputs: { onTagsChanged: "onTagsChanged", onMaxTagsReached: "onMaxTagsReached", onNoOptionsMatch: "onNoOptionsMatch", onBlurInput: "onBlurInput" }, providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR], ngImport: i0, template: "\n\n<div class=\"tags-input\">\n<span class=\"tags-input__tag label label-primary badge badge-primary\" *ngFor=\"let tag of tags\">\n\n<span [ngSwitch]=\"ViewMode\">\n<span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\n<img style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\nsrc=\"{{(tag.imageURL?tag.imageURL:defaultImageURL)}}\" />\n</span>\n\n<span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\n<div class=\"user-initials\">{{calculateInitials(tag.name)}}</div>\n</span>\n\n<span *ngSwitchDefault>\n</span>\n\n</span>\n {{tag[displayField]}}\n <span *ngIf=\"isDeleteable(tag)\" role=\"button\" class=\"tags-input__tag-remove-btn\" (click)=\"removeTag(tag)\"\n (touch)=\"removeTag(tag)\">\n <span aria-hidden=\"true\">×</span>\n <span class=\"sr-only\">Close</span>\n </span>\n</span>\n\n<input *ngIf=\"options === null; else withTypeahead\" class=\"tags-input__input-field\" type=\"text\"\n [placeholder]=\"getPlaceholder()\" name=\"tags\" (keyup.enter)=\"addTag(tagInput)\"\n (keydown.backspace)=\"removeLastTag(tagInput)\" [disabled]=\"!canAddTags || maximumOfTagsReached()\"\n [hidden]=\"!canAddTags || maximumOfTagsReached()\" #tagInput />\n\n<ng-template #withTypeahead>\n <span [ngSwitch]=\"ViewMode\">\n <span *ngSwitchCase=\"tagInputViewEnum.WithImage\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithImage\" [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchCase=\"tagInputViewEnum.WithoutImage\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchCase=\"tagInputViewEnum.WithInitial\">\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutInitial\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n <span *ngSwitchDefault>\n <input *ngIf=\"(options !== null)\" class=\"tags-input__input-field\" type=\"text\" [placeholder]=\"getPlaceholder()\"\n name=\"tags\" (keydown.backspace)=\"removeLastTag(tagInput)\" [(ngModel)]=\"selected\" [typeahead]=\"options\"\n [typeaheadOptionField]=\"displayField\" (typeaheadOnSelect)=\"typeaheadOnSelect($event)\"\n (typeaheadNoResults)=\"typeaheadOnNoMatch($event)\" [typeaheadMinLength]=\"minLengthBeforeOptions\"\n [typeaheadScrollable]=\"scrollableOptions\" [typeaheadLatinize]=\"true\"\n [typeaheadItemTemplate]=\"itemTemplateWithoutImage\"\n [typeaheadOptionsInScrollableView]=\"scrollableOptionsInView\"\n [disabled]=\"!canAddTags || maximumOfTagsReached()\" [hidden]=\"!canAddTags || maximumOfTagsReached()\"\n (blur)=\"onBlur()\" autocomplete=\"off\"\n #tagInput />\n </span>\n\n </span>\n\n</ng-template>\n\n<ng-template #itemTemplateWithImage let-model=\"item\" let-index=\"index\">\n <img\n style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\"\n src=\"{{(model.imageURL?model.imageURL:defaultImageURL)}}\" />\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n\n<ng-template #itemTemplateWithoutImage let-model=\"item\" let-index=\"index\">\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n\n<ng-template #itemTemplateWithoutInitial let-model=\"item\" let-index=\"index\">\n <div class=\"user-image\">\n <div class=\"user-initials\">{{calculateInitials(model.name)}}</div>\n </div>\n <div>\n <a [innerHTML]=\"model.name\"></a>\n <p *ngIf=\"showDescription\">\n {{model.description}}\n </p>\n </div>\n</ng-template>\n</div>\n", isInline: true, styles: [":host{overflow:auto;white-space:nowrap}.tags-input{align-items:center;display:flex;flex-wrap:wrap}.tags-input__tag{display:inline-block;margin-bottom:2px;margin-right:5px;padding-right:.3em}.tags-input__tag-remove-btn{cursor:pointer;display:inline-block;font-size:12px;margin:-3px 0 0 3px;padding:0;vertical-align:top}.tags-input__input-field{border:none;flex-grow:1;outline:none}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.TypeaheadDirective, selector: "[typeahead]", inputs: ["isAnimated", "typeaheadLatinize", "typeaheadSingleWords", "typeaheadWordDelimiters", "typeaheadMultipleSearchDelimiters", "typeaheadPhraseDelimiters", "typeaheadScrollable", "typeaheadOptionsInScrollableView", "typeaheadSelectFirstItem", "typeaheadIsFirstItemActive", "dropup", "typeaheadOptionsLimit", "typeaheadMinLength", "typeaheadWaitMs", "typeaheadAsync", "typeahead", "adaptivePosition", "typeaheadOptionField", "typeaheadGroupField", "typeaheadOrderBy", "typeaheadMultipleSearch", "typeaheadItemTemplate", "optionsListTemplate", "typeaheadHideResultsOnBlur", "container"], outputs: ["typeaheadLoading", "typeaheadNoResults", "typeaheadOnSelect", "typeaheadOnBlur"], exportAs: ["bs-typeahead"] }] });
|
|
295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: BTagsInputComponent, decorators: [{
|
|
296
|
+
type: Component,
|
|
297
|
+
args: [{
|
|
298
|
+
selector: 'b-tags-input',
|
|
299
|
+
template: TAGS_INPUT_TEMPLATE,
|
|
300
|
+
styles: [TAGS_INPUT_STYLE],
|
|
301
|
+
providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR]
|
|
302
|
+
}]
|
|
303
|
+
}], propDecorators: { maxTags: [{
|
|
304
|
+
type: Input
|
|
305
|
+
}], removeLastOnBackspace: [{
|
|
306
|
+
type: Input
|
|
307
|
+
}], canDeleteTags: [{
|
|
308
|
+
type: Input
|
|
309
|
+
}], canAddTags: [{
|
|
310
|
+
type: Input
|
|
311
|
+
}], ViewMode: [{
|
|
312
|
+
type: Input
|
|
313
|
+
}], placeholder: [{
|
|
314
|
+
type: Input
|
|
315
|
+
}], showDescription: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], options: [{
|
|
318
|
+
type: Input
|
|
319
|
+
}], defaultImageURL: [{
|
|
320
|
+
type: Input
|
|
321
|
+
}], minLengthBeforeOptions: [{
|
|
322
|
+
type: Input
|
|
323
|
+
}], scrollableOptions: [{
|
|
324
|
+
type: Input
|
|
325
|
+
}], scrollableOptionsInView: [{
|
|
326
|
+
type: Input
|
|
327
|
+
}], onTagsChanged: [{
|
|
328
|
+
type: Output
|
|
329
|
+
}], onMaxTagsReached: [{
|
|
330
|
+
type: Output
|
|
331
|
+
}], onNoOptionsMatch: [{
|
|
332
|
+
type: Output
|
|
333
|
+
}], onBlurInput: [{
|
|
334
|
+
type: Output
|
|
335
|
+
}] } });
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdGFnLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL25nLXRhZy1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNkMsTUFBTSxlQUFlLENBQUM7QUFDOUgsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBRXJELE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUV2QixNQUFNLG1CQUFtQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQTBIM0IsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlDeEIsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQVE7SUFDL0MsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQWFGLE1BQU0sT0FBTyxtQkFBbUI7SUFOaEM7UUFRRSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ2YsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUNyQixzQkFBaUIsR0FBZSxJQUFJLENBQUM7UUFDckMscUJBQWdCLEdBQXFCLElBQUksQ0FBQztRQUMzQyxxQkFBZ0IsR0FBRyxZ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S0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBEb0NoZWNrLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUeXBlYWhlYWRNYXRjaCB9IGZyb20gJ25neC1ib290c3RyYXAvdHlwZWFoZWFkL3B1YmxpY19hcGknO1xyXG5pbXBvcnQgeyBUYWdJbnB1dFZpZXcgfSBmcm9tICcuLi9FbnVtcy9UYWdJbnB1dFZpZXcnO1xyXG5cclxuY29uc3Qgbm9vcCA9ICgpID0+IHsgfTtcclxuXHJcbmNvbnN0IFRBR1NfSU5QVVRfVEVNUExBVEUgPSBgXHJcblxyXG48ZGl2IGNsYXNzPVwidGFncy1pbnB1dFwiPlxyXG48c3BhbiBjbGFzcz1cInRhZ3MtaW5wdXRfX3RhZyBsYWJlbCBsYWJlbC1wcmltYXJ5IGJhZGdlIGJhZGdlLXByaW1hcnlcIiAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3NcIj5cclxuXHJcbjxzcGFuIFtuZ1N3aXRjaF09XCJWaWV3TW9kZVwiPlxyXG48c3BhbiAqbmdTd2l0Y2hDYXNlPVwidGFnSW5wdXRWaWV3RW51bS5XaXRoSW1hZ2VcIj5cclxuPGltZyBzdHlsZT1cImJvcmRlci1yYWRpdXM6NTAlOyBoZWlnaHQ6NDBweDsgd2lkdGg6IDQwcHg7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjVweCA7IG1hcmdpbi10b3A6IDVweDttYXJnaW4tcmlnaHQ6IDVweDtcIlxyXG5zcmM9XCJ7eyh0YWcuaW1hZ2VVUkw/dGFnLmltYWdlVVJMOmRlZmF1bHRJbWFnZVVSTCl9fVwiIC8+XHJcbjwvc3Bhbj5cclxuXHJcbjxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbml0aWFsXCI+XHJcbjxkaXYgY2xhc3M9XCJ1c2VyLWluaXRpYWxzXCI+e3tjYWxjdWxhdGVJbml0aWFscyh0YWcubmFtZSl9fTwvZGl2PlxyXG48L3NwYW4+XHJcblxyXG48c3BhbiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG48L3NwYW4+XHJcblxyXG48L3NwYW4+XHJcbiAge3t0YWdbZGlzcGxheUZpZWxkXX19XHJcbiAgPHNwYW4gKm5nSWY9XCJpc0RlbGV0ZWFibGUodGFnKVwiIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cInRhZ3MtaW5wdXRfX3RhZy1yZW1vdmUtYnRuXCIgKGNsaWNrKT1cInJlbW92ZVRhZyh0YWcpXCJcclxuICAgICh0b3VjaCk9XCJyZW1vdmVUYWcodGFnKVwiPlxyXG4gICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gIDwvc3Bhbj5cclxuPC9zcGFuPlxyXG5cclxuPGlucHV0ICpuZ0lmPVwib3B0aW9ucyA9PT0gbnVsbDsgZWxzZSB3aXRoVHlwZWFoZWFkXCIgY2xhc3M9XCJ0YWdzLWlucHV0X19pbnB1dC1maWVsZFwiIHR5cGU9XCJ0ZXh0XCJcclxuICBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiIG5hbWU9XCJ0YWdzXCIgKGtleXVwLmVudGVyKT1cImFkZFRhZyh0YWdJbnB1dClcIlxyXG4gIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFtkaXNhYmxlZF09XCIhY2FuQWRkVGFncyB8fCBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpXCJcclxuICBbaGlkZGVuXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIiAjdGFnSW5wdXQgLz5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjd2l0aFR5cGVhaGVhZD5cclxuICA8c3BhbiBbbmdTd2l0Y2hdPVwiVmlld01vZGVcIj5cclxuICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbWFnZVwiPlxyXG4gICAgICA8aW5wdXQgKm5nSWY9XCIob3B0aW9ucyAhPT0gbnVsbClcIiBjbGFzcz1cInRhZ3MtaW5wdXRfX2lucHV0LWZpZWxkXCIgdHlwZT1cInRleHRcIiBbcGxhY2Vob2xkZXJdPVwiZ2V0UGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgICAgbmFtZT1cInRhZ3NcIiAoa2V5ZG93bi5iYWNrc3BhY2UpPVwicmVtb3ZlTGFzdFRhZyh0YWdJbnB1dClcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkXCIgW3R5cGVhaGVhZF09XCJvcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkT3B0aW9uRmllbGRdPVwiZGlzcGxheUZpZWxkXCIgKHR5cGVhaGVhZE9uU2VsZWN0KT1cInR5cGVhaGVhZE9uU2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgICh0eXBlYWhlYWROb1Jlc3VsdHMpPVwidHlwZWFoZWFkT25Ob01hdGNoKCRldmVudClcIiBbdHlwZWFoZWFkTWluTGVuZ3RoXT1cIm1pbkxlbmd0aEJlZm9yZU9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInNjcm9sbGFibGVPcHRpb25zXCIgW3R5cGVhaGVhZExhdGluaXplXT1cInRydWVcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwiaXRlbVRlbXBsYXRlV2l0aEltYWdlXCIgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAjdGFnSW5wdXQgLz5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwidGFnSW5wdXRWaWV3RW51bS5XaXRob3V0SW1hZ2VcIj5cclxuICAgICAgPGlucHV0ICpuZ0lmPVwiKG9wdGlvbnMgIT09IG51bGwpXCIgY2xhc3M9XCJ0YWdzLWlucHV0X19pbnB1dC1maWVsZFwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxyXG4gICAgICAgIG5hbWU9XCJ0YWdzXCIgKGtleWRvd24uYmFja3NwYWNlKT1cInJlbW92ZUxhc3RUYWcodGFnSW5wdXQpXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFwiIFt0eXBlYWhlYWRdPVwib3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbkZpZWxkXT1cImRpc3BsYXlGaWVsZFwiICh0eXBlYWhlYWRPblNlbGVjdCk9XCJ0eXBlYWhlYWRPblNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAodHlwZWFoZWFkTm9SZXN1bHRzKT1cInR5cGVhaGVhZE9uTm9NYXRjaCgkZXZlbnQpXCIgW3R5cGVhaGVhZE1pbkxlbmd0aF09XCJtaW5MZW5ndGhCZWZvcmVPcHRpb25zXCJcclxuICAgICAgICBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlT3B0aW9uc1wiIFt0eXBlYWhlYWRMYXRpbml6ZV09XCJ0cnVlXCJcclxuICAgICAgICBbdHlwZWFoZWFkSXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVdpdGhvdXRJbWFnZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICN0YWdJbnB1dCAvPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCJ0YWdJbnB1dFZpZXdFbnVtLldpdGhJbml0aWFsXCI+XHJcbiAgICAgIDxpbnB1dCAqbmdJZj1cIihvcHRpb25zICE9PSBudWxsKVwiIGNsYXNzPVwidGFncy1pbnB1dF9faW5wdXQtZmllbGRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcclxuICAgICAgICBuYW1lPVwidGFnc1wiIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiBbdHlwZWFoZWFkXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25GaWVsZF09XCJkaXNwbGF5RmllbGRcIiAodHlwZWFoZWFkT25TZWxlY3QpPVwidHlwZWFoZWFkT25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgKHR5cGVhaGVhZE5vUmVzdWx0cyk9XCJ0eXBlYWhlYWRPbk5vTWF0Y2goJGV2ZW50KVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluTGVuZ3RoQmVmb3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZFNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZU9wdGlvbnNcIiBbdHlwZWFoZWFkTGF0aW5pemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVXaXRob3V0SW5pdGlhbFwiXHJcbiAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cInNjcm9sbGFibGVPcHRpb25zSW5WaWV3XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiIFtoaWRkZW5dPVwiIWNhbkFkZFRhZ3MgfHwgbWF4aW11bU9mVGFnc1JlYWNoZWQoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICN0YWdJbnB1dCAvPlxyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgIDxpbnB1dCAqbmdJZj1cIihvcHRpb25zICE9PSBudWxsKVwiIGNsYXNzPVwidGFncy1pbnB1dF9faW5wdXQtZmllbGRcIiB0eXBlPVwidGV4dFwiIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcclxuICAgICAgICBuYW1lPVwidGFnc1wiIChrZXlkb3duLmJhY2tzcGFjZSk9XCJyZW1vdmVMYXN0VGFnKHRhZ0lucHV0KVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIiBbdHlwZWFoZWFkXT1cIm9wdGlvbnNcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25GaWVsZF09XCJkaXNwbGF5RmllbGRcIiAodHlwZWFoZWFkT25TZWxlY3QpPVwidHlwZWFoZWFkT25TZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgICAgKHR5cGVhaGVhZE5vUmVzdWx0cyk9XCJ0eXBlYWhlYWRPbk5vTWF0Y2goJGV2ZW50KVwiIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluTGVuZ3RoQmVmb3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3R5cGVhaGVhZFNjcm9sbGFibGVdPVwic2Nyb2xsYWJsZU9wdGlvbnNcIiBbdHlwZWFoZWFkTGF0aW5pemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVXaXRob3V0SW1hZ2VcIlxyXG4gICAgICAgIFt0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlld109XCJzY3JvbGxhYmxlT3B0aW9uc0luVmlld1wiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIiBbaGlkZGVuXT1cIiFjYW5BZGRUYWdzIHx8IG1heGltdW1PZlRhZ3NSZWFjaGVkKClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAjdGFnSW5wdXQgLz5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgPC9zcGFuPlxyXG5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlV2l0aEltYWdlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gIDxpbWdcclxuICAgIHN0eWxlPVwiYm9yZGVyLXJhZGl1czo1MCU7IGhlaWdodDo0MHB4OyB3aWR0aDogNDBweDsgZmxvYXQ6bGVmdDsgbWFyZ2luLWxlZnQ6NXB4IDsgbWFyZ2luLXRvcDogNXB4O21hcmdpbi1yaWdodDogNXB4O1wiXHJcbiAgICBzcmM9XCJ7eyhtb2RlbC5pbWFnZVVSTD9tb2RlbC5pbWFnZVVSTDpkZWZhdWx0SW1hZ2VVUkwpfX1cIiAvPlxyXG4gIDxkaXY+XHJcbiAgICA8YSBbaW5uZXJIVE1MXT1cIm1vZGVsLm5hbWVcIj48L2E+XHJcbiAgICA8cCAqbmdJZj1cInNob3dEZXNjcmlwdGlvblwiPlxyXG4gICAgICB7e21vZGVsLmRlc2NyaXB0aW9ufX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlV2l0aG91dEltYWdlIGxldC1tb2RlbD1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gIDxkaXY+XHJcbiAgICA8YSBbaW5uZXJIVE1MXT1cIm1vZGVsLm5hbWVcIj48L2E+XHJcbiAgICA8cCAqbmdJZj1cInNob3dEZXNjcmlwdGlvblwiPlxyXG4gICAgICB7e21vZGVsLmRlc2NyaXB0aW9ufX1cclxuICAgIDwvcD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlV2l0aG91dEluaXRpYWwgbGV0LW1vZGVsPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgPGRpdiBjbGFzcz1cInVzZXItaW1hZ2VcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluaXRpYWxzXCI+e3tjYWxjdWxhdGVJbml0aWFscyhtb2RlbC5uYW1lKX19PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdj5cclxuICAgIDxhIFtpbm5lckhUTUxdPVwibW9kZWwubmFtZVwiPjwvYT5cclxuICAgIDxwICpuZ0lmPVwic2hvd0Rlc2NyaXB0aW9uXCI+XHJcbiAgICAgIHt7bW9kZWwuZGVzY3JpcHRpb259fVxyXG4gICAgPC9wPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuYDtcclxuXHJcbmNvbnN0IFRBR1NfSU5QVVRfU1RZTEUgPSBgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAudGFncy1pbnB1dCB7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIH1cclxuXHJcbiAgICAudGFncy1pbnB1dF9fdGFnIHtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuM2VtO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWdzLWlucHV0X190YWctcmVtb3ZlLWJ0biB7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgbWFyZ2luOiAtM3B4IDAgMCAzcHg7XHJcbiAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgfVxyXG5cclxuICAgIC50YWdzLWlucHV0X19pbnB1dC1maWVsZCB7XHJcbiAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgIGZsZXgtZ3JvdzogMTtcclxuICAgICAgICBvdXRsaW5lOiBub25lO1xyXG4gICAgfVxyXG5gO1xyXG5cclxuY29uc3QgQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcclxuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBCVGFnc0lucHV0Q29tcG9uZW50KSxcclxuICBtdWx0aTogdHJ1ZVxyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWdzQ2hhbmdlZEV2ZW50IHtcclxuICBjaGFuZ2U6IHN0cmluZyxcclxuICB0YWc6IGFueVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ItdGFncy1pbnB1dCcsXHJcbiAgdGVtcGxhdGU6IFRBR1NfSU5QVVRfVEVNUExBVEUsXHJcbiAgc3R5bGVzOiBbVEFHU19JTlBVVF9TVFlMRV0sXHJcbiAgcHJvdmlkZXJzOiBbQ1VTVE9NX0lOUFVUX0NPTlRST0xfVkFMVUVfQUNDRVNTT1JdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCVGFnc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBzZWxlY3RlZDogc3RyaW5nID0gJyc7XHJcbiAgcHVibGljIHRhZ3M6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcclxuICBwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG4gIHB1YmxpYyB0YWdJbnB1dFZpZXdFbnVtID0gVGFnSW5wdXRWaWV3O1xyXG4gIEBJbnB1dCgpIG1heFRhZ3M6IG51bWJlcjtcclxuICBASW5wdXQoKSByZW1vdmVMYXN0T25CYWNrc3BhY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjYW5EZWxldGVUYWdzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5BZGRUYWdzOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBWaWV3TW9kZTogVGFnSW5wdXRWaWV3ID0gVGFnSW5wdXRWaWV3LldpdGhvdXRJbWFnZTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2hvd0Rlc2NyaXB0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBvcHRpb25zOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRJbWFnZVVSTDogYW55ID0gbnVsbDtcclxuICBkaXNwbGF5RmllbGQ6IHN0cmluZyA9ICduYW1lJztcclxuICBASW5wdXQoKSBtaW5MZW5ndGhCZWZvcmVPcHRpb25zOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIHNjcm9sbGFibGVPcHRpb25zOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2Nyb2xsYWJsZU9wdGlvbnNJblZpZXc6IG51bWJlciA9IDU7XHJcbiAgQE91dHB1dCgpIG9uVGFnc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxUYWdzQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25NYXhUYWdzUmVhY2hlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbk5vT3B0aW9uc01hdGNoOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmx1cklucHV0OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnRhZ3MgJiYgdGhpcy50YWdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRhZ3NDaGFuZ2VkKHR5cGU6IHN0cmluZywgdGFnOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnRhZ3MpO1xyXG4gICAgdGhpcy5vblRhZ3NDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICBjaGFuZ2U6IHR5cGUsXHJcbiAgICAgIHRhZzogdGFnXHJcbiAgICB9KTtcclxuICAgIGlmICh0aGlzLm1heGltdW1PZlRhZ3NSZWFjaGVkKCkpIHtcclxuICAgICAgdGhpcy5vbk1heFRhZ3NSZWFjaGVkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUxhc3RUYWcodGFnSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5yZW1vdmVMYXN0T25CYWNrc3BhY2UgfHwgIXRoaXMudGFncz8ubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGFnSW5wdXQudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlVGFnKHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkVGFnKHRhZ0lucHV0OiBIVE1MSW5wdXRFbGVtZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGFnSW5wdXQudmFsdWUudHJpbSgpICE9PSAnJykge1xyXG4gICAgICBsZXQgdGFnID0ge1xyXG4gICAgICAgIFt0aGlzLmRpc3BsYXlGaWVsZF06IHRhZ0lucHV0LnZhbHVlXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyh0YWcpO1xyXG4gICAgfVxyXG4gICAgdGFnSW5wdXQudmFsdWUgPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkUHJlZGVmaW5lZFRhZyh0YWc6IE9iamVjdCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudGFncyA9PSBudWxsKVxyXG4gICAgICB0aGlzLnRhZ3MgPSBbXTtcclxuICAgIGlmICghdGhpcy5tYXhpbXVtT2ZUYWdzUmVhY2hlZCgpKSB7XHJcbiAgICAgIHRoaXMudGFncy5wdXNoKHRhZyk7XHJcbiAgICAgIHRoaXMudGFnc0NoYW5nZWQoJ2FkZCcsIHRhZyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVUYWcodGFnVG9SZW1vdmU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRGVsZXRlYWJsZSh0YWdUb1JlbW92ZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWdzID0gdGhpcy50YWdzLmZpbHRlcih0YWcgPT4gdGFnVG9SZW1vdmUgIT09IHRhZyk7XHJcbiAgICB0aGlzLnRhZ3NDaGFuZ2VkKCdyZW1vdmUnLCB0YWdUb1JlbW92ZSk7XHJcbiAgfVxyXG5cclxuICBtYXhpbXVtT2ZUYWdzUmVhY2hlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdGhpcy5tYXhUYWdzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRhZ3MgJiYgdGhpcy50YWdzLmxlbmd0aCA+PSB0aGlzLm1heFRhZ3M7XHJcbiAgfVxyXG5cclxuICBpc0RlbGV0ZWFibGUodGFnOiBhbnkpIHtcclxuICAgIGlmICh0eXBlb2YgdGFnLmRlbGV0ZWFibGUgIT09IFwidW5kZWZpbmVkXCIgJiYgIXRhZy5kZWxldGVhYmxlKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhbkRlbGV0ZVRhZ3M7XHJcbiAgfVxyXG5cclxuICB0eXBlYWhlYWRPblNlbGVjdChlOiBUeXBlYWhlYWRNYXRjaCk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiBlLml0ZW0gPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyh7XHJcbiAgICAgICAgW3RoaXMuZGlzcGxheUZpZWxkXTogZS52YWx1ZVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkUHJlZGVmaW5lZFRhZyhlLml0ZW0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdHlwZWFoZWFkT25Ob01hdGNoKGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9uTm9PcHRpb25zTWF0Y2ggIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHRoaXMub25Ob09wdGlvbnNNYXRjaC5lbWl0KGUpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy50YWdzKSB7XHJcbiAgICAgIHRoaXMudGFncyA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcclxuICB9XHJcblxyXG4gIGNhbGN1bGF0ZUluaXRpYWxzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICB2YXIgZnVsbE5hbWUgPSBuYW1lLnNwbGl0KCcgJyk7XHJcbiAgICB2YXIgaW5pdGlhbHMgPSBcIlwiXHJcbiAgICBpZiAoZnVsbE5hbWUubGVuZ3RoID4gMSlcclxuICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKSArIGZ1bGxOYW1lLnBvcCgpLmNoYXJBdCgwKTtcclxuICAgIGVsc2VcclxuICAgICAgaW5pdGlhbHMgPSBmdWxsTmFtZS5zaGlmdCgpLmNoYXJBdCgwKVxyXG4gICAgcmV0dXJuIGluaXRpYWxzLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQmx1cklucHV0LmVtaXQoKTtcclxuICB9XHJcbiAgLy8gKGtleWRvd24uVGFiKSA9IFwib25UYWIoJGV2ZW50KVwiXHJcbiAgLy9vblRhYihldmVudCkge1xyXG4gIC8vICB0aGlzLm9uVGFiSW5wdXQuZW1pdCgpO1xyXG4gIC8vICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIC8vICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAvL31cclxufVxyXG4iXX0=
|
package/{esm2015/lib/Shared/config/environment.js → esm2020/lib/Shared/config/environment.mjs}
RENAMED
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { OwlDateTimeIntl } from 'ng-pick-datetime';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@bnsights/bbsf-utilities";
|
|
5
|
+
// here is the default text string - just adjust the strings to reflect your preferred language
|
|
6
|
+
export class DefaultIntl extends OwlDateTimeIntl {
|
|
7
|
+
constructor(utilityService) {
|
|
8
|
+
super();
|
|
9
|
+
this.utilityService = utilityService;
|
|
10
|
+
/** A label for the range 'from' in picker info */
|
|
11
|
+
this.rangeFromLabel = this.utilityService.getResourceValue('From');
|
|
12
|
+
/** A label for the range 'to' in picker info */
|
|
13
|
+
this.rangeToLabel = this.utilityService.getResourceValue('To');
|
|
14
|
+
/** A label for the cancel button */
|
|
15
|
+
this.cancelBtnLabel = this.utilityService.getResourceValue('Cancel');
|
|
16
|
+
/** A label for the set button */
|
|
17
|
+
this.setBtnLabel = this.utilityService.getResourceValue('Save');
|
|
18
|
+
/** A label for the hour12 button (AM) */
|
|
19
|
+
this.hour12AMLabel = this.utilityService.getResourceValue('AM');
|
|
20
|
+
/** A label for the hour12 button (PM) */
|
|
21
|
+
this.hour12PMLabel = this.utilityService.getResourceValue('PM');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
DefaultIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
25
|
+
DefaultIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl });
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: DefaultIntl, decorators: [{
|
|
27
|
+
type: Injectable
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.UtilityService }]; } });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdF9pbnRsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL1NoYXJlZC9kZWZhdWx0X2ludGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUduRCwrRkFBK0Y7QUFDL0YsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQzlDLFlBQW9CLGNBQThCO1FBQ2hELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSWxELGtEQUFrRDtRQUNsRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUQsZ0RBQWdEO1FBQ2hELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxvQ0FBb0M7UUFDcEMsbUJBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLGlDQUFpQztRQUNqQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QseUNBQXlDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCx5Q0FBeUM7UUFDekMsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBYjNELENBQUM7O3lHQUhVLFdBQVc7NkdBQVgsV0FBVzs0RkFBWCxXQUFXO2tCQUZ2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPd2xEYXRlVGltZUludGwgfSBmcm9tICduZy1waWNrLWRhdGV0aW1lJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuLy8gaGVyZSBpcyB0aGUgZGVmYXVsdCB0ZXh0IHN0cmluZyAtIGp1c3QgYWRqdXN0IHRoZSBzdHJpbmdzIHRvIHJlZmxlY3QgeW91ciBwcmVmZXJyZWQgbGFuZ3VhZ2VcclxuZXhwb3J0IGNsYXNzIERlZmF1bHRJbnRsIGV4dGVuZHMgT3dsRGF0ZVRpbWVJbnRsIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgcmFuZ2UgJ2Zyb20nIGluIHBpY2tlciBpbmZvICovXHJcbiAgcmFuZ2VGcm9tTGFiZWwgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0Zyb20nKTtcclxuICAvKiogQSBsYWJlbCBmb3IgdGhlIHJhbmdlICd0bycgaW4gcGlja2VyIGluZm8gKi9cclxuICByYW5nZVRvTGFiZWwgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ1RvJyk7XHJcbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBjYW5jZWwgYnV0dG9uICovXHJcbiAgY2FuY2VsQnRuTGFiZWwgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoJ0NhbmNlbCcpO1xyXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgc2V0IGJ1dHRvbiAqL1xyXG4gIHNldEJ0bkxhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdTYXZlJyk7XHJcbiAgLyoqIEEgbGFiZWwgZm9yIHRoZSBob3VyMTIgYnV0dG9uIChBTSkgKi9cclxuICBob3VyMTJBTUxhYmVsID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKCdBTScpO1xyXG4gIC8qKiBBIGxhYmVsIGZvciB0aGUgaG91cjEyIGJ1dHRvbiAoUE0pICovXHJcbiAgaG91cjEyUE1MYWJlbCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZSgnUE0nKTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { InputType } from '../Enums/InputType';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./validationErrorMassage.service";
|
|
6
|
+
import * as i2 from "@bnsights/bbsf-utilities";
|
|
7
|
+
export class ControlUtility {
|
|
8
|
+
constructor(ErrorHandler, controlValidationService, utilityService) {
|
|
9
|
+
this.ErrorHandler = ErrorHandler;
|
|
10
|
+
this.controlValidationService = controlValidationService;
|
|
11
|
+
this.utilityService = utilityService;
|
|
12
|
+
}
|
|
13
|
+
getErrorValidation(Errorsitem, CustomValidation) {
|
|
14
|
+
let resulte = '';
|
|
15
|
+
Errorsitem.forEach(element => {
|
|
16
|
+
if (element.key === 'customerError' && Errorsitem.length === 1) {
|
|
17
|
+
resulte = CustomValidation[0].massage;
|
|
18
|
+
}
|
|
19
|
+
else if (element.key === 'EmailValidation') {
|
|
20
|
+
resulte = element.value;
|
|
21
|
+
}
|
|
22
|
+
else if (element.key === 'FluentApi') {
|
|
23
|
+
resulte = element.value;
|
|
24
|
+
}
|
|
25
|
+
else if (element.key === 'errorMassage') {
|
|
26
|
+
resulte = element.value;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
resulte = this.ErrorHandler.getErrorMassageValidation(element);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return resulte;
|
|
33
|
+
}
|
|
34
|
+
patternValidator(regex, error) {
|
|
35
|
+
return (control) => {
|
|
36
|
+
if (!control.value) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const valid = regex.test(control.value);
|
|
40
|
+
return valid ? null : error;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
patchControlValue(originalValue, PatchFunction, PatchPath) {
|
|
44
|
+
var patchOp = [{
|
|
45
|
+
op: "replace",
|
|
46
|
+
path: PatchPath,
|
|
47
|
+
value: originalValue
|
|
48
|
+
}];
|
|
49
|
+
var patchService = PatchFunction.call(null, patchOp);
|
|
50
|
+
patchService.subscribe(r => console.log(r), erorr => this.utilityService.notifyErrorMessage(erorr));
|
|
51
|
+
}
|
|
52
|
+
arabicValidator(error) {
|
|
53
|
+
return (control) => {
|
|
54
|
+
if (!control.value)
|
|
55
|
+
return null;
|
|
56
|
+
if (control.value.match('[\u0600-\u06FF]')) {
|
|
57
|
+
if (control.value.match('[A-Za-z]') != null) {
|
|
58
|
+
//FOUND ENGLISH CHARS
|
|
59
|
+
var length = control.value.replace(/\W/g, '').replace(/[0-9]/g, '').length;
|
|
60
|
+
if (length > 50) {
|
|
61
|
+
return error;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
//NO ENGLISH CHARACTERS AT ALL
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return error;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
getInputType(type) {
|
|
78
|
+
return InputType[type];
|
|
79
|
+
}
|
|
80
|
+
trimControlValue(value) {
|
|
81
|
+
const whitespace = ' ';
|
|
82
|
+
if (value.startsWith(whitespace) || value.endsWith(whitespace)) {
|
|
83
|
+
return value.trim();
|
|
84
|
+
}
|
|
85
|
+
else
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
CopyInputMessage(inputElement) {
|
|
89
|
+
inputElement.select();
|
|
90
|
+
document.execCommand('copy');
|
|
91
|
+
inputElement.setSelectionRange(0, 0);
|
|
92
|
+
}
|
|
93
|
+
getErrorValidationMassage(ErrorList, group, options) {
|
|
94
|
+
// if((!group.valid)&&(!UtilityService.isCreatedBefor))
|
|
95
|
+
// {
|
|
96
|
+
// UtilityService.showGlobalError();
|
|
97
|
+
// this.scrollToGlobalErrorMassage()
|
|
98
|
+
// }
|
|
99
|
+
return this.getErrorValidation(ErrorList, options.CustomValidation);
|
|
100
|
+
}
|
|
101
|
+
scrollToGlobalErrorMassage() {
|
|
102
|
+
let element = document.getElementById('errorId');
|
|
103
|
+
element.scrollIntoView({ behavior: "smooth", inline: "nearest" });
|
|
104
|
+
}
|
|
105
|
+
setAttributeForControl(options) {
|
|
106
|
+
if (options.AttributeList != null) {
|
|
107
|
+
var element = document.getElementById(options.Name);
|
|
108
|
+
for (let index = 0; index < options.AttributeList.length; index++) {
|
|
109
|
+
element.setAttribute(options.AttributeList[index].Key, options.AttributeList[index].value);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
showGlobalError(formId) {
|
|
114
|
+
this.controlValidationService.showGlobalError(null, formId);
|
|
115
|
+
this.scrollToGlobalErrorMassage();
|
|
116
|
+
}
|
|
117
|
+
RemoveRequiredValidation(FormControl, ValidationRole, Options) {
|
|
118
|
+
Options.IsRequired = false;
|
|
119
|
+
ValidationRole = ValidationRole.filter((e) => e != Validators.required);
|
|
120
|
+
FormControl.setValidators(ValidationRole);
|
|
121
|
+
FormControl.updateValueAndValidity();
|
|
122
|
+
}
|
|
123
|
+
AddRequiredValidation(FormControl, ValidationRole, Options) {
|
|
124
|
+
Options.IsRequired = true;
|
|
125
|
+
ValidationRole.push(Validators.required);
|
|
126
|
+
FormControl.setValidators(ValidationRole);
|
|
127
|
+
FormControl.updateValueAndValidity();
|
|
128
|
+
}
|
|
129
|
+
addRequiredToControl(FormControl, Options) {
|
|
130
|
+
Options.IsRequired = true;
|
|
131
|
+
FormControl.addValidators(Validators.required);
|
|
132
|
+
FormControl.updateValueAndValidity();
|
|
133
|
+
}
|
|
134
|
+
removeRequiredFromControl(FormControl, Options) {
|
|
135
|
+
Options.IsRequired = false;
|
|
136
|
+
FormControl.removeValidators(Validators.required);
|
|
137
|
+
FormControl.updateValueAndValidity();
|
|
138
|
+
}
|
|
139
|
+
RemoveCustomValidation(FormControl, ValidationRole, CustomValidation) {
|
|
140
|
+
ValidationRole = ValidationRole.filter((e) => e != CustomValidation.functionBody);
|
|
141
|
+
FormControl.setValidators(ValidationRole);
|
|
142
|
+
FormControl.updateValueAndValidity();
|
|
143
|
+
}
|
|
144
|
+
AddCustomValidation(FormControl, ValidationRole, CustomValidation) {
|
|
145
|
+
ValidationRole.push(CustomValidation.functionBody);
|
|
146
|
+
FormControl.setValidators(ValidationRole);
|
|
147
|
+
FormControl.updateValueAndValidity();
|
|
148
|
+
}
|
|
149
|
+
static getLocal() {
|
|
150
|
+
let lang = localStorage.getItem('language');
|
|
151
|
+
return lang == "ar" ? "ar" : "en-UK";
|
|
152
|
+
}
|
|
153
|
+
IsValid(FormControl) {
|
|
154
|
+
FormControl.markAsTouched();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
ControlUtility.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility, deps: [{ token: i1.ErrorMassageValidation }, { token: i2.ControlValidationService }, { token: i2.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
158
|
+
ControlUtility.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility });
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ControlUtility, decorators: [{
|
|
160
|
+
type: Injectable
|
|
161
|
+
}], ctorParameters: function () { return [{ type: i1.ErrorMassageValidation }, { type: i2.ControlValidationService }, { type: i2.UtilityService }]; } });
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFV0aWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvU2hhcmVkL3NlcnZpY2VzL0NvbnRyb2xVdGlsaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBR2hGLE9BQU8sRUFBK0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBTS9DLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLFlBQW9DLEVBQVUsd0JBQWtELEVBQVUsY0FBOEI7UUFBeEksaUJBQVksR0FBWixZQUFZLENBQXdCO1FBQVUsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUU1SixDQUFDO0lBRUQsa0JBQWtCLENBQUMsVUFBaUIsRUFBRSxnQkFBbUM7UUFDdkUsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFFM0IsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLGVBQWUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDOUQsT0FBTyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUN2QztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssaUJBQWlCLEVBQUU7Z0JBQzVDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQ3pCO2lCQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsS0FBSyxXQUFXLEVBQUU7Z0JBQ3RDLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO2FBQ3pCO2lCQUNJLElBQUksT0FBTyxDQUFDLEdBQUcs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SUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNqRixXQUFXLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxXQUE0QixFQUFFLGNBQXFCLEVBQUUsZ0JBQWtDO1FBQ3pHLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDbEQsV0FBVyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtJQUN0QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLFFBQVE7UUFDYixJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUE0QjtRQUVsQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7NEdBdktVLGNBQWM7Z0hBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIEhvc3QsIFNraXBTZWxmLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ3VzdG9tVmFsaWRhdGlvbiB9IGZyb20gJy4uL01vZGVscy9DdXN0b21WYWxpZGF0aW9uJztcclxuaW1wb3J0IHsgRXJyb3JNYXNzYWdlVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbkVycm9yTWFzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWxpZGF0aW9uU2VydmljZSwgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29udHJvbFV0aWxpdHkge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgRXJyb3JIYW5kbGVyOiBFcnJvck1hc3NhZ2VWYWxpZGF0aW9uLCBwcml2YXRlIGNvbnRyb2xWYWxpZGF0aW9uU2VydmljZTogQ29udHJvbFZhbGlkYXRpb25TZXJ2aWNlLCBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSkge1xyXG5cclxuICB9XHJcblxyXG4gIGdldEVycm9yVmFsaWRhdGlvbihFcnJvcnNpdGVtOiBhbnlbXSwgQ3VzdG9tVmFsaWRhdGlvbj86IEN1c3RvbVZhbGlkYXRpb24pOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdGUgPSAnJztcclxuICAgIEVycm9yc2l0ZW0uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuXHJcbiAgICAgIGlmIChlbGVtZW50LmtleSA9PT0gJ2N1c3RvbWVyRXJyb3InICYmIEVycm9yc2l0ZW0ubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgcmVzdWx0ZSA9IEN1c3RvbVZhbGlkYXRpb25bMF0ubWFzc2FnZTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmtleSA9PT0gJ0VtYWlsVmFsaWRhdGlvbicpIHtcclxuICAgICAgICByZXN1bHRlID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmtleSA9PT0gJ0ZsdWVudEFwaScpIHtcclxuICAgICAgICByZXN1bHRlID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChlbGVtZW50LmtleSA9PT0gJ2Vycm9yTWFzc2FnZScpIHtcclxuICAgICAgICByZXN1bHRlID0gZWxlbWVudC52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHRlID0gdGhpcy5FcnJvckhhbmRsZXIuZ2V0RXJyb3JNYXNzYWdlVmFsaWRhdGlvbihlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdGU7XHJcbiAgfVxyXG5cclxuICBwYXR0ZXJuVmFsaWRhdG9yKHJlZ2V4OiBSZWdFeHAsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHZhbGlkID0gcmVnZXgudGVzdChjb250cm9sLnZhbHVlKTtcclxuICAgICAgcmV0dXJuIHZhbGlkID8gbnVsbCA6IGVycm9yO1xyXG4gICAgfTtcclxuICB9XHJcbiAgcGF0Y2hDb250cm9sVmFsdWUob3JpZ2luYWxWYWx1ZSwgUGF0Y2hGdW5jdGlvbiwgUGF0Y2hQYXRoKSB7XHJcbiAgICB2YXIgcGF0Y2hPcCA9IFt7XHJcbiAgICAgIG9wOiBcInJlcGxhY2VcIixcclxuICAgICAgcGF0aDogUGF0Y2hQYXRoLFxyXG4gICAgICB2YWx1ZTogb3JpZ2luYWxWYWx1ZVxyXG4gICAgfV1cclxuICAgIHZhciBwYXRjaFNlcnZpY2UgPSBQYXRjaEZ1bmN0aW9uLmNhbGwobnVsbCwgcGF0Y2hPcCkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xyXG4gICAgcGF0Y2hTZXJ2aWNlLnN1YnNjcmliZShyID0+IGNvbnNvbGUubG9nKHIpLCBlcm9yciA9PiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShlcm9ycikpO1xyXG5cclxuICB9XHJcbiAgYXJhYmljVmFsaWRhdG9yKGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZS5tYXRjaCgnW1xcdTA2MDAtXFx1MDZGRl0nKSkge1xyXG4gICAgICAgIGlmIChjb250cm9sLnZhbHVlLm1hdGNoKCdbQS1aYS16XScpICE9IG51bGwpIHtcclxuICAgICAgICAgIC8vRk9VTkQgRU5HTElTSCBDSEFSU1xyXG4gICAgICAgICAgdmFyIGxlbmd0aCA9IGNvbnRyb2wudmFsdWUucmVwbGFjZSgvXFxXL2csICcnKS5yZXBsYWNlKC9bMC05XS9nLCAnJykubGVuZ3RoO1xyXG4gICAgICAgICAgaWYgKGxlbmd0aCA+IDUwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIC8vTk8gRU5HTElTSCBDSEFSQUNURVJTIEFUIEFMTFxyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBlcnJvcjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldElucHV0VHlwZSh0eXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIElucHV0VHlwZVt0eXBlXSBhcyBzdHJpbmdcclxuICB9XHJcblxyXG5cclxuICB0cmltQ29udHJvbFZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGNvbnN0IHdoaXRlc3BhY2U6IHN0cmluZyA9ICcgJztcclxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKHdoaXRlc3BhY2UpIHx8IHZhbHVlLmVuZHNXaXRoKHdoaXRlc3BhY2UpKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50cmltKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgQ29weUlucHV0TWVzc2FnZShpbnB1dEVsZW1lbnQpIHtcclxuICAgIGlucHV0RWxlbWVudC5zZWxlY3QoKTtcclxuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICBpbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RXJyb3JWYWxpZGF0aW9uTWFzc2FnZShFcnJvckxpc3QsIGdyb3VwLCBvcHRpb25zKSB7XHJcbiAgICAvLyBpZigoIWdyb3VwLnZhbGlkKSYmKCFVdGlsaXR5U2VydmljZS5pc0NyZWF0ZWRCZWZvcikpXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIFV0aWxpdHlTZXJ2aWNlLnNob3dHbG9iYWxFcnJvcigpO1xyXG4gICAgLy8gICB0aGlzLnNjcm9sbFRvR2xvYmFsRXJyb3JNYXNzYWdlKClcclxuICAgIC8vIH1cclxuICAgIHJldHVybiB0aGlzLmdldEVycm9yVmFsaWRhdGlvbihFcnJvckxpc3QsIG9wdGlvbnMuQ3VzdG9tVmFsaWRhdGlvbik7XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0dsb2JhbEVycm9yTWFzc2FnZSgpIHtcclxuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9ySWQnKTtcclxuICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogXCJzbW9vdGhcIiwgaW5saW5lOiBcIm5lYXJlc3RcIiB9KTtcclxuICB9XHJcbiAgc2V0QXR0cmlidXRlRm9yQ29udHJvbChvcHRpb25zKSB7XHJcbiAgICBpZiAob3B0aW9ucy5BdHRyaWJ1dGVMaXN0ICE9IG51bGwpIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcHRpb25zLk5hbWUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb3B0aW9ucy5BdHRyaWJ1dGVMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG9wdGlvbnMuQXR0cmlidXRlTGlzdFtpbmRleF0uS2V5LCBvcHRpb25zLkF0dHJpYnV0ZUxpc3RbaW5kZXhdLnZhbHVlKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoZm9ybUlkPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbnRyb2xWYWxpZGF0aW9uU2VydmljZS5zaG93R2xvYmFsRXJyb3IobnVsbCwgZm9ybUlkKTtcclxuICAgIHRoaXMuc2Nyb2xsVG9HbG9iYWxFcnJvck1hc3NhZ2UoKVxyXG4gIH1cclxuXHJcbiAgUmVtb3ZlUmVxdWlyZWRWYWxpZGF0aW9uKEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25Sb2xlOiBhbnlbXSwgT3B0aW9uczogYW55KSB7XHJcbiAgICBPcHRpb25zLklzUmVxdWlyZWQgPSBmYWxzZVxyXG4gICAgVmFsaWRhdGlvblJvbGUgPSBWYWxpZGF0aW9uUm9sZS5maWx0ZXIoKGUpID0+IGUgIT0gVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgIEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdGlvblJvbGUpO1xyXG4gICAgRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgfVxyXG5cclxuICBBZGRSZXF1aXJlZFZhbGlkYXRpb24oRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvblJvbGU6IGFueVtdLCBPcHRpb25zOiBhbnkpIHtcclxuICAgIE9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgIFZhbGlkYXRpb25Sb2xlLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgIEZvcm1Db250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdGlvblJvbGUpO1xyXG4gICAgRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgfVxyXG5cclxuICBhZGRSZXF1aXJlZFRvQ29udHJvbChGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCBPcHRpb25zOiBhbnkpIHtcclxuICAgIE9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWVcclxuICAgIEZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICBGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcbiAgcmVtb3ZlUmVxdWlyZWRGcm9tQ29udHJvbChGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCBPcHRpb25zOiBhbnkpIHtcclxuICAgIE9wdGlvbnMuSXNSZXF1aXJlZCA9IGZhbHNlXHJcbiAgICBGb3JtQ29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgRm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXHJcbiAgfVxyXG5cclxuXHJcbiAgUmVtb3ZlQ3VzdG9tVmFsaWRhdGlvbihGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uUm9sZTogYW55W10sIEN1c3RvbVZhbGlkYXRpb246IEN1c3RvbVZhbGlkYXRpb24pIHtcclxuICAgIFZhbGlkYXRpb25Sb2xlID0gVmFsaWRhdGlvblJvbGUuZmlsdGVyKChlKSA9PiBlICE9IEN1c3RvbVZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KVxyXG4gICAgRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0aW9uUm9sZSk7XHJcbiAgICBGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcblxyXG4gIEFkZEN1c3RvbVZhbGlkYXRpb24oRm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvblJvbGU6IGFueVtdLCBDdXN0b21WYWxpZGF0aW9uOiBDdXN0b21WYWxpZGF0aW9uKSB7XHJcbiAgICBWYWxpZGF0aW9uUm9sZS5wdXNoKEN1c3RvbVZhbGlkYXRpb24uZnVuY3Rpb25Cb2R5KVxyXG4gICAgRm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0aW9uUm9sZSk7XHJcbiAgICBGb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcclxuICB9XHJcbiAgc3RhdGljIGdldExvY2FsKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xyXG4gICAgcmV0dXJuIGxhbmcgPT0gXCJhclwiID8gXCJhclwiIDogXCJlbi1VS1wiO1xyXG4gIH1cclxuXHJcbiAgSXNWYWxpZChGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XHJcblxyXG4gICAgRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|