@bnsights/bbsf-controls 1.0.109 → 1.0.111
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 +8 -0
- package/{esm2020 → esm2022}/bnsights-bbsf-controls.mjs +4 -4
- package/esm2022/bnsights-test-test-controls.mjs +5 -0
- package/{esm2020 → esm2022}/lib/Shared/Components/app-base-component.mjs +226 -226
- package/{esm2020 → esm2022}/lib/Shared/Components/ng-tag-input.mjs +176 -176
- package/{esm2020 → esm2022}/lib/Shared/Directives/template-name.directive.mjs +18 -18
- package/{esm2020 → esm2022}/lib/Shared/Enums/CalendarView.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Shared/Enums/ControlLayout.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Enums/Countries.mjs +246 -246
- package/{esm2020 → esm2022}/lib/Shared/Enums/Enums.mjs +32 -32
- package/{esm2020 → esm2022}/lib/Shared/Enums/FileType.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Shared/Enums/FilterType.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Shared/Enums/FontSize.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Enums/ForceDirection.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Enums/IconPosition.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Enums/ImageType.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Shared/Enums/InputType.mjs +9 -9
- package/{esm2020 → esm2022}/lib/Shared/Enums/Insert.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Enums/LanguageMode.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Shared/Enums/LanguageValidation.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Enums/Misc.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Enums/PagingActionMode.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Enums/Para.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Enums/PickerType.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Enums/SelectMode.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Enums/StartView.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Enums/Style.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Shared/Enums/StyleConfirmationMode.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Enums/TagInputView.mjs +6 -6
- package/esm2022/lib/Shared/Enums/map-enums.mjs +7 -0
- package/{esm2020 → esm2022}/lib/Shared/Enums/menu-list-enum.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Models/Attribute.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/AutocompleteDTO.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Shared/Models/AutocompleteOptions.mjs +23 -23
- package/{esm2020 → esm2022}/lib/Shared/Models/CalendarEventDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/CalendarOptions.mjs +18 -18
- package/{esm2020 → esm2022}/lib/Shared/Models/CancelDTO.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Models/CaptchaStyle.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/CheckBoxOptions.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Shared/Models/ConfirmationModalOptions.mjs +38 -38
- package/{esm2020 → esm2022}/lib/Shared/Models/ControlOptionsBase.mjs +12 -12
- package/{esm2020 → esm2022}/lib/Shared/Models/CustomValidation.mjs +13 -13
- package/{esm2020 → esm2022}/lib/Shared/Models/DropdownListItem.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/DropdownOptions.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Shared/Models/EditPersonalImage.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Models/EnglishArabicDTO.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Shared/Models/FileDTO.mjs +1 -1
- package/{esm2020 → esm2022}/lib/Shared/Models/FileUploadModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/FileUploadOptions.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Shared/Models/FilterItem.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Shared/Models/FormOptions.mjs +27 -27
- package/{esm2020 → esm2022}/lib/Shared/Models/HtmlEditorOptions.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Shared/Models/ImageUploadOptions.mjs +13 -13
- package/esm2022/lib/Shared/Models/MapAutoCompleteOptions.mjs +10 -0
- package/{esm2020 → esm2022}/lib/Shared/Models/MapAutocompleteDTO.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Models/MultiLingualHtmlEditorOptions.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Models/MultiLingualTextAreaOptions.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Models/MultilingualControlOptionsBase.mjs +15 -15
- package/{esm2020 → esm2022}/lib/Shared/Models/MultilingualTextBoxOptions.mjs +13 -13
- package/{esm2020 → esm2022}/lib/Shared/Models/MultipleFileUploadModel.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Models/PagingDTO.mjs +12 -12
- package/{esm2020 → esm2022}/lib/Shared/Models/PagingOptions.mjs +46 -46
- package/{esm2020 → esm2022}/lib/Shared/Models/PagingPayload.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/PhoneOptions.mjs +12 -12
- package/{esm2020 → esm2022}/lib/Shared/Models/ProfileImageUploadOptions.mjs +10 -10
- package/{esm2020 → esm2022}/lib/Shared/Models/ProfilePictureDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/RadioButtonItem.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/RadioButtonOptions.mjs +3 -3
- package/{esm2020 → esm2022}/lib/Shared/Models/RangeNumber.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/Recaptcha.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Models/RecaptchaOptions.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Shared/Models/RepeaterField.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/RepeaterOptions.mjs +12 -12
- package/{esm2020 → esm2022}/lib/Shared/Models/SaveDTO.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Models/TagsInputDTO.mjs +2 -2
- package/{esm2020 → esm2022}/lib/Shared/Models/TagsInputOptions.mjs +40 -40
- package/{esm2020 → esm2022}/lib/Shared/Models/TextAreaOptions.mjs +3 -3
- package/{esm2020 → esm2022}/lib/Shared/Models/TextBoxOptions.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Shared/Models/ToggleslideOptions.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Models/UploadPersonalImage.mjs +6 -6
- package/{esm2020 → esm2022}/lib/Shared/Models/bread-crumb.mjs +7 -7
- package/{esm2020 → esm2022}/lib/Shared/Models/control-filter-Item.mjs +5 -5
- package/{esm2020 → esm2022}/lib/Shared/Models/datePickerOptions.mjs +22 -22
- package/{esm2020 → esm2022}/lib/Shared/Models/filter-options.mjs +8 -8
- package/{esm2020 → esm2022}/lib/Shared/Models/page-header-options.mjs +77 -77
- package/{esm2020 → esm2022}/lib/Shared/Pipes/bbsf-date-time.pipe.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Shared/Pipes/bbsf-date.pipe.mjs +21 -21
- package/{esm2020 → esm2022}/lib/Shared/config/environment.mjs +11 -11
- package/{esm2020 → esm2022}/lib/Shared/default_intl.mjs +29 -29
- package/{esm2020 → esm2022}/lib/Shared/services/ControlUtility.mjs +162 -162
- package/{esm2020 → esm2022}/lib/Shared/services/GlobalSettings.service.mjs +30 -30
- package/esm2022/lib/Shared/services/OnPagingFiltersChange.service.mjs +24 -0
- package/{esm2020 → esm2022}/lib/Shared/services/render-component-service.service.mjs +30 -30
- package/esm2022/lib/Shared/services/validationErrorMassage.service.mjs +170 -0
- package/esm2022/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +262 -0
- package/esm2022/lib/controls/Calendar/Calendar.component.mjs +173 -0
- package/esm2022/lib/controls/CheckBox/CheckBox.component.mjs +117 -0
- package/{esm2020 → esm2022}/lib/controls/ConfirmationModal/ConfirmationModal.component.mjs +136 -136
- package/esm2022/lib/controls/DateTimePicker/DateTimePicker.component.mjs +223 -0
- package/esm2022/lib/controls/DropdownList/DropdownList.component.mjs +193 -0
- package/esm2022/lib/controls/FileUplaod/FileUplaod.component.mjs +447 -0
- package/{esm2020 → esm2022}/lib/controls/Form/Form.component.mjs +101 -101
- package/esm2022/lib/controls/HtmlEditor/HtmlEditor.component.mjs +226 -0
- package/esm2022/lib/controls/ImageUpload/ImageUpload.component.mjs +350 -0
- package/esm2022/lib/controls/MapAutoComplete/MapAutoComplete.component.mjs +404 -0
- package/esm2022/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.mjs +427 -0
- package/esm2022/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.mjs +429 -0
- package/esm2022/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +428 -0
- package/{esm2020 → esm2022}/lib/controls/Paging/JwPagination.component.mjs +121 -121
- package/{esm2020 → esm2022}/lib/controls/Paging/Paging.component.mjs +312 -312
- package/esm2022/lib/controls/Phone/Phone.component.mjs +129 -0
- package/esm2022/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +376 -0
- package/esm2022/lib/controls/RadioButton/RadioButton.component.mjs +109 -0
- package/{esm2020 → esm2022}/lib/controls/Recaptcha/Recaptcha.component.mjs +135 -135
- package/{esm2020 → esm2022}/lib/controls/Repeater/repeater/repeater.component.mjs +125 -125
- package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.mjs +750 -750
- package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.mjs +21 -21
- package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-table/repeater-table.component.mjs +108 -108
- package/esm2022/lib/controls/TagsInput/TagsInput.component.mjs +277 -0
- package/esm2022/lib/controls/TextArea/TextArea.component.mjs +196 -0
- package/esm2022/lib/controls/TextBox/TextBox.component.mjs +306 -0
- package/esm2022/lib/controls/Toggleslide/toggleslide.component.mjs +90 -0
- package/esm2022/lib/controls/bbsf-controls.module.mjs +339 -0
- package/{esm2020 → esm2022}/lib/controls/page-header-component/page-header-component.component.mjs +37 -37
- package/{esm2020 → esm2022}/public-api.mjs +128 -130
- package/{fesm2020 → fesm2022}/bnsights-bbsf-controls.mjs +8802 -8736
- package/fesm2022/bnsights-bbsf-controls.mjs.map +1 -0
- package/{fesm2015/bnsights-bbsf-controls.mjs → fesm2022/bnsights-test-test-controls.mjs} +8803 -8798
- package/fesm2022/bnsights-test-test-controls.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/Shared/Components/app-base-component.d.ts +58 -58
- package/lib/Shared/Components/ng-tag-input.d.ts +50 -50
- package/lib/Shared/Directives/template-name.directive.d.ts +9 -9
- package/lib/Shared/Enums/CalendarView.d.ts +6 -6
- package/lib/Shared/Enums/ControlLayout.d.ts +4 -4
- package/lib/Shared/Enums/Countries.d.ts +245 -245
- package/lib/Shared/Enums/Enums.d.ts +30 -30
- package/lib/Shared/Enums/FileType.d.ts +20 -20
- package/lib/Shared/Enums/FilterType.d.ts +9 -9
- package/lib/Shared/Enums/FontSize.d.ts +5 -5
- package/lib/Shared/Enums/ForceDirection.d.ts +4 -4
- package/lib/Shared/Enums/IconPosition.d.ts +4 -4
- package/lib/Shared/Enums/ImageType.d.ts +8 -8
- package/lib/Shared/Enums/InputType.d.ts +8 -8
- package/lib/Shared/Enums/Insert.d.ts +7 -7
- package/lib/Shared/Enums/LanguageMode.d.ts +9 -9
- package/lib/Shared/Enums/LanguageValidation.d.ts +4 -4
- package/lib/Shared/Enums/Misc.d.ts +5 -5
- package/lib/Shared/Enums/PagingActionMode.d.ts +4 -4
- package/lib/Shared/Enums/Para.d.ts +7 -7
- package/lib/Shared/Enums/PickerType.d.ts +5 -5
- package/lib/Shared/Enums/SelectMode.d.ts +4 -4
- package/lib/Shared/Enums/StartView.d.ts +5 -5
- package/lib/Shared/Enums/Style.d.ts +6 -6
- package/lib/Shared/Enums/StyleConfirmationMode.d.ts +5 -5
- package/lib/Shared/Enums/TagInputView.d.ts +5 -5
- package/lib/Shared/Enums/map-enums.d.ts +5 -0
- package/lib/Shared/Enums/menu-list-enum.d.ts +4 -4
- package/lib/Shared/Models/Attribute.d.ts +4 -4
- package/lib/Shared/Models/AutocompleteDTO.d.ts +5 -5
- package/lib/Shared/Models/AutocompleteOptions.d.ts +40 -40
- package/lib/Shared/Models/CalendarEventDTO.d.ts +8 -8
- package/lib/Shared/Models/CalendarOptions.d.ts +23 -23
- package/lib/Shared/Models/CancelDTO.d.ts +5 -5
- package/lib/Shared/Models/CaptchaStyle.d.ts +7 -7
- package/lib/Shared/Models/CheckBoxOptions.d.ts +7 -7
- package/lib/Shared/Models/ConfirmationModalOptions.d.ts +21 -21
- package/lib/Shared/Models/ControlOptionsBase.d.ts +44 -44
- package/lib/Shared/Models/CustomValidation.d.ts +10 -10
- package/lib/Shared/Models/DropdownListItem.d.ts +4 -4
- package/lib/Shared/Models/DropdownOptions.d.ts +33 -33
- package/lib/Shared/Models/EditPersonalImage.d.ts +5 -5
- package/lib/Shared/Models/EnglishArabicDTO.d.ts +4 -4
- package/lib/Shared/Models/FileDTO.d.ts +19 -19
- package/lib/Shared/Models/FileUploadModel.d.ts +4 -4
- package/lib/Shared/Models/FileUploadOptions.d.ts +19 -19
- package/lib/Shared/Models/FilterItem.d.ts +13 -13
- package/lib/Shared/Models/FormOptions.d.ts +16 -16
- package/lib/Shared/Models/HtmlEditorOptions.d.ts +31 -31
- package/lib/Shared/Models/ImageUploadOptions.d.ts +23 -23
- package/lib/Shared/Models/MapAutoCompleteOptions.d.ts +8 -6
- package/lib/Shared/Models/MapAutocompleteDTO.d.ts +7 -7
- package/lib/Shared/Models/MultiLingualHtmlEditorOptions.d.ts +22 -22
- package/lib/Shared/Models/MultiLingualTextAreaOptions.d.ts +12 -12
- package/lib/Shared/Models/MultilingualControlOptionsBase.d.ts +77 -77
- package/lib/Shared/Models/MultilingualTextBoxOptions.d.ts +12 -12
- package/lib/Shared/Models/MultipleFileUploadModel.d.ts +7 -7
- package/lib/Shared/Models/PagingDTO.d.ts +11 -11
- package/lib/Shared/Models/PagingOptions.d.ts +56 -56
- package/lib/Shared/Models/PagingPayload.d.ts +5 -5
- package/lib/Shared/Models/PhoneOptions.d.ts +21 -21
- package/lib/Shared/Models/ProfileImageUploadOptions.d.ts +28 -28
- package/lib/Shared/Models/ProfilePictureDTO.d.ts +13 -13
- package/lib/Shared/Models/RadioButtonItem.d.ts +4 -4
- package/lib/Shared/Models/RadioButtonOptions.d.ts +8 -8
- package/lib/Shared/Models/RangeNumber.d.ts +4 -4
- package/lib/Shared/Models/Recaptcha.d.ts +6 -6
- package/lib/Shared/Models/RecaptchaOptions.d.ts +18 -18
- package/lib/Shared/Models/RepeaterField.d.ts +7 -7
- package/lib/Shared/Models/RepeaterOptions.d.ts +19 -19
- package/lib/Shared/Models/SaveDTO.d.ts +5 -5
- package/lib/Shared/Models/TagsInputDTO.d.ts +6 -6
- package/lib/Shared/Models/TagsInputOptions.d.ts +57 -57
- package/lib/Shared/Models/TextAreaOptions.d.ts +23 -23
- package/lib/Shared/Models/TextBoxOptions.d.ts +37 -37
- package/lib/Shared/Models/ToggleslideOptions.d.ts +9 -9
- package/lib/Shared/Models/UploadPersonalImage.d.ts +5 -5
- package/lib/Shared/Models/bread-crumb.d.ts +6 -6
- package/lib/Shared/Models/control-filter-Item.d.ts +6 -6
- package/lib/Shared/Models/datePickerOptions.d.ts +29 -29
- package/lib/Shared/Models/filter-options.d.ts +7 -7
- package/lib/Shared/Models/page-header-options.d.ts +71 -71
- package/lib/Shared/Pipes/bbsf-date-time.pipe.d.ts +10 -10
- package/lib/Shared/Pipes/bbsf-date.pipe.d.ts +10 -10
- package/lib/Shared/config/environment.d.ts +1 -1
- package/lib/Shared/default_intl.d.ts +21 -21
- package/lib/Shared/services/ControlUtility.d.ts +32 -32
- package/lib/Shared/services/GlobalSettings.service.d.ts +17 -17
- package/lib/Shared/services/OnPagingFiltersChange.service.d.ts +10 -10
- package/lib/Shared/services/render-component-service.service.d.ts +10 -10
- package/lib/Shared/services/validationErrorMassage.service.d.ts +14 -14
- package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +59 -59
- package/lib/controls/Calendar/Calendar.component.d.ts +42 -42
- package/lib/controls/CheckBox/CheckBox.component.d.ts +37 -37
- package/lib/controls/ConfirmationModal/ConfirmationModal.component.d.ts +29 -29
- package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +61 -61
- package/lib/controls/DropdownList/DropdownList.component.d.ts +55 -55
- package/lib/controls/FileUplaod/FileUplaod.component.d.ts +58 -58
- package/lib/controls/Form/Form.component.d.ts +28 -28
- package/lib/controls/HtmlEditor/HtmlEditor.component.d.ts +49 -49
- package/lib/controls/ImageUpload/ImageUpload.component.d.ts +70 -70
- package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +70 -54
- package/lib/controls/MultiLingualHtmlEditor/MultiLingualHtmlEditor.component.d.ts +65 -65
- package/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.d.ts +74 -74
- package/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.d.ts +73 -73
- package/lib/controls/Paging/JwPagination.component.d.ts +27 -27
- package/lib/controls/Paging/Paging.component.d.ts +57 -57
- package/lib/controls/Phone/Phone.component.d.ts +43 -43
- package/lib/controls/ProfileImageUploader/ProfileImageUploader.component.d.ts +69 -69
- package/lib/controls/RadioButton/RadioButton.component.d.ts +37 -37
- package/lib/controls/Recaptcha/Recaptcha.component.d.ts +41 -41
- package/lib/controls/Repeater/repeater/repeater.component.d.ts +29 -29
- package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +23 -23
- package/lib/controls/Repeater/repeater-item-field/repeater-item-field.component.d.ts +11 -11
- package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +19 -19
- package/lib/controls/TagsInput/TagsInput.component.d.ts +58 -58
- package/lib/controls/TextArea/TextArea.component.d.ts +51 -51
- package/lib/controls/TextBox/TextBox.component.d.ts +66 -66
- package/lib/controls/Toggleslide/toggleslide.component.d.ts +33 -33
- package/lib/controls/bbsf-controls.module.d.ts +70 -77
- package/lib/controls/page-header-component/page-header-component.component.d.ts +20 -20
- package/package.json +54 -63
- package/public-api.d.ts +118 -117
- package/src/lib/assets/Style-rtl.scss +46 -28
- package/src/lib/assets/Style.scss +4 -4
- package/src/lib/assets/images/marker-pin.svg +4 -0
- package/src/lib/assets/sass/base.scss +73 -21
- package/esm2020/lib/Shared/Models/MapAutoCompleteOptions.mjs +0 -4
- package/esm2020/lib/Shared/services/OnPagingFiltersChange.service.mjs +0 -24
- package/esm2020/lib/Shared/services/validationErrorMassage.service.mjs +0 -170
- package/esm2020/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.mjs +0 -262
- package/esm2020/lib/controls/Calendar/Calendar.component.mjs +0 -173
- package/esm2020/lib/controls/CheckBox/CheckBox.component.mjs +0 -117
- package/esm2020/lib/controls/DateTimePicker/DateTimePicker.component.mjs +0 -223
- package/esm2020/lib/controls/DropdownList/DropdownList.component.mjs +0 -194
- package/esm2020/lib/controls/FileUplaod/FileUplaod.component.mjs +0 -447
- package/esm2020/lib/controls/HtmlEditor/HtmlEditor.component.mjs +0 -226
- 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 -429
- package/esm2020/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.mjs +0 -428
- package/esm2020/lib/controls/Phone/Phone.component.mjs +0 -129
- package/esm2020/lib/controls/ProfileImageUploader/ProfileImageUploader.component.mjs +0 -376
- package/esm2020/lib/controls/RadioButton/RadioButton.component.mjs +0 -109
- package/esm2020/lib/controls/TagsInput/TagsInput.component.mjs +0 -277
- package/esm2020/lib/controls/TextArea/TextArea.component.mjs +0 -196
- package/esm2020/lib/controls/TextBox/TextBox.component.mjs +0 -312
- package/esm2020/lib/controls/Toggleslide/toggleslide.component.mjs +0 -90
- package/esm2020/lib/controls/bbsf-controls.module.mjs +0 -361
- package/fesm2015/bnsights-bbsf-controls.mjs.map +0 -1
- package/fesm2020/bnsights-bbsf-controls.mjs.map +0 -1
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
export class RepeaterItemFieldComponent {
|
|
5
|
-
constructor() { }
|
|
6
|
-
ngOnInit() {
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: 'repeater-item-field', template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>\r\n" }]
|
|
14
|
-
}], ctorParameters:
|
|
15
|
-
type: Input
|
|
16
|
-
}], filedIndex: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}], itemIndex: [{
|
|
19
|
-
type: Input
|
|
20
|
-
}] } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class RepeaterItemFieldComponent {
|
|
5
|
+
constructor() { }
|
|
6
|
+
ngOnInit() {
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RepeaterItemFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: RepeaterItemFieldComponent, selector: "repeater-item-field", inputs: { templates: "templates", filedIndex: "filedIndex", itemIndex: "itemIndex" }, ngImport: i0, template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>\r\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RepeaterItemFieldComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'repeater-item-field', template: "<ng-container *ngFor=\"let template of templates ; index as i\">\r\n <ng-container *ngIf=\"i==filedIndex\" [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext] ={itemIndex:itemIndex,controlIndex:i}></ng-container>\r\n </ng-container>\r\n" }]
|
|
14
|
+
}], ctorParameters: () => [], propDecorators: { templates: [{
|
|
15
|
+
type: Input
|
|
16
|
+
}], filedIndex: [{
|
|
17
|
+
type: Input
|
|
18
|
+
}], itemIndex: [{
|
|
19
|
+
type: Input
|
|
20
|
+
}] } });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItaXRlbS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItaXRlbS1maWVsZC9yZXBlYXRlci1pdGVtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci1pdGVtLWZpZWxkL3JlcGVhdGVyLWl0ZW0tZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXVCLE1BQU0sZUFBZSxDQUFDOzs7QUFNdEUsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzs4R0FSVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixpSkNOdkMseVBBR0E7OzJGREdhLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSxxQkFBcUI7d0RBSXRCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyZXBlYXRlci1pdGVtLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItaXRlbS1maWVsZC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcGVhdGVySXRlbUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB0ZW1wbGF0ZXM6ICBBcnJheTxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBASW5wdXQoKSBmaWxlZEluZGV4OiBudW1iZXI7XHJcbiAgQElucHV0KCkgaXRlbUluZGV4OiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGVtcGxhdGUgb2YgdGVtcGxhdGVzIDsgaW5kZXggYXMgaVwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImk9PWZpbGVkSW5kZXhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdID17aXRlbUluZGV4Oml0ZW1JbmRleCxjb250cm9sSW5kZXg6aX0+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
package/{esm2020 → esm2022}/lib/controls/Repeater/repeater-table/repeater-table.component.mjs
RENAMED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { FormGroup } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@bnsights/bbsf-utilities";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "../repeater-field-builder/repeater-field-builder.component";
|
|
7
|
-
export class RepeaterTableComponent {
|
|
8
|
-
constructor(utilityService) {
|
|
9
|
-
this.utilityService = utilityService;
|
|
10
|
-
this.items = [];
|
|
11
|
-
this.originalItems = [];
|
|
12
|
-
}
|
|
13
|
-
ngOnInit() {
|
|
14
|
-
this.repeaterGroup = new FormGroup({});
|
|
15
|
-
this.group.addControl(this.options.Name, this.repeaterGroup);
|
|
16
|
-
if (this.options.RepeaterValue.length > 0) {
|
|
17
|
-
this.originalItems = this.options.RepeaterValue;
|
|
18
|
-
for (let index = 0; index < this.options.RepeaterValue.length; index++) {
|
|
19
|
-
this.items.push(index);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
else
|
|
23
|
-
for (let index = 0; index < this.options.MinRequiredItems; index++) {
|
|
24
|
-
this.items.push(index);
|
|
25
|
-
}
|
|
26
|
-
this.repeaterGroup.valueChanges.subscribe((res) => {
|
|
27
|
-
let result = [];
|
|
28
|
-
let rowNumber = [];
|
|
29
|
-
let addItems = [];
|
|
30
|
-
for (const key in this.repeaterGroup.controls) {
|
|
31
|
-
if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
|
|
32
|
-
const keySplitArr = key.split('.');
|
|
33
|
-
let item = {
|
|
34
|
-
[keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
|
|
35
|
-
};
|
|
36
|
-
addItems.push(item);
|
|
37
|
-
if (!rowNumber.includes(keySplitArr[1]))
|
|
38
|
-
rowNumber.push(keySplitArr[1]);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
for (let index = 0; index < rowNumber.length; index++) {
|
|
42
|
-
const row = rowNumber[index];
|
|
43
|
-
let addObject = {};
|
|
44
|
-
let filteredElements = addItems.filter(item => item[row]);
|
|
45
|
-
for (let index = 0; index < filteredElements.length; index++) {
|
|
46
|
-
const filteredElement = filteredElements[index];
|
|
47
|
-
for (const key in filteredElement) {
|
|
48
|
-
if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
|
|
49
|
-
const element = filteredElement[key];
|
|
50
|
-
for (const key in element) {
|
|
51
|
-
if (Object.prototype.hasOwnProperty.call(element, key)) {
|
|
52
|
-
const value = element[key];
|
|
53
|
-
addObject[key] = value;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
result.push(addObject);
|
|
60
|
-
}
|
|
61
|
-
this.options.RepeaterValue = result;
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
deleteItem(Index) {
|
|
65
|
-
if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
|
|
66
|
-
return;
|
|
67
|
-
let deletedControls = [];
|
|
68
|
-
let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
|
|
69
|
-
for (const key in this.repeaterGroup.controls) {
|
|
70
|
-
if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
|
|
71
|
-
for (let index = 0; index < controlNames.length; index++) {
|
|
72
|
-
const element = controlNames[index];
|
|
73
|
-
const keySplitArr = key.split('.');
|
|
74
|
-
if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
|
|
75
|
-
const element = this.repeaterGroup.controls[key];
|
|
76
|
-
deletedControls.push({ [key]: element });
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
for (let index = 0; index < deletedControls.length; index++) {
|
|
82
|
-
const element = deletedControls[index];
|
|
83
|
-
for (const key in element) {
|
|
84
|
-
if (Object.prototype.hasOwnProperty.call(element, key)) {
|
|
85
|
-
this.repeaterGroup.removeControl(key);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
this.items = this.items.filter((res) => res != this.items[Index]);
|
|
90
|
-
}
|
|
91
|
-
addItem() {
|
|
92
|
-
if (this.items.length == 0)
|
|
93
|
-
this.items.push(this.items.length);
|
|
94
|
-
else
|
|
95
|
-
this.items.push(this.items[this.items.length - 1] + 1);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
101
|
-
type: Component,
|
|
102
|
-
args: [{ selector: 'BBSF-repeater-table', template: "<div class=\"form-group bbsf-control bbsf-repeater\">\r\n <!--table-->\r\n <div class=\"table-responsive\">\r\n <table class=\"bbsf-repeater-table table {{options.RepeaterTableExtraClasses}}\">\r\n <thead class=\"table-head\">\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" [hidden]=\"item.IsHiddenInput\">{{item.HeaderTitle}}</th>\r\n <th *ngIf=\"!options.DisableDeleteButton\" class=\"text-center\">{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\" [hidden]=\"RepeaterField.IsHiddenInput\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td *ngIf=\"!options.DisableDeleteButton\" class=\"td-delete\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}} btn btn-icon btn-sm btn-danger\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--add button-->\r\n <div class=\"repeater-add-btn\" *ngIf=\"!options.DisableAddButton\">\r\n <button class=\"{{options.AddButtonExtraClasses}} btn btn-sm btn-brand\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n" }]
|
|
103
|
-
}], ctorParameters:
|
|
104
|
-
type: Input
|
|
105
|
-
}], options: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1JlcGVhdGVyL3JlcGVhdGVyLXRhYmxlL3JlcGVhdGVyLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci10YWJsZS9yZXBlYXRlci10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVMzQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQW1CLGNBQTZCO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBSmhELFVBQUssR0FBYSxFQUFFLENBQUE7UUFFcEIsa0JBQWEsR0FBUSxFQUFFLENBQUM7SUFFNEIsQ0FBQztJQUVyRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsSUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUN0QztZQUNFLElBQUksQ0FBQyxhQUFhLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDL0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLXJlcGVhdGVyLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7IFxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogUmVwZWF0ZXJPcHRpb25zO1xyXG4gIGl0ZW1zOiBudW1iZXJbXSA9IFtdXHJcbiAgcmVwZWF0ZXJHcm91cDogRm9ybUdyb3VwO1xyXG4gIG9yaWdpbmFsSXRlbXM6YW55IFtdPVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVwZWF0ZXJHcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCB0aGlzLnJlcGVhdGVyR3JvdXApO1xyXG4gICAgaWYodGhpcy5vcHRpb25zLlJlcGVhdGVyVmFsdWUubGVuZ3RoPjApXHJcbiAgICB7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxJdGVtcz0gdGhpcy5vcHRpb25zLlJlcGVhdGVyVmFsdWU7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICB0aGlzLml0ZW1zLnB1c2goaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgZWxzZVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlcGVhdGVyR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgbGV0IHJvd051bWJlciA9IFtdO1xyXG4gICAgICBsZXQgYWRkSXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICBba2V5U3BsaXRBcnJbMV1dOiB7IFtrZXlTcGxpdEFyclswXV06IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdLnZhbHVlW2tleV0gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWRkSXRlbXMucHVzaChpdGVtKVxyXG4gICAgICAgICAgaWYgKCFyb3dOdW1iZXIuaW5jbHVkZXMoa2V5U3BsaXRBcnJbMV0pKVxyXG4gICAgICAgICAgICByb3dOdW1iZXIucHVzaChrZXlTcGxpdEFyclsxXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd051bWJlci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCByb3cgPSByb3dOdW1iZXJbaW5kZXhdO1xyXG4gICAgICAgIGxldCBhZGRPYmplY3QgPSB7fVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZEVsZW1lbnRzID0gYWRkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbVtyb3ddKVxyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWx0ZXJlZEVsZW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50c1tpbmRleF07XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJlZEVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbGVtZW50LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICBhZGRPYmplY3Rba2V5XSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGFkZE9iamVjdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZSA9IHJlc3VsdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShJbmRleCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zICYmIHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBsZXQgZGVsZXRlZENvbnRyb2xzOiBhbnlbXSA9IFtdXHJcbiAgICBsZXQgY29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLlJlcGVhdGVyU3RydWN0dXJlLm1hcChlID0+IGUuQ29udHJvbE9wdGlvbnMuTmFtZSlcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scykge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scywga2V5KSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGlmIChrZXlTcGxpdEFyclswXSArIGtleVNwbGl0QXJyWzFdID09IGAke2VsZW1lbnR9JHtJbmRleH1gKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHNba2V5XTtcclxuICAgICAgICAgICAgZGVsZXRlZENvbnRyb2xzLnB1c2goeyBba2V5XTogZWxlbWVudCB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRlbGV0ZWRDb250cm9scy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRlbGV0ZWRDb250cm9sc1tpbmRleF07XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgIHRoaXMucmVwZWF0ZXJHcm91cC5yZW1vdmVDb250cm9sKGtleSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKHJlcykgPT4gcmVzICE9IHRoaXMuaXRlbXNbSW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIGlmKHRoaXMuaXRlbXMubGVuZ3RoPT0wKVxyXG4gICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuaXRlbXMubGVuZ3RoKTtcclxuICAgIGVsc2VcclxuICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLml0ZW1zW3RoaXMuaXRlbXMubGVuZ3RoLTFdKzEpO1xyXG59XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi1yZXBlYXRlclwiPlxyXG4gIDwhLS10YWJsZS0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICA8dGFibGUgY2xhc3M9XCJiYnNmLXJlcGVhdGVyLXRhYmxlIHRhYmxlICB7e29wdGlvbnMuUmVwZWF0ZXJUYWJsZUV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIDx0aGVhZCBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICA8dHIgY2xhc3M9XCJ7e29wdGlvbnMuUmVwZWF0ZXJUYWJsZVJvd0V4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucy5SZXBlYXRlclN0cnVjdHVyZVwiIFtoaWRkZW5dPVwiaXRlbS5Jc0hpZGRlbklucHV0XCI+e3tpdGVtLkhlYWRlclRpdGxlfX08L3RoPlxyXG4gICAgICAgICAgPHRoICpuZ0lmPVwiIW9wdGlvbnMuRGlzYWJsZURlbGV0ZUJ1dHRvblwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUob3B0aW9ucy5BY3Rpb25MYWJlbEtleSl9fTwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyAgOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IFJlcGVhdGVyRmllbGQgb2Ygb3B0aW9ucy5SZXBlYXRlclN0cnVjdHVyZSAgOyBpbmRleCBhcyByXCIgW2hpZGRlbl09XCJSZXBlYXRlckZpZWxkLklzSGlkZGVuSW5wdXRcIj5cclxuICAgICAgICAgICAgPHJlcGVhdGVyLWZpZWxkLWJ1aWxkZXIgW1JlcGVhdGVyRmllbGRdPVwiUmVwZWF0ZXJGaWVsZFwiIFtpdGVtTnVtYmVyXT1cImlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNWYWx1ZV09XCJvcmlnaW5hbEl0ZW1zXCIgW2NvbnRyb2xOdW1iZXJdPVwiclwiIFtncm91cF09XCJyZXBlYXRlckdyb3VwXCI+XHJcbiAgICAgICAgICAgIDwvcmVwZWF0ZXItZmllbGQtYnVpbGRlcj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCIhb3B0aW9ucy5EaXNhYmxlRGVsZXRlQnV0dG9uXCIgY2xhc3M9XCJ0ZC1kZWxldGVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7b3B0aW9ucy5EZWxldGVCdXR0b25FeHRyYUNsYXNzZXN9fSBidG4gYnRuLWljb24gYnRuLXNtIGJ0bi1kYW5nZXJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoaXRlbXMubGVuZ3RoID09b3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zJiZvcHRpb25zLklzUmVxdWlyZWQpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJvcHRpb25zLkRlbGV0ZUJ1dHRvblRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuICA8IS0tYWRkIGJ1dHRvbi0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXBlYXRlci1hZGQtYnRuXCIgKm5nSWY9XCIhb3B0aW9ucy5EaXNhYmxlQWRkQnV0dG9uXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwie3tvcHRpb25zLkFkZEJ1dHRvbkV4dHJhQ2xhc3Nlc319IGJ0biBidG4tc20gYnRuLWJyYW5kXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRJdGVtKClcIj5cclxuICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJvcHRpb25zLkFkZEJ1dHRvblRleHRcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuIl19
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@bnsights/bbsf-utilities";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "../repeater-field-builder/repeater-field-builder.component";
|
|
7
|
+
export class RepeaterTableComponent {
|
|
8
|
+
constructor(utilityService) {
|
|
9
|
+
this.utilityService = utilityService;
|
|
10
|
+
this.items = [];
|
|
11
|
+
this.originalItems = [];
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.repeaterGroup = new FormGroup({});
|
|
15
|
+
this.group.addControl(this.options.Name, this.repeaterGroup);
|
|
16
|
+
if (this.options.RepeaterValue.length > 0) {
|
|
17
|
+
this.originalItems = this.options.RepeaterValue;
|
|
18
|
+
for (let index = 0; index < this.options.RepeaterValue.length; index++) {
|
|
19
|
+
this.items.push(index);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else
|
|
23
|
+
for (let index = 0; index < this.options.MinRequiredItems; index++) {
|
|
24
|
+
this.items.push(index);
|
|
25
|
+
}
|
|
26
|
+
this.repeaterGroup.valueChanges.subscribe((res) => {
|
|
27
|
+
let result = [];
|
|
28
|
+
let rowNumber = [];
|
|
29
|
+
let addItems = [];
|
|
30
|
+
for (const key in this.repeaterGroup.controls) {
|
|
31
|
+
if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
|
|
32
|
+
const keySplitArr = key.split('.');
|
|
33
|
+
let item = {
|
|
34
|
+
[keySplitArr[1]]: { [keySplitArr[0]]: this.group.controls[this.options.Name].value[key] }
|
|
35
|
+
};
|
|
36
|
+
addItems.push(item);
|
|
37
|
+
if (!rowNumber.includes(keySplitArr[1]))
|
|
38
|
+
rowNumber.push(keySplitArr[1]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (let index = 0; index < rowNumber.length; index++) {
|
|
42
|
+
const row = rowNumber[index];
|
|
43
|
+
let addObject = {};
|
|
44
|
+
let filteredElements = addItems.filter(item => item[row]);
|
|
45
|
+
for (let index = 0; index < filteredElements.length; index++) {
|
|
46
|
+
const filteredElement = filteredElements[index];
|
|
47
|
+
for (const key in filteredElement) {
|
|
48
|
+
if (Object.prototype.hasOwnProperty.call(filteredElement, key)) {
|
|
49
|
+
const element = filteredElement[key];
|
|
50
|
+
for (const key in element) {
|
|
51
|
+
if (Object.prototype.hasOwnProperty.call(element, key)) {
|
|
52
|
+
const value = element[key];
|
|
53
|
+
addObject[key] = value;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
result.push(addObject);
|
|
60
|
+
}
|
|
61
|
+
this.options.RepeaterValue = result;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
deleteItem(Index) {
|
|
65
|
+
if (this.items.length == this.options.MinRequiredItems && this.options.IsRequired)
|
|
66
|
+
return;
|
|
67
|
+
let deletedControls = [];
|
|
68
|
+
let controlNames = this.options.RepeaterStructure.map(e => e.ControlOptions.Name);
|
|
69
|
+
for (const key in this.repeaterGroup.controls) {
|
|
70
|
+
if (Object.prototype.hasOwnProperty.call(this.repeaterGroup.controls, key)) {
|
|
71
|
+
for (let index = 0; index < controlNames.length; index++) {
|
|
72
|
+
const element = controlNames[index];
|
|
73
|
+
const keySplitArr = key.split('.');
|
|
74
|
+
if (keySplitArr[0] + keySplitArr[1] == `${element}${Index}`) {
|
|
75
|
+
const element = this.repeaterGroup.controls[key];
|
|
76
|
+
deletedControls.push({ [key]: element });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (let index = 0; index < deletedControls.length; index++) {
|
|
82
|
+
const element = deletedControls[index];
|
|
83
|
+
for (const key in element) {
|
|
84
|
+
if (Object.prototype.hasOwnProperty.call(element, key)) {
|
|
85
|
+
this.repeaterGroup.removeControl(key);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.items = this.items.filter((res) => res != this.items[Index]);
|
|
90
|
+
}
|
|
91
|
+
addItem() {
|
|
92
|
+
if (this.items.length == 0)
|
|
93
|
+
this.items.push(this.items.length);
|
|
94
|
+
else
|
|
95
|
+
this.items.push(this.items[this.items.length - 1] + 1);
|
|
96
|
+
}
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RepeaterTableComponent, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.6", type: RepeaterTableComponent, selector: "BBSF-repeater-table", inputs: { group: "group", options: "options" }, ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-repeater\">\r\n <!--table-->\r\n <div class=\"table-responsive\">\r\n <table class=\"bbsf-repeater-table table {{options.RepeaterTableExtraClasses}}\">\r\n <thead class=\"table-head\">\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" [hidden]=\"item.IsHiddenInput\">{{item.HeaderTitle}}</th>\r\n <th *ngIf=\"!options.DisableDeleteButton\" class=\"text-center\">{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\" [hidden]=\"RepeaterField.IsHiddenInput\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td *ngIf=\"!options.DisableDeleteButton\" class=\"td-delete\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}} btn btn-icon btn-sm btn-danger\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--add button-->\r\n <div class=\"repeater-add-btn\" *ngIf=\"!options.DisableAddButton\">\r\n <button class=\"{{options.AddButtonExtraClasses}} btn btn-sm btn-brand\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.RepeaterFieldBuilderComponent, selector: "repeater-field-builder", inputs: ["group", "itemNumber", "controlNumber", "RepeaterField", "itemsValue"] }] }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: RepeaterTableComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: 'BBSF-repeater-table', template: "<div class=\"form-group bbsf-control bbsf-repeater\">\r\n <!--table-->\r\n <div class=\"table-responsive\">\r\n <table class=\"bbsf-repeater-table table {{options.RepeaterTableExtraClasses}}\">\r\n <thead class=\"table-head\">\r\n <tr class=\"{{options.RepeaterTableRowExtraClasses}}\">\r\n <th *ngFor=\"let item of options.RepeaterStructure\" [hidden]=\"item.IsHiddenInput\">{{item.HeaderTitle}}</th>\r\n <th *ngIf=\"!options.DisableDeleteButton\" class=\"text-center\">{{utilityService.getResourceValue(options.ActionLabelKey)}}</th>\r\n </tr>\r\n </thead>\r\n <tbody class=\"table-body\">\r\n <tr *ngFor=\"let item of items ; index as i\">\r\n <td *ngFor=\"let RepeaterField of options.RepeaterStructure ; index as r\" [hidden]=\"RepeaterField.IsHiddenInput\">\r\n <repeater-field-builder [RepeaterField]=\"RepeaterField\" [itemNumber]=\"i\"\r\n [itemsValue]=\"originalItems\" [controlNumber]=\"r\" [group]=\"repeaterGroup\">\r\n </repeater-field-builder>\r\n </td>\r\n <td *ngIf=\"!options.DisableDeleteButton\" class=\"td-delete\">\r\n <button class=\"{{options.DeleteButtonExtraClasses}} btn btn-icon btn-sm btn-danger\" type=\"button\" (click)=\"deleteItem(i)\"\r\n [disabled]=\"(items.length ==options.MinRequiredItems&&options.IsRequired)\">\r\n <span [innerHTML]=\"options.DeleteButtonText\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <!--add button-->\r\n <div class=\"repeater-add-btn\" *ngIf=\"!options.DisableAddButton\">\r\n <button class=\"{{options.AddButtonExtraClasses}} btn btn-sm btn-brand\" type=\"button\" (click)=\"addItem()\">\r\n <span [innerHTML]=\"options.AddButtonText\"></span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n" }]
|
|
103
|
+
}], ctorParameters: () => [{ type: i1.UtilityService }], propDecorators: { group: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], options: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}] } });
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1jb250cm9scy9zcmMvbGliL2NvbnRyb2xzL1JlcGVhdGVyL3JlcGVhdGVyLXRhYmxlL3JlcGVhdGVyLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtY29udHJvbHMvc3JjL2xpYi9jb250cm9scy9SZXBlYXRlci9yZXBlYXRlci10YWJsZS9yZXBlYXRlci10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVMzQyxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQW1CLGNBQTZCO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBSmhELFVBQUssR0FBYSxFQUFFLENBQUE7UUFFcEIsa0JBQWEsR0FBUSxFQUFFLENBQUM7SUFFNEIsQ0FBQztJQUVyRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0QsSUFBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUN0QztZQUNFLElBQUksQ0FBQyxhQUFhLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDL0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdCQlNGLXJlcGVhdGVyLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7IFxyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgb3B0aW9uczogUmVwZWF0ZXJPcHRpb25zO1xyXG4gIGl0ZW1zOiBudW1iZXJbXSA9IFtdXHJcbiAgcmVwZWF0ZXJHcm91cDogRm9ybUdyb3VwO1xyXG4gIG9yaWdpbmFsSXRlbXM6YW55IFtdPVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVwZWF0ZXJHcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgdGhpcy5ncm91cC5hZGRDb250cm9sKHRoaXMub3B0aW9ucy5OYW1lLCB0aGlzLnJlcGVhdGVyR3JvdXApO1xyXG4gICAgaWYodGhpcy5vcHRpb25zLlJlcGVhdGVyVmFsdWUubGVuZ3RoPjApXHJcbiAgICB7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxJdGVtcz0gdGhpcy5vcHRpb25zLlJlcGVhdGVyVmFsdWU7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICB0aGlzLml0ZW1zLnB1c2goaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgZWxzZVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zOyBpbmRleCsrKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMucHVzaChpbmRleCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlcGVhdGVyR3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgbGV0IHJvd051bWJlciA9IFtdO1xyXG4gICAgICBsZXQgYWRkSXRlbXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5yZXBlYXRlckdyb3VwLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHMsIGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGxldCBpdGVtID0ge1xyXG4gICAgICAgICAgICBba2V5U3BsaXRBcnJbMV1dOiB7IFtrZXlTcGxpdEFyclswXV06IHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5vcHRpb25zLk5hbWVdLnZhbHVlW2tleV0gfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYWRkSXRlbXMucHVzaChpdGVtKVxyXG4gICAgICAgICAgaWYgKCFyb3dOdW1iZXIuaW5jbHVkZXMoa2V5U3BsaXRBcnJbMV0pKVxyXG4gICAgICAgICAgICByb3dOdW1iZXIucHVzaChrZXlTcGxpdEFyclsxXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd051bWJlci5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCByb3cgPSByb3dOdW1iZXJbaW5kZXhdO1xyXG4gICAgICAgIGxldCBhZGRPYmplY3QgPSB7fVxyXG4gICAgICAgIGxldCBmaWx0ZXJlZEVsZW1lbnRzID0gYWRkSXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbVtyb3ddKVxyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWx0ZXJlZEVsZW1lbnRzLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRFbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50c1tpbmRleF07XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmaWx0ZXJlZEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJlZEVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZmlsdGVyZWRFbGVtZW50W2tleV07XHJcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlbGVtZW50LCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudFtrZXldO1xyXG4gICAgICAgICAgICAgICAgICBhZGRPYmplY3Rba2V5XSA9IHZhbHVlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdC5wdXNoKGFkZE9iamVjdClcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm9wdGlvbnMuUmVwZWF0ZXJWYWx1ZSA9IHJlc3VsdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgZGVsZXRlSXRlbShJbmRleCkge1xyXG4gICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09IHRoaXMub3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zICYmIHRoaXMub3B0aW9ucy5Jc1JlcXVpcmVkKVxyXG4gICAgICByZXR1cm47XHJcbiAgICBsZXQgZGVsZXRlZENvbnRyb2xzOiBhbnlbXSA9IFtdXHJcbiAgICBsZXQgY29udHJvbE5hbWVzID0gdGhpcy5vcHRpb25zLlJlcGVhdGVyU3RydWN0dXJlLm1hcChlID0+IGUuQ29udHJvbE9wdGlvbnMuTmFtZSlcclxuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scykge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMucmVwZWF0ZXJHcm91cC5jb250cm9scywga2V5KSkge1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb250cm9sTmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gY29udHJvbE5hbWVzW2luZGV4XTtcclxuICAgICAgICAgIGNvbnN0IGtleVNwbGl0QXJyID0ga2V5LnNwbGl0KCcuJylcclxuICAgICAgICAgIGlmIChrZXlTcGxpdEFyclswXSArIGtleVNwbGl0QXJyWzFdID09IGAke2VsZW1lbnR9JHtJbmRleH1gKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnJlcGVhdGVyR3JvdXAuY29udHJvbHNba2V5XTtcclxuICAgICAgICAgICAgZGVsZXRlZENvbnRyb2xzLnB1c2goeyBba2V5XTogZWxlbWVudCB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRlbGV0ZWRDb250cm9scy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRlbGV0ZWRDb250cm9sc1tpbmRleF07XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGVsZW1lbnQpIHtcclxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVsZW1lbnQsIGtleSkpIHtcclxuICAgICAgICAgIHRoaXMucmVwZWF0ZXJHcm91cC5yZW1vdmVDb250cm9sKGtleSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKHJlcykgPT4gcmVzICE9IHRoaXMuaXRlbXNbSW5kZXhdKVxyXG4gIH1cclxuXHJcbiAgYWRkSXRlbSgpIHtcclxuICAgIGlmKHRoaXMuaXRlbXMubGVuZ3RoPT0wKVxyXG4gICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuaXRlbXMubGVuZ3RoKTtcclxuICAgIGVsc2VcclxuICAgIHRoaXMuaXRlbXMucHVzaCh0aGlzLml0ZW1zW3RoaXMuaXRlbXMubGVuZ3RoLTFdKzEpO1xyXG59XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBiYnNmLWNvbnRyb2wgYmJzZi1yZXBlYXRlclwiPlxyXG4gIDwhLS10YWJsZS0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICA8dGFibGUgY2xhc3M9XCJiYnNmLXJlcGVhdGVyLXRhYmxlIHRhYmxlICB7e29wdGlvbnMuUmVwZWF0ZXJUYWJsZUV4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgIDx0aGVhZCBjbGFzcz1cInRhYmxlLWhlYWRcIj5cclxuICAgICAgICA8dHIgY2xhc3M9XCJ7e29wdGlvbnMuUmVwZWF0ZXJUYWJsZVJvd0V4dHJhQ2xhc3Nlc319XCI+XHJcbiAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9ucy5SZXBlYXRlclN0cnVjdHVyZVwiIFtoaWRkZW5dPVwiaXRlbS5Jc0hpZGRlbklucHV0XCI+e3tpdGVtLkhlYWRlclRpdGxlfX08L3RoPlxyXG4gICAgICAgICAgPHRoICpuZ0lmPVwiIW9wdGlvbnMuRGlzYWJsZURlbGV0ZUJ1dHRvblwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUob3B0aW9ucy5BY3Rpb25MYWJlbEtleSl9fTwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5IGNsYXNzPVwidGFibGUtYm9keVwiPlxyXG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcyAgOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IFJlcGVhdGVyRmllbGQgb2Ygb3B0aW9ucy5SZXBlYXRlclN0cnVjdHVyZSAgOyBpbmRleCBhcyByXCIgW2hpZGRlbl09XCJSZXBlYXRlckZpZWxkLklzSGlkZGVuSW5wdXRcIj5cclxuICAgICAgICAgICAgPHJlcGVhdGVyLWZpZWxkLWJ1aWxkZXIgW1JlcGVhdGVyRmllbGRdPVwiUmVwZWF0ZXJGaWVsZFwiIFtpdGVtTnVtYmVyXT1cImlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNWYWx1ZV09XCJvcmlnaW5hbEl0ZW1zXCIgW2NvbnRyb2xOdW1iZXJdPVwiclwiIFtncm91cF09XCJyZXBlYXRlckdyb3VwXCI+XHJcbiAgICAgICAgICAgIDwvcmVwZWF0ZXItZmllbGQtYnVpbGRlcj5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgKm5nSWY9XCIhb3B0aW9ucy5EaXNhYmxlRGVsZXRlQnV0dG9uXCIgY2xhc3M9XCJ0ZC1kZWxldGVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7b3B0aW9ucy5EZWxldGVCdXR0b25FeHRyYUNsYXNzZXN9fSBidG4gYnRuLWljb24gYnRuLXNtIGJ0bi1kYW5nZXJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoaXRlbXMubGVuZ3RoID09b3B0aW9ucy5NaW5SZXF1aXJlZEl0ZW1zJiZvcHRpb25zLklzUmVxdWlyZWQpXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJvcHRpb25zLkRlbGV0ZUJ1dHRvblRleHRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuICA8L2Rpdj5cclxuICA8IS0tYWRkIGJ1dHRvbi0tPlxyXG4gIDxkaXYgY2xhc3M9XCJyZXBlYXRlci1hZGQtYnRuXCIgKm5nSWY9XCIhb3B0aW9ucy5EaXNhYmxlQWRkQnV0dG9uXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwie3tvcHRpb25zLkFkZEJ1dHRvbkV4dHJhQ2xhc3Nlc319IGJ0biBidG4tc20gYnRuLWJyYW5kXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJhZGRJdGVtKClcIj5cclxuICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJvcHRpb25zLkFkZEJ1dHRvblRleHRcIj48L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5cclxuIl19
|