@ohioepa/oepa-ui-lib 1.1.0
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 +24 -0
- package/esm2022/lib/account-search-input/account-search-input.component.mjs +147 -0
- package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +151 -0
- package/esm2022/lib/action-btn/action-btn.component.mjs +70 -0
- package/esm2022/lib/action-btn/oepa-action-event.mjs +2 -0
- package/esm2022/lib/action-btn/oepa-action.mjs +2 -0
- package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +21 -0
- package/esm2022/lib/address/address.component.mjs +174 -0
- package/esm2022/lib/address/oepa-address.service.mjs +64 -0
- package/esm2022/lib/address/oepa-form-address.mjs +2 -0
- package/esm2022/lib/blank/blank.component.mjs +14 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +33 -0
- package/esm2022/lib/checkbox-input/checkbox-input.component.mjs +41 -0
- package/esm2022/lib/comment-modal/comment-modal.component.mjs +56 -0
- package/esm2022/lib/common-forms.module.mjs +291 -0
- package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +120 -0
- package/esm2022/lib/contact/contact.component.mjs +102 -0
- package/esm2022/lib/contact/oepa-form-contact.mjs +2 -0
- package/esm2022/lib/date-input/date-input.component.mjs +52 -0
- package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +68 -0
- package/esm2022/lib/datepicker/datepicker.component.mjs +131 -0
- package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +70 -0
- package/esm2022/lib/document/document-editor/document-editor.component.mjs +225 -0
- package/esm2022/lib/document/document-event-entity-type.mjs +7 -0
- package/esm2022/lib/document/document-event-type.mjs +7 -0
- package/esm2022/lib/document/document-event.mjs +2 -0
- package/esm2022/lib/document/document-group/document-group.component.mjs +210 -0
- package/esm2022/lib/document/document-part/document-part.component.mjs +19 -0
- package/esm2022/lib/document/document-part-editor/document-part-editor.component.mjs +296 -0
- package/esm2022/lib/document/document-placeholder-modal/document-placeholder-modal.component.mjs +49 -0
- package/esm2022/lib/document/document-section/document-section.component.mjs +226 -0
- package/esm2022/lib/document/document.service.mjs +325 -0
- package/esm2022/lib/document/group-modal/group-modal.component.mjs +46 -0
- package/esm2022/lib/document/part-modal/part-modal.component.mjs +48 -0
- package/esm2022/lib/document/portal-document-class.mjs +2 -0
- package/esm2022/lib/document/portal-document-group.mjs +2 -0
- package/esm2022/lib/document/portal-document-part.mjs +2 -0
- package/esm2022/lib/document/portal-document-placeholder.mjs +2 -0
- package/esm2022/lib/document/portal-document-section.mjs +2 -0
- package/esm2022/lib/document/portal-document-text.mjs +2 -0
- package/esm2022/lib/document/portal-document-type.mjs +2 -0
- package/esm2022/lib/document/portal-document.mjs +2 -0
- package/esm2022/lib/document/portal-email-attachment-type.mjs +2 -0
- package/esm2022/lib/document/portal-email-attachment.mjs +2 -0
- package/esm2022/lib/document/portal-email-filter.mjs +2 -0
- package/esm2022/lib/document/portal-email.mjs +2 -0
- package/esm2022/lib/document/section-modal/section-modal.component.mjs +46 -0
- package/esm2022/lib/dual-list-box/array.pipes.mjs +71 -0
- package/esm2022/lib/dual-list-box/dual-list-box.component.mjs +339 -0
- package/esm2022/lib/dual-list-box/items-moved-event.mjs +2 -0
- package/esm2022/lib/dual-list-box/list-box-item.mjs +2 -0
- package/esm2022/lib/ebiz-address/ebiz-address.component.mjs +62 -0
- package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +216 -0
- package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +38 -0
- package/esm2022/lib/edoc-attachment/edocument-attachment-metadata.mjs +2 -0
- package/esm2022/lib/edoc-attachment/edocument-attachment.mjs +2 -0
- package/esm2022/lib/edoc-attachment/edocument-reference.mjs +2 -0
- package/esm2022/lib/entity/entity.service.mjs +104 -0
- package/esm2022/lib/entity/organization-create-modal/organization-create-modal.component.mjs +307 -0
- package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs +127 -0
- package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs +304 -0
- package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +316 -0
- package/esm2022/lib/entity/person-search-input/person-search-input.component.mjs +129 -0
- package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +311 -0
- package/esm2022/lib/entity/place-create-modal/place-create-modal.component.mjs +14 -0
- package/esm2022/lib/entity/place-search-input/place-search-input.component.mjs +126 -0
- package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +216 -0
- package/esm2022/lib/esri-map/esri-map.component.mjs +416 -0
- package/esm2022/lib/file-upload/file-upload.component.mjs +148 -0
- package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +143 -0
- package/esm2022/lib/lynx-image-upload/lynx.service.mjs +47 -0
- package/esm2022/lib/masks/oepa-create-integer-mask.mjs +39 -0
- package/esm2022/lib/masks/oepa-integer-mask-args.mjs +2 -0
- package/esm2022/lib/message/message.component.mjs +19 -0
- package/esm2022/lib/message/oepa-message-type.mjs +7 -0
- package/esm2022/lib/message/oepa-message.mjs +31 -0
- package/esm2022/lib/message-list/message-list.component.mjs +24 -0
- package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +137 -0
- package/esm2022/lib/notes-modal/notes-modal.component.mjs +177 -0
- package/esm2022/lib/notes-modal/oepa-note-result.mjs +2 -0
- package/esm2022/lib/notes-modal/oepa-note.mjs +2 -0
- package/esm2022/lib/numeric-input/numeric-input.component.mjs +50 -0
- package/esm2022/lib/numeric-input.directive.mjs +76 -0
- package/esm2022/lib/oepa-error-message/oepa-error-message.component.mjs +39 -0
- package/esm2022/lib/oepa-forms.service.mjs +199 -0
- package/esm2022/lib/oepa-images.mjs +59 -0
- package/esm2022/lib/oepa-wait-message/oepa-wait-message.component.mjs +29 -0
- package/esm2022/lib/ohio-lat-long/ohio-lat-long.component.mjs +176 -0
- package/esm2022/lib/parameter/parameter.mjs +2 -0
- package/esm2022/lib/parameter/parameter.service.mjs +47 -0
- package/esm2022/lib/params-help-button/params-help-button.component.mjs +42 -0
- package/esm2022/lib/phone-number/phone-number.component.mjs +44 -0
- package/esm2022/lib/pin-modal/oepa-attestation.mjs +2 -0
- package/esm2022/lib/pin-modal/oepa-pin.mjs +2 -0
- package/esm2022/lib/pin-modal/oepa-pin.service.mjs +54 -0
- package/esm2022/lib/pin-modal/oepa-security-question.mjs +2 -0
- package/esm2022/lib/pin-modal/pin-modal.component.mjs +186 -0
- package/esm2022/lib/progress-indicator/progress-info.mjs +2 -0
- package/esm2022/lib/select-input/select-input.component.mjs +96 -0
- package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +63 -0
- package/esm2022/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.mjs +54 -0
- package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.mjs +2 -0
- package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.mjs +190 -0
- package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +89 -0
- package/esm2022/lib/start-end-timepicker/start-end-timepicker.component.mjs +126 -0
- package/esm2022/lib/table/oepa-p-column.mjs +2 -0
- package/esm2022/lib/table/oepa-table-cell-classname.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-click-event.mjs +2 -0
- package/esm2022/lib/table/oepa-table-cell-colspan.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-hidden.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-icon-classname.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-img-src.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-inner-html.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-input-component.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-not-selectable.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell-value.pipe.mjs +22 -0
- package/esm2022/lib/table/oepa-table-cell.mjs +2 -0
- package/esm2022/lib/table/oepa-table-column.mjs +2 -0
- package/esm2022/lib/table/oepa-table-config.mjs +2 -0
- package/esm2022/lib/table/oepa-table-filter.mjs +2 -0
- package/esm2022/lib/table/oepa-table-filtering.directive.mjs +57 -0
- package/esm2022/lib/table/oepa-table-header.mjs +2 -0
- package/esm2022/lib/table/oepa-table-page-info.mjs +2 -0
- package/esm2022/lib/table/oepa-table-popover.mjs +2 -0
- package/esm2022/lib/table/oepa-table-row.mjs +2 -0
- package/esm2022/lib/table/oepa-table-sort-criterion.mjs +2 -0
- package/esm2022/lib/table/oepa-table-sorting.directive.mjs +57 -0
- package/esm2022/lib/table/oepa-table.mjs +2 -0
- package/esm2022/lib/table/p-table/p-table.component.mjs +826 -0
- package/esm2022/lib/table/table-data-cell/table-data-cell-click-event.mjs +2 -0
- package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +60 -0
- package/esm2022/lib/table/table-export.service.mjs +57 -0
- package/esm2022/lib/table/table-header-cell/table-header-cell.component.mjs +61 -0
- package/esm2022/lib/table/table.component.mjs +793 -0
- package/esm2022/lib/table/table.service.mjs +112 -0
- package/esm2022/lib/template-confirmation-modal/template-confirmation-modal.component.mjs +46 -0
- package/esm2022/lib/text-area-input/text-area-input.component.mjs +48 -0
- package/esm2022/lib/text-input/text-input.component.mjs +48 -0
- package/esm2022/lib/timeout-modal/timeout-modal.component.mjs +31 -0
- package/esm2022/lib/timepicker/timepicker.component.mjs +48 -0
- package/esm2022/lib/validation/form-validator.mjs +2 -0
- package/esm2022/lib/validation/validation.service.mjs +134 -0
- package/esm2022/lib/yes-no/yes-no.component.mjs +44 -0
- package/esm2022/lib/yes-no-boolean/yes-no.component.mjs +44 -0
- package/esm2022/lib/yes-no-other-input/yes-no-other-input.component.mjs +41 -0
- package/esm2022/lib/zip-code/zip-code.component.mjs +42 -0
- package/esm2022/ohioepa-oepa-ui-lib.mjs +5 -0
- package/esm2022/public-api.mjs +142 -0
- package/fesm2022/ohioepa-oepa-ui-lib.mjs +10720 -0
- package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/account-search-input/account-search-input.component.d.ts +36 -0
- package/lib/account-search-modal/account-search-modal.component.d.ts +40 -0
- package/lib/action-btn/action-btn.component.d.ts +34 -0
- package/lib/action-btn/oepa-action-event.d.ts +19 -0
- package/lib/action-btn/oepa-action.d.ts +13 -0
- package/lib/action-btn-modal/action-btn-modal.component.d.ts +12 -0
- package/lib/address/address.component.d.ts +43 -0
- package/lib/address/oepa-address.service.d.ts +28 -0
- package/lib/address/oepa-form-address.d.ts +19 -0
- package/lib/blank/blank.component.d.ts +8 -0
- package/lib/checkbox/checkbox.component.d.ts +15 -0
- package/lib/checkbox-input/checkbox-input.component.d.ts +17 -0
- package/lib/comment-modal/comment-modal.component.d.ts +22 -0
- package/lib/common-forms.module.d.ts +104 -0
- package/lib/confirmation-modal/confirmation-modal.component.d.ts +49 -0
- package/lib/contact/contact.component.d.ts +33 -0
- package/lib/contact/oepa-form-contact.d.ts +58 -0
- package/lib/date-input/date-input.component.d.ts +18 -0
- package/lib/date-input-modal/date-input-modal.component.d.ts +25 -0
- package/lib/datepicker/datepicker.component.d.ts +28 -0
- package/lib/daterangepicker/daterangepicker.component.d.ts +22 -0
- package/lib/document/document-editor/document-editor.component.d.ts +34 -0
- package/lib/document/document-event-entity-type.d.ts +5 -0
- package/lib/document/document-event-type.d.ts +5 -0
- package/lib/document/document-event.d.ts +9 -0
- package/lib/document/document-group/document-group.component.d.ts +38 -0
- package/lib/document/document-part/document-part.component.d.ts +10 -0
- package/lib/document/document-part-editor/document-part-editor.component.d.ts +46 -0
- package/lib/document/document-placeholder-modal/document-placeholder-modal.component.d.ts +19 -0
- package/lib/document/document-section/document-section.component.d.ts +37 -0
- package/lib/document/document.service.d.ts +90 -0
- package/lib/document/group-modal/group-modal.component.d.ts +20 -0
- package/lib/document/part-modal/part-modal.component.d.ts +20 -0
- package/lib/document/portal-document-class.d.ts +10 -0
- package/lib/document/portal-document-group.d.ts +15 -0
- package/lib/document/portal-document-part.d.ts +22 -0
- package/lib/document/portal-document-placeholder.d.ts +12 -0
- package/lib/document/portal-document-section.d.ts +13 -0
- package/lib/document/portal-document-text.d.ts +7 -0
- package/lib/document/portal-document-type.d.ts +15 -0
- package/lib/document/portal-document.d.ts +27 -0
- package/lib/document/portal-email-attachment-type.d.ts +6 -0
- package/lib/document/portal-email-attachment.d.ts +12 -0
- package/lib/document/portal-email-filter.d.ts +12 -0
- package/lib/document/portal-email.d.ts +18 -0
- package/lib/document/section-modal/section-modal.component.d.ts +20 -0
- package/lib/dual-list-box/array.pipes.d.ts +36 -0
- package/lib/dual-list-box/dual-list-box.component.d.ts +91 -0
- package/lib/dual-list-box/items-moved-event.d.ts +11 -0
- package/lib/dual-list-box/list-box-item.d.ts +7 -0
- package/lib/ebiz-address/ebiz-address.component.d.ts +23 -0
- package/lib/edoc-attachment/edoc-attachment.component.d.ts +44 -0
- package/lib/edoc-attachment/edoc-attachment.service.d.ts +16 -0
- package/lib/edoc-attachment/edocument-attachment-metadata.d.ts +16 -0
- package/lib/edoc-attachment/edocument-attachment.d.ts +12 -0
- package/lib/edoc-attachment/edocument-reference.d.ts +5 -0
- package/lib/entity/entity.service.d.ts +31 -0
- package/lib/entity/organization-create-modal/organization-create-modal.component.d.ts +53 -0
- package/lib/entity/organization-search-input/organization-search-input.component.d.ts +34 -0
- package/lib/entity/organization-search-modal/organization-search-modal.component.d.ts +56 -0
- package/lib/entity/person-create-modal/person-create-modal.component.d.ts +53 -0
- package/lib/entity/person-search-input/person-search-input.component.d.ts +34 -0
- package/lib/entity/person-search-modal/person-search-modal.component.d.ts +56 -0
- package/lib/entity/place-create-modal/place-create-modal.component.d.ts +8 -0
- package/lib/entity/place-search-input/place-search-input.component.d.ts +34 -0
- package/lib/entity/place-search-modal/place-search-modal.component.d.ts +41 -0
- package/lib/esri-map/esri-map.component.d.ts +41 -0
- package/lib/file-upload/file-upload.component.d.ts +37 -0
- package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +36 -0
- package/lib/lynx-image-upload/lynx.service.d.ts +16 -0
- package/lib/masks/oepa-create-integer-mask.d.ts +8 -0
- package/lib/masks/oepa-integer-mask-args.d.ts +5 -0
- package/lib/message/message.component.d.ts +10 -0
- package/lib/message/oepa-message-type.d.ts +5 -0
- package/lib/message/oepa-message.d.ts +7 -0
- package/lib/message-list/message-list.component.d.ts +11 -0
- package/lib/multi-file-upload/multi-file-upload.component.d.ts +36 -0
- package/lib/notes-modal/notes-modal.component.d.ts +50 -0
- package/lib/notes-modal/oepa-note-result.d.ts +10 -0
- package/lib/notes-modal/oepa-note.d.ts +13 -0
- package/lib/numeric-input/numeric-input.component.d.ts +20 -0
- package/lib/numeric-input.directive.d.ts +19 -0
- package/lib/oepa-error-message/oepa-error-message.component.d.ts +9 -0
- package/lib/oepa-forms.service.d.ts +28 -0
- package/lib/oepa-images.d.ts +53 -0
- package/lib/oepa-wait-message/oepa-wait-message.component.d.ts +9 -0
- package/lib/ohio-lat-long/ohio-lat-long.component.d.ts +63 -0
- package/lib/parameter/parameter.d.ts +7 -0
- package/lib/parameter/parameter.service.d.ts +18 -0
- package/lib/params-help-button/params-help-button.component.d.ts +15 -0
- package/lib/phone-number/phone-number.component.d.ts +19 -0
- package/lib/pin-modal/oepa-attestation.d.ts +10 -0
- package/lib/pin-modal/oepa-pin.d.ts +26 -0
- package/lib/pin-modal/oepa-pin.service.d.ts +38 -0
- package/lib/pin-modal/oepa-security-question.d.ts +8 -0
- package/lib/pin-modal/pin-modal.component.d.ts +46 -0
- package/lib/progress-indicator/progress-info.d.ts +4 -0
- package/lib/select-input/select-input.component.d.ts +27 -0
- package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +23 -0
- package/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.d.ts +18 -0
- package/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.d.ts +10 -0
- package/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.d.ts +51 -0
- package/lib/shopping-cart/shopping-cart.service.d.ts +44 -0
- package/lib/start-end-timepicker/start-end-timepicker.component.d.ts +29 -0
- package/lib/table/oepa-p-column.d.ts +4 -0
- package/lib/table/oepa-table-cell-classname.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-click-event.d.ts +15 -0
- package/lib/table/oepa-table-cell-colspan.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-hidden.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-icon-classname.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-img-src.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-inner-html.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-input-component.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-not-selectable.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell-value.pipe.d.ts +9 -0
- package/lib/table/oepa-table-cell.d.ts +66 -0
- package/lib/table/oepa-table-column.d.ts +71 -0
- package/lib/table/oepa-table-config.d.ts +72 -0
- package/lib/table/oepa-table-filter.d.ts +10 -0
- package/lib/table/oepa-table-filtering.directive.d.ts +17 -0
- package/lib/table/oepa-table-header.d.ts +9 -0
- package/lib/table/oepa-table-page-info.d.ts +22 -0
- package/lib/table/oepa-table-popover.d.ts +28 -0
- package/lib/table/oepa-table-row.d.ts +84 -0
- package/lib/table/oepa-table-sort-criterion.d.ts +4 -0
- package/lib/table/oepa-table-sorting.directive.d.ts +16 -0
- package/lib/table/oepa-table.d.ts +42 -0
- package/lib/table/p-table/p-table.component.d.ts +155 -0
- package/lib/table/table-data-cell/table-data-cell-click-event.d.ts +5 -0
- package/lib/table/table-data-cell/table-data-cell.component.d.ts +23 -0
- package/lib/table/table-export.service.d.ts +33 -0
- package/lib/table/table-header-cell/table-header-cell.component.d.ts +24 -0
- package/lib/table/table.component.d.ts +144 -0
- package/lib/table/table.service.d.ts +28 -0
- package/lib/template-confirmation-modal/template-confirmation-modal.component.d.ts +19 -0
- package/lib/text-area-input/text-area-input.component.d.ts +19 -0
- package/lib/text-input/text-input.component.d.ts +19 -0
- package/lib/timeout-modal/timeout-modal.component.d.ts +13 -0
- package/lib/timepicker/timepicker.component.d.ts +17 -0
- package/lib/validation/form-validator.d.ts +10 -0
- package/lib/validation/validation.service.d.ts +16 -0
- package/lib/yes-no/yes-no.component.d.ts +19 -0
- package/lib/yes-no-boolean/yes-no.component.d.ts +19 -0
- package/lib/yes-no-other-input/yes-no-other-input.component.d.ts +18 -0
- package/lib/zip-code/zip-code.component.d.ts +19 -0
- package/ohioepa-oepa-ui-lib-1.1.0.tgz +0 -0
- package/package.json +25 -0
- package/public-api.d.ts +138 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ohioepa/oepa-common-lib";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
import * as i4 from "ngx-mask";
|
|
7
|
+
export class ContactComponent {
|
|
8
|
+
idService;
|
|
9
|
+
componentId = 'OepaContactComponent';
|
|
10
|
+
/** The form group for which this address is a member. */
|
|
11
|
+
group;
|
|
12
|
+
/** Form validation will be displayed when showValidation is true. */
|
|
13
|
+
showValidation = false;
|
|
14
|
+
firstNameLabel = 'First Name';
|
|
15
|
+
lastNameLabel = 'Last Name';
|
|
16
|
+
showMiddleName = false;
|
|
17
|
+
middleNameLabel = 'Middle Name';
|
|
18
|
+
emailLabel = 'Email';
|
|
19
|
+
phoneLabel = 'Phone';
|
|
20
|
+
faxLabel = 'Fax';
|
|
21
|
+
noFax = false;
|
|
22
|
+
showTitle = false;
|
|
23
|
+
noPhone = false;
|
|
24
|
+
noEmail = false;
|
|
25
|
+
isSearch = false;
|
|
26
|
+
// max length values. override if needed
|
|
27
|
+
firstNameMaxLength = 50;
|
|
28
|
+
middleNameMaxLength = 50;
|
|
29
|
+
lastNameMaxLength = 50;
|
|
30
|
+
titleMaxLength = 40;
|
|
31
|
+
emailMaxLength = 80;
|
|
32
|
+
constructor(idService) {
|
|
33
|
+
this.idService = idService;
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
if (this.group) {
|
|
37
|
+
this.componentId = this.idService.getComponentId(this.group);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContactComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ContactComponent, selector: "oepa-contact", inputs: { group: "group", showValidation: "showValidation", firstNameLabel: "firstNameLabel", lastNameLabel: "lastNameLabel", showMiddleName: "showMiddleName", middleNameLabel: "middleNameLabel", emailLabel: "emailLabel", phoneLabel: "phoneLabel", faxLabel: "faxLabel", noFax: "noFax", showTitle: "showTitle", noPhone: "noPhone", noEmail: "noEmail", isSearch: "isSearch", firstNameMaxLength: "firstNameMaxLength", middleNameMaxLength: "middleNameMaxLength", lastNameMaxLength: "lastNameMaxLength", titleMaxLength: "titleMaxLength", emailMaxLength: "emailMaxLength" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label>{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label>{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "showTemplate", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }] });
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ContactComponent, decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{ selector: 'oepa-contact', template: "<div [formGroup]=\"group\">\n\t<div *ngIf=\"!showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showMiddleName\" class=\"row\">\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{firstNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['firstName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"First Name\" formControlName=\"firstName\" [id]=\"componentId+'_FirstNameInput'\" [maxlength]=\"firstNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('required')\">{{firstNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['firstName'].hasError('maxlength')\">{{firstNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\" [ngClass]=\"{'is-invalid':showValidation && group.controls['middleName'].status === 'INVALID'}\">\n\t\t\t\t<label>{{middleNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Middle Name\" formControlName=\"middleName\" [id]=\"componentId+'_MiddleNameInput'\" [maxlength]=\"middleNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"showValidation && group.controls['middleName'].status === 'INVALID'\">Middle Name is required</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col-md-4\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{lastNameLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['lastName'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Last Name\" formControlName=\"lastName\" [id]=\"componentId+'_LastNameInput'\" [maxlength]=\"lastNameMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('required')\">{{lastNameLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['lastName'].hasError('maxlength')\">{{lastNameLabel}} has exceeded its maximum length</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div *ngIf=\"showTitle\" class=\"row\">\n\t\t<div class=\"col-md-12\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>Title</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" placeholder=\"Title\" \n\t\t\t\t[ngClass]=\"{'is-invalid':showValidation && group.controls['title'].status === 'INVALID'}\"\n\t\t\t\tformControlName=\"title\" [id]=\"componentId+'_TitleInput'\" [maxlength]=\"titleMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['title'].hasError('required')\">Title is required</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row\">\n\t\t<div *ngIf=\"!noEmail\" class=\"col-md-6\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{emailLabel}}</label>\n\t\t\t\t<input type=\"email\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['emailAddress'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"Email\" formControlName=\"emailAddress\" [id]=\"componentId+'_EmailInput'\" [maxlength]=\"emailMaxLength\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('required')\">{{emailLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('maxlength')\">{{emailLabel}} has exceeded its maximum length</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['emailAddress'].hasError('email')\">Please enter a valid email address</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div [ngClass]=\"{ 'col-md-3': !noFax, 'col-md-6': noFax }\">\n\t\t\t<div *ngIf=\"!noPhone\" class=\"form-group\">\n\t\t\t\t<label>{{phoneLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['phoneNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"phoneNumber\" [id]=\"componentId+'_PhoneInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('required')\">{{phoneLabel}} is required</small>\n\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['phoneNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"!noFax\" class=\"col-md-3\">\n\t\t\t<div class=\"form-group\">\n\t\t\t\t<label>{{faxLabel}}</label>\n\t\t\t\t<input [type]=\"isSearch ? 'search' : 'text'\" class=\"form-control\" [ngClass]=\"{'is-invalid':showValidation && group.controls['faxNumber'].status === 'INVALID'}\"\n\t\t\t\t\tplaceholder=\"(xxx) xxx-xxxx\" formControlName=\"faxNumber\" [id]=\"componentId+'_FaxInput'\" mask=\"(000) 000-0000\" minlength=\"10\">\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('required')\">{{faxLabel}} is required</small>\n\t\t\t\t\t<small class=\"invalid-feedback\" *ngIf=\"group.controls['faxNumber'].hasError('minlength')\">Please enter a valid phone number</small>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>" }]
|
|
46
|
+
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
|
|
47
|
+
type: Input
|
|
48
|
+
}], showValidation: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], firstNameLabel: [{
|
|
51
|
+
type: Input,
|
|
52
|
+
args: ['firstNameLabel']
|
|
53
|
+
}], lastNameLabel: [{
|
|
54
|
+
type: Input,
|
|
55
|
+
args: ['lastNameLabel']
|
|
56
|
+
}], showMiddleName: [{
|
|
57
|
+
type: Input,
|
|
58
|
+
args: ['showMiddleName']
|
|
59
|
+
}], middleNameLabel: [{
|
|
60
|
+
type: Input,
|
|
61
|
+
args: ['middleNameLabel']
|
|
62
|
+
}], emailLabel: [{
|
|
63
|
+
type: Input,
|
|
64
|
+
args: ['emailLabel']
|
|
65
|
+
}], phoneLabel: [{
|
|
66
|
+
type: Input,
|
|
67
|
+
args: ['phoneLabel']
|
|
68
|
+
}], faxLabel: [{
|
|
69
|
+
type: Input,
|
|
70
|
+
args: ['faxLabel']
|
|
71
|
+
}], noFax: [{
|
|
72
|
+
type: Input,
|
|
73
|
+
args: ['noFax']
|
|
74
|
+
}], showTitle: [{
|
|
75
|
+
type: Input,
|
|
76
|
+
args: ['showTitle']
|
|
77
|
+
}], noPhone: [{
|
|
78
|
+
type: Input,
|
|
79
|
+
args: ['noPhone']
|
|
80
|
+
}], noEmail: [{
|
|
81
|
+
type: Input,
|
|
82
|
+
args: ['noEmail']
|
|
83
|
+
}], isSearch: [{
|
|
84
|
+
type: Input,
|
|
85
|
+
args: ['isSearch']
|
|
86
|
+
}], firstNameMaxLength: [{
|
|
87
|
+
type: Input,
|
|
88
|
+
args: ['firstNameMaxLength']
|
|
89
|
+
}], middleNameMaxLength: [{
|
|
90
|
+
type: Input,
|
|
91
|
+
args: ['middleNameMaxLength']
|
|
92
|
+
}], lastNameMaxLength: [{
|
|
93
|
+
type: Input,
|
|
94
|
+
args: ['lastNameMaxLength']
|
|
95
|
+
}], titleMaxLength: [{
|
|
96
|
+
type: Input,
|
|
97
|
+
args: ['titleMaxLength']
|
|
98
|
+
}], emailMaxLength: [{
|
|
99
|
+
type: Input,
|
|
100
|
+
args: ['emailMaxLength']
|
|
101
|
+
}] } });
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3QvY29udGFjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVXpELE1BQU0sT0FBTyxnQkFBZ0I7SUE0QlA7SUExQmIsV0FBVyxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLDBEQUEwRDtJQUNqRCxLQUFLLENBQWE7SUFDM0IscUVBQXFFO0lBQzVELGNBQWMsR0FBRyxLQUFLLENBQUM7SUFFQSxjQUFjLEdBQVcsWUFBWSxDQUFDO0lBQ3ZDLGFBQWEsR0FBVyxXQUFXLENBQUM7SUFDbkMsY0FBYyxHQUFZLEtBQUssQ0FBQztJQUMvQixlQUFlLEdBQVcsYUFBYSxDQUFDO0lBQzdDLFVBQVUsR0FBVyxPQUFPLENBQUM7SUFDN0IsVUFBVSxHQUFXLE9BQU8sQ0FBQztJQUMvQixRQUFRLEdBQVcsS0FBSyxDQUFDO0lBQzVCLEtBQUssR0FBWSxLQUFLLENBQUE7SUFDbEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUM3QixPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ3pCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDeEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUVsRCx3Q0FBd0M7SUFDSixrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDdkIsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0lBQzNCLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUMxQixjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFFdEQsWUFBb0IsU0FBaUM7UUFBakMsY0FBUyxHQUFULFNBQVMsQ0FBd0I7SUFDckQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO3dHQW5DVSxnQkFBZ0I7NEZBQWhCLGdCQUFnQiw0bUJDVjdCLGlxTkF5Rk07OzRGRC9FTyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzsyRkFRZixLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFMEIsY0FBYztzQkFBN0MsS0FBSzt1QkFBQyxnQkFBZ0I7Z0JBQ1EsYUFBYTtzQkFBM0MsS0FBSzt1QkFBQyxlQUFlO2dCQUNVLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNVLGVBQWU7c0JBQS9DLEtBQUs7dUJBQUMsaUJBQWlCO2dCQUNJLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFDUyxVQUFVO3NCQUFyQyxLQUFLO3VCQUFDLFlBQVk7Z0JBQ08sUUFBUTtzQkFBakMsS0FBSzt1QkFBQyxVQUFVO2dCQUNNLEtBQUs7c0JBQTNCLEtBQUs7dUJBQUMsT0FBTztnQkFDYSxTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLFdBQVc7Z0JBQ08sT0FBTztzQkFBL0IsS0FBSzt1QkFBQyxTQUFTO2dCQUNTLE9BQU87c0JBQS9CLEtBQUs7dUJBQUMsU0FBUztnQkFDVSxRQUFRO3NCQUFqQyxLQUFLO3VCQUFDLFVBQVU7Z0JBR3FCLGtCQUFrQjtzQkFBckQsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBQ1UsbUJBQW1CO3NCQUF2RCxLQUFLO3VCQUFDLHFCQUFxQjtnQkFDTyxpQkFBaUI7c0JBQW5ELEtBQUs7dUJBQUMsbUJBQW1CO2dCQUNNLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQUNTLGNBQWM7c0JBQTdDLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE9lcGFDb21wb25lbnRJZFNlcnZpY2UgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWNvbW1vbi1saWInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWNvbnRhY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbnRhY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICdPZXBhQ29udGFjdENvbXBvbmVudCc7XG4gIC8qKiAgVGhlIGZvcm0gZ3JvdXAgZm9yIHdoaWNoIHRoaXMgYWRkcmVzcyBpcyBhIG1lbWJlci4gKi9cbiAgQElucHV0KCkgZ3JvdXAhOiBGb3JtR3JvdXA7XG4gIC8qKiBGb3JtIHZhbGlkYXRpb24gd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBzaG93VmFsaWRhdGlvbiBpcyB0cnVlLiAqL1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZmlyc3ROYW1lTGFiZWwnKSBwdWJsaWMgZmlyc3ROYW1lTGFiZWw6IHN0cmluZyA9ICdGaXJzdCBOYW1lJztcbiAgQElucHV0KCdsYXN0TmFtZUxhYmVsJykgcHVibGljIGxhc3ROYW1lTGFiZWw6IHN0cmluZyA9ICdMYXN0IE5hbWUnO1xuICBASW5wdXQoJ3Nob3dNaWRkbGVOYW1lJykgcHVibGljIHNob3dNaWRkbGVOYW1lOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgnbWlkZGxlTmFtZUxhYmVsJykgcHVibGljIG1pZGRsZU5hbWVMYWJlbDogc3RyaW5nID0gJ01pZGRsZSBOYW1lJztcbiAgQElucHV0KCdlbWFpbExhYmVsJykgcHVibGljIGVtYWlsTGFiZWw6IHN0cmluZyA9ICdFbWFpbCc7XG4gIEBJbnB1dCgncGhvbmVMYWJlbCcpIHB1YmxpYyBwaG9uZUxhYmVsOiBzdHJpbmcgPSAnUGhvbmUnO1xuICBASW5wdXQoJ2ZheExhYmVsJykgcHVibGljIGZheExhYmVsOiBzdHJpbmcgPSAnRmF4JztcbiAgQElucHV0KCdub0ZheCcpIHB1YmxpYyBub0ZheDogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgnc2hvd1RpdGxlJykgcHVibGljIHNob3dUaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ25vUGhvbmUnKSBwdWJsaWMgbm9QaG9uZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ25vRW1haWwnKSBwdWJsaWMgbm9FbWFpbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ2lzU2VhcmNoJykgcHVibGljIGlzU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBtYXggbGVuZ3RoIHZhbHVlcy4gb3ZlcnJpZGUgaWYgbmVlZGVkXG4gICAgQElucHV0KCdmaXJzdE5hbWVNYXhMZW5ndGgnKSBwdWJsaWMgZmlyc3ROYW1lTWF4TGVuZ3RoID0gNTA7XG4gICAgQElucHV0KCdtaWRkbGVOYW1lTWF4TGVuZ3RoJykgcHVibGljIG1pZGRsZU5hbWVNYXhMZW5ndGggPSA1MDtcbiAgICBASW5wdXQoJ2xhc3ROYW1lTWF4TGVuZ3RoJykgcHVibGljIGxhc3ROYW1lTWF4TGVuZ3RoID0gNTA7XG4gICAgQElucHV0KCd0aXRsZU1heExlbmd0aCcpIHB1YmxpYyB0aXRsZU1heExlbmd0aCA9IDQwO1xuICAgIEBJbnB1dCgnZW1haWxNYXhMZW5ndGgnKSBwdWJsaWMgZW1haWxNYXhMZW5ndGggPSA4MDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSB0aGlzLmlkU2VydmljZS5nZXRDb21wb25lbnRJZCh0aGlzLmdyb3VwKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG5cdDxkaXYgKm5nSWY9XCIhc2hvd01pZGRsZU5hbWVcIiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0PGxhYmVsPnt7Zmlyc3ROYW1lTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiRmlyc3QgTmFtZVwiIGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX0ZpcnN0TmFtZUlucHV0J1wiIFttYXhsZW5ndGhdPVwiZmlyc3ROYW1lTWF4TGVuZ3RoXCI+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7Zmlyc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmaXJzdE5hbWUnXS5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj57e2ZpcnN0TmFtZUxhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdDxsYWJlbD57e2xhc3ROYW1lTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJMYXN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIFtpZF09XCJjb21wb25lbnRJZCsnX0xhc3ROYW1lSW5wdXQnXCIgW21heGxlbmd0aF09XCJsYXN0TmFtZU1heExlbmd0aFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snbGFzdE5hbWUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7bGFzdE5hbWVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xhc3ROYW1lJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tsYXN0TmFtZUxhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgKm5nSWY9XCJzaG93TWlkZGxlTmFtZVwiIGNsYXNzPVwicm93XCI+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+e3tmaXJzdE5hbWVMYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2ZpcnN0TmFtZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJGaXJzdCBOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCIgW2lkXT1cImNvbXBvbmVudElkKydfRmlyc3ROYW1lSW5wdXQnXCIgW21heGxlbmd0aF09XCJmaXJzdE5hbWVNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZpcnN0TmFtZSddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tmaXJzdE5hbWVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZpcnN0TmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7Zmlyc3ROYW1lTGFiZWx9fSBoYXMgZXhjZWVkZWQgaXRzIG1heGltdW0gbGVuZ3RoPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydtaWRkbGVOYW1lJ10uc3RhdHVzID09PSAnSU5WQUxJRCd9XCI+XG5cdFx0XHRcdDxsYWJlbD57e21pZGRsZU5hbWVMYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiTWlkZGxlIE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJtaWRkbGVOYW1lXCIgW2lkXT1cImNvbXBvbmVudElkKydfTWlkZGxlTmFtZUlucHV0J1wiIFttYXhsZW5ndGhdPVwibWlkZGxlTmFtZU1heExlbmd0aFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbWlkZGxlTmFtZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnXCI+TWlkZGxlIE5hbWUgaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+e3tsYXN0TmFtZUxhYmVsfX08L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiBncm91cC5jb250cm9sc1snbGFzdE5hbWUnXS5zdGF0dXMgPT09ICdJTlZBTElEJ31cIlxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiTGFzdCBOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwibGFzdE5hbWVcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19MYXN0TmFtZUlucHV0J1wiIFttYXhsZW5ndGhdPVwibGFzdE5hbWVNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2xhc3ROYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj57e2xhc3ROYW1lTGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydsYXN0TmFtZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPnt7bGFzdE5hbWVMYWJlbH19IGhhcyBleGNlZWRlZCBpdHMgbWF4aW11bSBsZW5ndGg8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwic2hvd1RpdGxlXCIgY2xhc3M9XCJyb3dcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+VGl0bGU8L2xhYmVsPlxuXHRcdFx0XHQ8aW5wdXQgW3R5cGVdPVwiaXNTZWFyY2ggPyAnc2VhcmNoJyA6ICd0ZXh0J1wiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJUaXRsZVwiIFxuXHRcdFx0XHRbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWyd0aXRsZSddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCIgIFtpZF09XCJjb21wb25lbnRJZCsnX1RpdGxlSW5wdXQnXCIgW21heGxlbmd0aF09XCJ0aXRsZU1heExlbmd0aFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1sndGl0bGUnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlRpdGxlIGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cInJvd1wiPlxuXHRcdDxkaXYgKm5nSWY9XCIhbm9FbWFpbFwiIGNsYXNzPVwiY29sLW1kLTZcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdDxsYWJlbD57e2VtYWlsTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2VtYWlsQWRkcmVzcyddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJFbWFpbFwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsQWRkcmVzc1wiICBbaWRdPVwiY29tcG9uZW50SWQrJ19FbWFpbElucHV0J1wiIFttYXhsZW5ndGhdPVwiZW1haWxNYXhMZW5ndGhcIj5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2VtYWlsQWRkcmVzcyddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+e3tlbWFpbExhYmVsfX0gaXMgcmVxdWlyZWQ8L3NtYWxsPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1snZW1haWxBZGRyZXNzJ10uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+e3tlbWFpbExhYmVsfX0gaGFzIGV4Y2VlZGVkIGl0cyBtYXhpbXVtIGxlbmd0aDwvc21hbGw+XG5cdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydlbWFpbEFkZHJlc3MnXS5oYXNFcnJvcignZW1haWwnKVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3M8L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBbbmdDbGFzc109XCJ7ICdjb2wtbWQtMyc6ICFub0ZheCwgJ2NvbC1tZC02Jzogbm9GYXggfVwiPlxuXHRcdFx0PGRpdiAqbmdJZj1cIiFub1Bob25lXCIgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG5cdFx0XHRcdDxsYWJlbD57e3Bob25lTGFiZWx9fTwvbGFiZWw+XG5cdFx0XHRcdDxpbnB1dCBbdHlwZV09XCJpc1NlYXJjaCA/ICdzZWFyY2gnIDogJ3RleHQnXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmNvbnRyb2xzWydwaG9uZU51bWJlciddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCIoeHh4KSB4eHgteHh4eFwiIGZvcm1Db250cm9sTmFtZT1cInBob25lTnVtYmVyXCIgW2lkXT1cImNvbXBvbmVudElkKydfUGhvbmVJbnB1dCdcIiBtYXNrPVwiKDAwMCkgMDAwLTAwMDBcIiBtaW5sZW5ndGg9XCIxMFwiPlxuXHRcdFx0XHQ8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1sncGhvbmVOdW1iZXInXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7cGhvbmVMYWJlbH19IGlzIHJlcXVpcmVkPC9zbWFsbD5cblx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ3Bob25lTnVtYmVyJ10uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+UGxlYXNlIGVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyPC9zbWFsbD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgKm5nSWY9XCIhbm9GYXhcIiBjbGFzcz1cImNvbC1tZC0zXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHQ8bGFiZWw+e3tmYXhMYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0PGlucHV0IFt0eXBlXT1cImlzU2VhcmNoID8gJ3NlYXJjaCcgOiAndGV4dCdcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgZ3JvdXAuY29udHJvbHNbJ2ZheE51bWJlciddLnN0YXR1cyA9PT0gJ0lOVkFMSUQnfVwiXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCIoeHh4KSB4eHgteHh4eFwiIGZvcm1Db250cm9sTmFtZT1cImZheE51bWJlclwiIFtpZF09XCJjb21wb25lbnRJZCsnX0ZheElucHV0J1wiICBtYXNrPVwiKDAwMCkgMDAwLTAwMDBcIiBtaW5sZW5ndGg9XCIxMFwiPlxuXHRcdFx0XHRcdDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cImdyb3VwLmNvbnRyb2xzWydmYXhOdW1iZXInXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPnt7ZmF4TGFiZWx9fSBpcyByZXF1aXJlZDwvc21hbGw+XG5cdFx0XHRcdFx0PHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZ3JvdXAuY29udHJvbHNbJ2ZheE51bWJlciddLmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlBsZWFzZSBlbnRlciBhIHZhbGlkIHBob25lIG51bWJlcjwvc21hbGw+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2VwYS1mb3JtLWNvbnRhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2NvbnRhY3Qvb2VwYS1mb3JtLWNvbnRhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9lcGFGb3JtQWRkcmVzcyB9IGZyb20gJy4uL2FkZHJlc3Mvb2VwYS1mb3JtLWFkZHJlc3MnO1xuXG4vKipcbiAqIENvbnRhY3QgdGhhdCBtYXkgYXBwZWFyIGluIGEgRm9ybS4gQWxsIHByb3BlcnRpZXMgYXJlIHN0cmluZ3MuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBPZXBhRm9ybUNvbnRhY3Qge1xuICAgIC8qKlxuICAgICAqIENvbnRhY3QgaWRcbiAgICAgKi9cbiAgICBpZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDb250YWN0J3MgZmlyc3QgbmFtZVxuICAgICAqL1xuICAgIGFjdGl2ZT86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogQ29udGFjdCdzIGFjdGl2ZSBpbmRpY2F0b3JcbiAgICAgKi9cbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDb250YWN0J3MgY2F0ZWdvcnksIGlmIGFueVxuICAgICAqL1xuICAgIGZpcnN0TmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDb250YWN0J3MgbWlkZGxlIG5hbWVcbiAgICAgKi9cbiAgICBtaWRkbGVOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbnRhY3QncyBsYXN0IG5hbWVcbiAgICAgKi9cbiAgICBsYXN0TmFtZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBPcmdhbml6YXRpb24gbmFtZS5cbiAgICAgKi9cbiAgICBvcmdhbml6YXRpb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ29udGFjdCB0aXRsZS5cbiAgICAgKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDb250YWN0IGFkZHJlc3NcbiAgICAgKi9cbiAgICBhZGRyZXNzPzogT2VwYUZvcm1BZGRyZXNzO1xuICAgIC8qKlxuICAgICAqIENvbnRhY3QgcGhvbmUgbnVtYmVyIGZvcm1hdHRlZCBhcyAobm5uKSBubm4tbm5ublxuICAgICAqL1xuICAgIHBob25lTnVtYmVyPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIENvbnRhY3QgZmF4IG51bWJlciBmb3JtYXR0ZWQgYXMgKG5ubikgbm5uLW5ubm5cbiAgICAgKi9cbiAgICBmYXhOdW1iZXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQ29udGFjdCBlbWFpbCBhZGRyZXNzLlxuICAgICAqL1xuICAgIGVtYWlsQWRkcmVzcz86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBDb21tZW50cyBhYm91dCB0aGlzIGNvbnRhY3QuXG4gICAgICovXG4gICAgY29tbWVudD86IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "../datepicker/datepicker.component";
|
|
5
|
+
export class DateInputComponent {
|
|
6
|
+
componentId = 'DateInputComponent';
|
|
7
|
+
group;
|
|
8
|
+
field = '';
|
|
9
|
+
tableIdx;
|
|
10
|
+
placement = '';
|
|
11
|
+
showValidation = true;
|
|
12
|
+
pauseChangeProcessing = false;
|
|
13
|
+
onValueChange = new EventEmitter();
|
|
14
|
+
currentDate = undefined;
|
|
15
|
+
constructor() {
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
if (this.group) {
|
|
19
|
+
this.group.get(this.field)?.valueChanges.subscribe(value => {
|
|
20
|
+
if (!this.currentDate) {
|
|
21
|
+
this.currentDate = value;
|
|
22
|
+
this.onValueChange.emit(value);
|
|
23
|
+
}
|
|
24
|
+
else if (this.currentDate !== value) {
|
|
25
|
+
this.currentDate = value;
|
|
26
|
+
this.onValueChange.emit(value);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateInputComponent, selector: "oepa-date-input", inputs: { group: "group", field: "field", tableIdx: "tableIdx", placement: "placement", showValidation: "showValidation", pauseChangeProcessing: "pauseChangeProcessing" }, outputs: { onValueChange: "onValueChange" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"] }] });
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'oepa-date-input', template: "<div [formGroup]=\"group\">\n <oepa-datepicker [group]=\"group\" [field]=\"field\" [tableIdx]=\"tableIdx\" \n [placement]=\"placement\" [showValidation]=\"showValidation\"></oepa-datepicker>\n</div>" }]
|
|
37
|
+
}], ctorParameters: () => [], propDecorators: { group: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], field: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], tableIdx: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], placement: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], showValidation: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], pauseChangeProcessing: [{
|
|
48
|
+
type: Input
|
|
49
|
+
}], onValueChange: [{
|
|
50
|
+
type: Output
|
|
51
|
+
}] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUS9FLE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsV0FBVyxHQUFHLG9CQUFvQixDQUFDO0lBQ2pDLEtBQUssQ0FBYTtJQUNsQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFFBQVEsQ0FBcUI7SUFDN0IsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUN2QixjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUU3QixhQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFFL0QsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUVoQztJQUNBLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDekQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzt3R0E1QlUsa0JBQWtCOzRGQUFsQixrQkFBa0IsZ1JDUi9CLDhNQUdNOzs0RkRLTyxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsaUJBQWlCO3dEQU1sQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWRhdGUtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyBjb21wb25lbnRJZCA9ICdEYXRlSW5wdXRDb21wb25lbnQnO1xuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB0YWJsZUlkeDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBwbGFjZW1lbnQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IHRydWU7XG4gIEBJbnB1dCgpIHBhdXNlQ2hhbmdlUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZSA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHsgXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5maWVsZCk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudERhdGUpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnREYXRlID0gdmFsdWU7XG4gICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudERhdGUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50RGF0ZSA9IHZhbHVlO1xuICAgICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgIDxvZXBhLWRhdGVwaWNrZXIgW2dyb3VwXT1cImdyb3VwXCIgW2ZpZWxkXT1cImZpZWxkXCIgW3RhYmxlSWR4XT1cInRhYmxlSWR4XCIgXG4gICAgW3BsYWNlbWVudF09XCJwbGFjZW1lbnRcIiBbc2hvd1ZhbGlkYXRpb25dPVwic2hvd1ZhbGlkYXRpb25cIj48L29lcGEtZGF0ZXBpY2tlcj5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "ngx-bootstrap/modal";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "../datepicker/datepicker.component";
|
|
8
|
+
export class DateInputModalComponent {
|
|
9
|
+
bsModalRef;
|
|
10
|
+
fb;
|
|
11
|
+
errorMessage = '';
|
|
12
|
+
dateForm;
|
|
13
|
+
date;
|
|
14
|
+
title = '';
|
|
15
|
+
infoText = '';
|
|
16
|
+
dateLabel = 'Date';
|
|
17
|
+
submitBtnLabel = 'Submit';
|
|
18
|
+
cancelBtnLabel = 'Cancel';
|
|
19
|
+
onSubmit = new EventEmitter();
|
|
20
|
+
onCancel = new EventEmitter();
|
|
21
|
+
constructor(bsModalRef, fb) {
|
|
22
|
+
this.bsModalRef = bsModalRef;
|
|
23
|
+
this.fb = fb;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
if (!this.date) {
|
|
27
|
+
this.date = new Date();
|
|
28
|
+
}
|
|
29
|
+
this.createForm();
|
|
30
|
+
}
|
|
31
|
+
createForm() {
|
|
32
|
+
this.dateForm = this.fb.group({
|
|
33
|
+
date: [this.date, Validators.required]
|
|
34
|
+
});
|
|
35
|
+
this.dateForm.controls['date'].valueChanges.subscribe(date => {
|
|
36
|
+
this.date = date;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
submit() {
|
|
40
|
+
this.onSubmit.emit(this.date);
|
|
41
|
+
this.bsModalRef.hide();
|
|
42
|
+
}
|
|
43
|
+
cancel() {
|
|
44
|
+
this.onCancel.emit();
|
|
45
|
+
this.bsModalRef.hide();
|
|
46
|
+
}
|
|
47
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DateInputModalComponent, selector: "oepa-date-input-modal", inputs: { title: "title", infoText: "infoText", dateLabel: "dateLabel", submitBtnLabel: "submitBtnLabel", cancelBtnLabel: "cancelBtnLabel" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DatepickerComponent, selector: "oepa-datepicker", inputs: ["group", "field", "bsConfig", "showValidation", "placement", "tableIdx", "small"] }] });
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DateInputModalComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ selector: 'oepa-date-input-modal', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">{{title}}</h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"bsModalRef.hide()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div class=\"row\">\n <div *ngIf=\"infoText\" class=\"col-sm-12\">\n <div class=\"alert alert-info\">\n {{infoText}}\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div>\n <label>{{dateLabel}}</label>\n <oepa-datepicker [group]=\"dateForm\" field=\"date\" [showValidation]=\"true\"></oepa-datepicker>\n </div>\n </div>\n </div>\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">{{errorMessage}}</div>\n </div>\n</div>\n<div class=\"modal-footer\">\n <button type=\"submit\" class=\"btn btn-primary mr-1\" (click)=\"submit()\" \n [id]=\"'submitDateBtn'\" [disabled]=\"dateForm.status === 'INVALID'\">{{submitBtnLabel}}</button>\n <button [id]=\"'cancelDateInputBtn'\" type=\"button\" class=\"btn btn-primary mr-1\" (click)=\"cancel()\">{{cancelBtnLabel}}</button>\n</div>\n" }]
|
|
53
|
+
}], ctorParameters: () => [{ type: i1.BsModalRef }, { type: i2.FormBuilder }], propDecorators: { title: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], infoText: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], dateLabel: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], submitBtnLabel: [{
|
|
60
|
+
type: Input
|
|
61
|
+
}], cancelBtnLabel: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], onSubmit: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}], onCancel: [{
|
|
66
|
+
type: Output
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGUtaW5wdXQtbW9kYWwvZGF0ZS1pbnB1dC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGUtaW5wdXQtbW9kYWwvZGF0ZS1pbnB1dC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQVFwRSxNQUFNLE9BQU8sdUJBQXVCO0lBY2Y7SUFBZ0M7SUFiNUMsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixRQUFRLENBQWE7SUFDckIsSUFBSSxDQUFtQjtJQUVyQixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDdEIsU0FBUyxHQUFHLE1BQU0sQ0FBQztJQUNuQixjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQzFCLGNBQWMsR0FBRyxRQUFRLENBQUM7SUFFekIsUUFBUSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBQ3hELFFBQVEsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUVsRSxZQUFtQixVQUFzQixFQUFVLEVBQWU7UUFBL0MsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLE9BQUUsR0FBRixFQUFFLENBQWE7SUFBSSxDQUFDO0lBRXZFLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsQ0FBRSxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDeEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzt3R0F4Q1UsdUJBQXVCOzRGQUF2Qix1QkFBdUIsb1FDVHBDLGtwQ0E2QkE7OzRGRHBCYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsdUJBQXVCO3lHQVN4QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvZXBhLWRhdGUtaW5wdXQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1pbnB1dC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQtbW9kYWwuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBkYXRlRm9ybSE6IEZvcm1Hcm91cDtcbiAgcHVibGljIGRhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBpbmZvVGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGRhdGVMYWJlbCA9ICdEYXRlJztcbiAgQElucHV0KCkgc3VibWl0QnRuTGFiZWwgPSAnU3VibWl0JztcbiAgQElucHV0KCkgY2FuY2VsQnRuTGFiZWwgPSAnQ2FuY2VsJztcblxuICBAT3V0cHV0KCkgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuZGF0ZSkge1xuICAgICAgdGhpcy5kYXRlID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cbiAgXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmRhdGVGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkYXRlOiBbIHRoaXMuZGF0ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KTtcbiAgICB0aGlzLmRhdGVGb3JtLmNvbnRyb2xzWydkYXRlJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRlID0+IHtcbiAgICAgIHRoaXMuZGF0ZSA9IGRhdGU7XG4gICAgfSk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMuZGF0ZSk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3t0aXRsZX19PC9oND5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZSBwdWxsLXJpZ2h0XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImJzTW9kYWxSZWYuaGlkZSgpXCI+XG4gICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5mb1RleHRcIiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWluZm9cIj5cbiAgICAgICAge3tpbmZvVGV4dH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bGFiZWw+e3tkYXRlTGFiZWx9fTwvbGFiZWw+XG4gICAgICAgIDxvZXBhLWRhdGVwaWNrZXIgW2dyb3VwXT1cImRhdGVGb3JtXCIgZmllbGQ9XCJkYXRlXCIgW3Nob3dWYWxpZGF0aW9uXT1cInRydWVcIj48L29lcGEtZGF0ZXBpY2tlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPnt7ZXJyb3JNZXNzYWdlfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMVwiIChjbGljayk9XCJzdWJtaXQoKVwiIFxuICAgICAgICAgIFtpZF09XCInc3VibWl0RGF0ZUJ0bidcIiBbZGlzYWJsZWRdPVwiZGF0ZUZvcm0uc3RhdHVzID09PSAnSU5WQUxJRCdcIj57e3N1Ym1pdEJ0bkxhYmVsfX08L2J1dHRvbj5cbiAgPGJ1dHRvbiBbaWRdPVwiJ2NhbmNlbERhdGVJbnB1dEJ0bidcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXItMVwiIChjbGljayk9XCJjYW5jZWwoKVwiPnt7Y2FuY2VsQnRuTGFiZWx9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ohioepa/oepa-common-lib";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
import * as i4 from "ngx-bootstrap/datepicker";
|
|
7
|
+
export class DatepickerComponent {
|
|
8
|
+
idService;
|
|
9
|
+
componentId = 'OepaDatepickerComponent';
|
|
10
|
+
group;
|
|
11
|
+
field;
|
|
12
|
+
bsConfig;
|
|
13
|
+
showValidation = false;
|
|
14
|
+
placement;
|
|
15
|
+
tableIdx;
|
|
16
|
+
small = false;
|
|
17
|
+
minDate;
|
|
18
|
+
maxDate;
|
|
19
|
+
isDisabled = false;
|
|
20
|
+
getPlacement() {
|
|
21
|
+
switch (this.placement) {
|
|
22
|
+
case 'top':
|
|
23
|
+
return 'top';
|
|
24
|
+
break;
|
|
25
|
+
case 'left':
|
|
26
|
+
return 'left';
|
|
27
|
+
break;
|
|
28
|
+
case 'right':
|
|
29
|
+
return 'right';
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
return 'bottom';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
constructor(idService) {
|
|
36
|
+
this.idService = idService;
|
|
37
|
+
}
|
|
38
|
+
checkValidity() {
|
|
39
|
+
for (const key in this.group.controls) {
|
|
40
|
+
if (this.group.controls.hasOwnProperty(key) && key === this.field) {
|
|
41
|
+
return this.group.controls[key].status !== 'INVALID';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
clearDate() {
|
|
47
|
+
for (const key in this.group.controls) {
|
|
48
|
+
if (this.group.controls.hasOwnProperty(key) && key === this.field) {
|
|
49
|
+
this.group.controls[key].setValue(null);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
ngOnInit() {
|
|
54
|
+
if (this.bsConfig) {
|
|
55
|
+
if (this.bsConfig.minDate) {
|
|
56
|
+
this.minDate = this.bsConfig.minDate;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.minDate = undefined;
|
|
60
|
+
}
|
|
61
|
+
if (this.bsConfig.maxDate) {
|
|
62
|
+
this.maxDate = this.bsConfig.maxDate;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.maxDate = undefined;
|
|
66
|
+
}
|
|
67
|
+
if (this.bsConfig.isDisabled) {
|
|
68
|
+
this.isDisabled = this.bsConfig.isDisabled; // defaults to false
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.bsConfig = {};
|
|
73
|
+
}
|
|
74
|
+
this.bsConfig.showWeekNumbers = false;
|
|
75
|
+
if (this.group) {
|
|
76
|
+
this.componentId = this.idService.getComponentId(this.group);
|
|
77
|
+
this.componentId += (this.componentId.length > 0 ? '_' : '') + (this.field || '') + (this.tableIdx || '');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log('OOPS No datepickerForm yet');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// force value to null in case where user enters non-numeric values
|
|
84
|
+
// in the field. The "normal" behavior of the ngx-bootstrap datepicker
|
|
85
|
+
// is to set the input value to "Invalid Date". Unfortunately, this messes
|
|
86
|
+
// up validation. The method below will force the input value to null
|
|
87
|
+
// in this case which will ensure that validation works properly.
|
|
88
|
+
onValueChange(event) {
|
|
89
|
+
// timeout is needed to make this work properly
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
if (this.group && this.group.controls[this.field]) {
|
|
92
|
+
const value = this.group.controls[this.field].value;
|
|
93
|
+
if (value && value.toJSON() === null) {
|
|
94
|
+
this.group.controls[this.field].setValue(null);
|
|
95
|
+
}
|
|
96
|
+
this.group.controls[this.field].updateValueAndValidity();
|
|
97
|
+
}
|
|
98
|
+
}, 50);
|
|
99
|
+
}
|
|
100
|
+
ngOnChanges(changes) {
|
|
101
|
+
if (changes['bsConfig']) {
|
|
102
|
+
if (changes['bsConfig'].currentValue.minDate || changes['bsConfig'].currentValue.minDate == null) {
|
|
103
|
+
this.minDate = changes['bsConfig'].currentValue.minDate;
|
|
104
|
+
}
|
|
105
|
+
if (changes['bsConfig'].currentValue.maxDate || changes['bsConfig'].currentValue.maxDate == null) {
|
|
106
|
+
this.maxDate = changes['bsConfig'].currentValue.maxDate;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DatepickerComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DatepickerComponent, selector: "oepa-datepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation", placement: "placement", tableIdx: "tableIdx", small: "small" }, usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n >\n <div class=\"btn-group\" role=\"group\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dp.toggle()\" [id]=\"componentId+'_ToggleBtn'\" [disabled]=\"group.get(field)?.disabled\">\n <i class=\"bi bi-calendar3\"></i>\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"clearDate()\" [id]=\"componentId+'_ClearBtn'\" [disabled]=\"group.get(field)?.disabled\">\n <i class=\"bi bi-x-lg\"></i>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.hasError('required')\">Date is required</small>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\">Date is out of range</small>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i4.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }] });
|
|
112
|
+
}
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
114
|
+
type: Component,
|
|
115
|
+
args: [{ selector: 'oepa-datepicker', template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #dp=\"bsDatepicker\"\n bsDatepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"group.get('field')?.disabled || false\"\n [placement]=\"getPlacement() || 'bottom'\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n (bsValueChange)=\"onValueChange($event)\"\n >\n <div class=\"btn-group\" role=\"group\">\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dp.toggle()\" [id]=\"componentId+'_ToggleBtn'\" [disabled]=\"group.get(field)?.disabled\">\n <i class=\"bi bi-calendar3\"></i>\n </button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"clearDate()\" [id]=\"componentId+'_ClearBtn'\" [disabled]=\"group.get(field)?.disabled\">\n <i class=\"bi bi-x-lg\"></i>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.hasError('required')\">Date is required</small>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && group.get(field)?.invalid && !group.get(field)?.hasError('required')\">Date is out of range</small>\n </div>\n</div>\n" }]
|
|
116
|
+
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], field: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], bsConfig: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], showValidation: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], placement: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], tableIdx: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], small: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}] } });
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVluRixNQUFNLE9BQU8sbUJBQW1CO0lBOEJWO0lBN0JiLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQztJQUN0QyxLQUFLLENBQWE7SUFDbEIsS0FBSyxDQUFVO0lBQ2YsUUFBUSxDQUErQjtJQUN2QyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFNBQVMsQ0FBVTtJQUNuQixRQUFRLENBQXFCO0lBQzdCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFFaEIsT0FBTyxDQUFvQjtJQUMzQixPQUFPLENBQW9CO0lBQzNCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbkIsWUFBWTtRQUNqQixRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxLQUFLLENBQUM7Z0JBQ2IsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxPQUFPLE1BQU0sQ0FBQztnQkFDZCxNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLE9BQU8sT0FBTyxDQUFDO2dCQUNmLE1BQU07WUFDUjtnQkFDRSxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW9CLFNBQWlDO1FBQWpDLGNBQVMsR0FBVCxTQUFTLENBQXdCO0lBQUksQ0FBQztJQUUxRCxhQUFhO1FBQ1gsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVM7UUFDUCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDdkMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxvQkFBb0I7WUFDbEUsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxzRUFBc0U7SUFDdEUsMEVBQTBFO0lBQzFFLHFFQUFxRTtJQUNyRSxpRUFBaUU7SUFDakUsYUFBYSxDQUFDLEtBQVM7UUFDckIsK0NBQStDO1FBQy9DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3BELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakQsQ0FBQztnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDMUQsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO3dHQXhHVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiw4T0NaaEMsd2tEQTZCQTs7NEZEakJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUI7MkZBTWxCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYURhdGVwaWNrZXJDb21wb25lbnQnO1xuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJzQ29uZmlnITogUGFydGlhbDxCc0RhdGVwaWNrZXJDb25maWc+O1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwbGFjZW1lbnQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRhYmxlSWR4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIHNtYWxsID0gZmFsc2U7XG5cbiAgcHVibGljIG1pbkRhdGUhOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgbWF4RGF0ZSE6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHB1YmxpYyBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgcHVibGljIGdldFBsYWNlbWVudCgpIDogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCcge1xuICAgIHN3aXRjaCAodGhpcy5wbGFjZW1lbnQpIHtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiAndG9wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnYm90dG9tJztcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSkgeyB9XG5cbiAgY2hlY2tWYWxpZGl0eSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncm91cC5jb250cm9sc1trZXldLnN0YXR1cyAhPT0gJ0lOVkFMSUQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFyRGF0ZSgpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdyb3VwLmNvbnRyb2xzKSB7XG4gICAgICBpZiAodGhpcy5ncm91cC5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSA9PT0gdGhpcy5maWVsZCkge1xuICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW2tleV0uc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYnNDb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmJzQ29uZmlnLm1pbkRhdGUpIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdGhpcy5ic0NvbmZpZy5taW5EYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYnNDb25maWcubWF4RGF0ZSkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB0aGlzLmJzQ29uZmlnLm1heERhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1heERhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ic0NvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuYnNDb25maWcuaXNEaXNhYmxlZDsgLy8gZGVmYXVsdHMgdG8gZmFsc2VcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ic0NvbmZpZyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLmJzQ29uZmlnLnNob3dXZWVrTnVtYmVycyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudElkID0gdGhpcy5pZFNlcnZpY2UuZ2V0Q29tcG9uZW50SWQodGhpcy5ncm91cCk7XG4gICAgICB0aGlzLmNvbXBvbmVudElkICs9ICh0aGlzLmNvbXBvbmVudElkLmxlbmd0aCA+IDAgPyAnXycgOiAnJykgKyAodGhpcy5maWVsZCB8fCAnJykgKyAodGhpcy50YWJsZUlkeCB8fCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdPT1BTIE5vIGRhdGVwaWNrZXJGb3JtIHlldCcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvcmNlIHZhbHVlIHRvIG51bGwgaW4gY2FzZSB3aGVyZSB1c2VyIGVudGVycyBub24tbnVtZXJpYyB2YWx1ZXNcbiAgLy8gaW4gdGhlIGZpZWxkLiBUaGUgXCJub3JtYWxcIiBiZWhhdmlvciBvZiB0aGUgbmd4LWJvb3RzdHJhcCBkYXRlcGlja2VyXG4gIC8vIGlzIHRvIHNldCB0aGUgaW5wdXQgdmFsdWUgdG8gXCJJbnZhbGlkIERhdGVcIi4gVW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzZXNcbiAgLy8gdXAgdmFsaWRhdGlvbi4gVGhlIG1ldGhvZCBiZWxvdyB3aWxsIGZvcmNlIHRoZSBpbnB1dCB2YWx1ZSB0byBudWxsXG4gIC8vIGluIHRoaXMgY2FzZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IHZhbGlkYXRpb24gd29ya3MgcHJvcGVybHkuXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6YW55KSB7XG4gICAgLy8gdGltZW91dCBpcyBuZWVkZWQgdG8gbWFrZSB0aGlzIHdvcmsgcHJvcGVybHlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0pIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUudG9KU09OKCkgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmdyb3VwLmNvbnRyb2xzW3RoaXMuZmllbGRdLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JvdXAuY29udHJvbHNbdGhpcy5maWVsZF0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgfVxuICAgIH0sIDUwKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snYnNDb25maWcnXSkge1xuICAgICAgaWYgKGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1pbkRhdGUgfHwgY2hhbmdlc1snYnNDb25maWcnXS5jdXJyZW50VmFsdWUubWluRGF0ZSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubWluRGF0ZSA9IGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1pbkRhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzWydic0NvbmZpZyddLmN1cnJlbnRWYWx1ZS5tYXhEYXRlIHx8IGNoYW5nZXNbJ2JzQ29uZmlnJ10uY3VycmVudFZhbHVlLm1heERhdGUgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm1heERhdGUgPSBjaGFuZ2VzWydic0NvbmZpZyddLmN1cnJlbnRWYWx1ZS5tYXhEYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgIDxpbnB1dCAgW2lkXT1cImNvbXBvbmVudElkKydfSW5wdXQnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAjZHA9XCJic0RhdGVwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIFtic0NvbmZpZ109XCJic0NvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJncm91cC5nZXQoJ2ZpZWxkJyk/LmRpc2FibGVkIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiZ2V0UGxhY2VtZW50KCkgIHx8ICdib3R0b20nXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtaW52YWxpZCc6c2hvd1ZhbGlkYXRpb24gJiYgIWNoZWNrVmFsaWRpdHkoKX1cIlxuICAgICAgICAgICAgICAgICAgKGJzVmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImRwLnRvZ2dsZSgpXCIgW2lkXT1cImNvbXBvbmVudElkKydfVG9nZ2xlQnRuJ1wiIFtkaXNhYmxlZF09XCJncm91cC5nZXQoZmllbGQpPy5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktY2FsZW5kYXIzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiY2xlYXJEYXRlKClcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19DbGVhckJ0bidcIiBbZGlzYWJsZWRdPVwiZ3JvdXAuZ2V0KGZpZWxkKT8uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXgtbGdcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIGQtYmxvY2tcIiAqbmdJZj1cInNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmdldChmaWVsZCk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+RGF0ZSBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrIGQtYmxvY2tcIiAqbmdJZj1cInNob3dWYWxpZGF0aW9uICYmIGdyb3VwLmdldChmaWVsZCk/LmludmFsaWQgJiYgIWdyb3VwLmdldChmaWVsZCk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+RGF0ZSBpcyBvdXQgb2YgcmFuZ2U8L3NtYWxsPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ohioepa/oepa-common-lib";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "@angular/forms";
|
|
6
|
+
import * as i4 from "ngx-bootstrap/datepicker";
|
|
7
|
+
export class DaterangepickerComponent {
|
|
8
|
+
idService;
|
|
9
|
+
componentId = 'OepaDaterangepickerComponent';
|
|
10
|
+
minDate;
|
|
11
|
+
maxDate;
|
|
12
|
+
isDisabled = false;
|
|
13
|
+
group;
|
|
14
|
+
field;
|
|
15
|
+
bsConfig;
|
|
16
|
+
showValidation = false;
|
|
17
|
+
constructor(idService) {
|
|
18
|
+
this.idService = idService;
|
|
19
|
+
}
|
|
20
|
+
checkValidity() {
|
|
21
|
+
for (const key in this.group.controls) {
|
|
22
|
+
if (this.group.controls.hasOwnProperty(key) && key === this.field) {
|
|
23
|
+
return this.group.controls[key].status === 'VALID';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
clearRange() {
|
|
29
|
+
for (const key in this.group.controls) {
|
|
30
|
+
if (this.group.controls.hasOwnProperty(key) && key === this.field) {
|
|
31
|
+
this.group.controls[key].setValue(null);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
if (this.bsConfig && this.bsConfig.minDate) {
|
|
37
|
+
this.minDate = this.bsConfig.minDate;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.minDate = undefined;
|
|
41
|
+
}
|
|
42
|
+
if (this.bsConfig && this.bsConfig.maxDate) {
|
|
43
|
+
this.maxDate = this.bsConfig.maxDate;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.maxDate = undefined;
|
|
47
|
+
}
|
|
48
|
+
if (this.bsConfig && this.bsConfig.isDisabled) {
|
|
49
|
+
this.isDisabled = this.bsConfig.isDisabled; // defaults to false
|
|
50
|
+
}
|
|
51
|
+
if (this.group) {
|
|
52
|
+
this.componentId = this.idService.getComponentId(this.group);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DaterangepickerComponent, deps: [{ token: i1.OepaComponentIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
56
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DaterangepickerComponent, selector: "oepa-daterangepicker", inputs: { group: "group", field: "field", bsConfig: "bsConfig", showValidation: "showValidation" }, ngImport: i0, template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #drp=\"bsDaterangepicker\"\n bsDaterangepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"isDisabled\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n >\n <div *ngIf=\"!isDisabled\" class=\"input-group-btn\">\n <button class=\"btn btn-primary\" (click)=\"drp.toggle()\" [id]=\"componentId+'_ToggleBtn'\">\n <i class=\"bi bi-calendar3\"></i>\n </button>\n <button class=\"btn btn-primary\" (click)=\"clearRange()\" [id]=\"componentId+'_ClearBtn'\">\n <i class=\"bi bi-x-lg\"></i>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Date is required</small>\n </div>\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i4.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }] });
|
|
57
|
+
}
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DaterangepickerComponent, decorators: [{
|
|
59
|
+
type: Component,
|
|
60
|
+
args: [{ selector: 'oepa-daterangepicker', template: "<div [formGroup]=\"group\">\n <div>\n <div class=\"input-group\">\n <input [id]=\"componentId+'_Input'\"\n class=\"form-control\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n #drp=\"bsDaterangepicker\"\n bsDaterangepicker\n [formControlName]=\"field\"\n [bsConfig]=\"bsConfig\"\n [isDisabled]=\"isDisabled\"\n [ngClass]=\"{'is-invalid':showValidation && !checkValidity()}\"\n >\n <div *ngIf=\"!isDisabled\" class=\"input-group-btn\">\n <button class=\"btn btn-primary\" (click)=\"drp.toggle()\" [id]=\"componentId+'_ToggleBtn'\">\n <i class=\"bi bi-calendar3\"></i>\n </button>\n <button class=\"btn btn-primary\" (click)=\"clearRange()\" [id]=\"componentId+'_ClearBtn'\">\n <i class=\"bi bi-x-lg\"></i>\n </button>\n </div>\n </div>\n <small class=\"invalid-feedback d-block\" *ngIf=\"showValidation && !checkValidity()\">Date is required</small>\n </div>\n</div>" }]
|
|
61
|
+
}], ctorParameters: () => [{ type: i1.OepaComponentIdService }], propDecorators: { group: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], field: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], bsConfig: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], showValidation: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}] } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvZGF0ZXJhbmdlcGlja2VyL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL2RhdGVyYW5nZXBpY2tlci9kYXRlcmFuZ2VwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVl6RCxNQUFNLE9BQU8sd0JBQXdCO0lBV2Y7SUFWYixXQUFXLEdBQUcsOEJBQThCLENBQUM7SUFDN0MsT0FBTyxDQUFtQjtJQUMxQixPQUFPLENBQW1CO0lBQzFCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFakIsS0FBSyxDQUFhO0lBQ2xCLEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBK0I7SUFDdkMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUVoQyxZQUFvQixTQUFpQztRQUFqQyxjQUFTLEdBQVQsU0FBUyxDQUF3QjtJQUFJLENBQUM7SUFFMUQsYUFBYTtRQUNYLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUM7WUFDckQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVO1FBQ1IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxvQkFBb0I7UUFDcEUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7d0dBL0NVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLGdLQ1pyQyxvb0NBeUJNOzs0RkRiTyx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usc0JBQXNCOzJGQVV2QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1kYXRlcmFuZ2VwaWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgY29tcG9uZW50SWQgPSAnT2VwYURhdGVyYW5nZXBpY2tlckNvbXBvbmVudCc7XG4gIHB1YmxpYyBtaW5EYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgbWF4RGF0ZTogRGF0ZSB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBncm91cCE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZmllbGQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJzQ29uZmlnITogUGFydGlhbDxCc0RhdGVwaWNrZXJDb25maWc+O1xuICBASW5wdXQoKSBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaWRTZXJ2aWNlOiBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlKSB7IH1cblxuICBjaGVja1ZhbGlkaXR5KCkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuZ3JvdXAuY29udHJvbHMpIHtcbiAgICAgIGlmICh0aGlzLmdyb3VwLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGtleSkgJiYga2V5ID09PSB0aGlzLmZpZWxkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwLmNvbnRyb2xzW2tleV0uc3RhdHVzID09PSAnVkFMSUQnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNsZWFyUmFuZ2UoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5ncm91cC5jb250cm9scykge1xuICAgICAgaWYgKHRoaXMuZ3JvdXAuY29udHJvbHMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgPT09IHRoaXMuZmllbGQpIHtcbiAgICAgICAgdGhpcy5ncm91cC5jb250cm9sc1trZXldLnNldFZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmJzQ29uZmlnICYmIHRoaXMuYnNDb25maWcubWluRGF0ZSkge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSB0aGlzLmJzQ29uZmlnLm1pbkRhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5taW5EYXRlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLm1heERhdGUpIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gdGhpcy5ic0NvbmZpZy5tYXhEYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWF4RGF0ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRoaXMuYnNDb25maWcuaXNEaXNhYmxlZDsgLy8gZGVmYXVsdHMgdG8gZmFsc2VcbiAgICB9XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRJZCA9IHRoaXMuaWRTZXJ2aWNlLmdldENvbXBvbmVudElkKHRoaXMuZ3JvdXApO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgIDxpbnB1dCAgW2lkXT1cImNvbXBvbmVudElkKydfSW5wdXQnXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZVwiXG4gICAgICAgICAgICAgICAgICAjZHJwPVwiYnNEYXRlcmFuZ2VwaWNrZXJcIlxuICAgICAgICAgICAgICAgICAgYnNEYXRlcmFuZ2VwaWNrZXJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW2JzQ29uZmlnXT1cImJzQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzpzaG93VmFsaWRhdGlvbiAmJiAhY2hlY2tWYWxpZGl0eSgpfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0Rpc2FibGVkXCIgY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZHJwLnRvZ2dsZSgpXCIgW2lkXT1cImNvbXBvbmVudElkKydfVG9nZ2xlQnRuJ1wiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWNhbGVuZGFyM1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJjbGVhclJhbmdlKClcIiBbaWRdPVwiY29tcG9uZW50SWQrJ19DbGVhckJ0bidcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS14LWxnXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2sgZC1ibG9ja1wiICpuZ0lmPVwic2hvd1ZhbGlkYXRpb24gJiYgIWNoZWNrVmFsaWRpdHkoKVwiPkRhdGUgaXMgcmVxdWlyZWQ8L3NtYWxsPlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|