slick-components 4.4.13 → 4.4.16
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/css/slick-components.css +598 -365
- package/css/slick-components.min.css +1 -1
- package/esm2020/public-api.mjs +43 -0
- package/esm2020/slick-accordion/slick-accordion-item-header.component.mjs +14 -0
- package/esm2020/slick-accordion/slick-accordion-item.component.mjs +86 -0
- package/esm2020/slick-accordion/slick-accordion.component.mjs +75 -0
- package/esm2020/slick-accordion/slick-accordion.module.mjs +23 -0
- package/esm2020/slick-auto-complete/slick-auto-complete-list-item-template.directive.mjs +22 -0
- package/esm2020/slick-auto-complete/slick-auto-complete.component.mjs +375 -0
- package/esm2020/slick-auto-complete/slick-auto-complete.module.mjs +24 -0
- package/esm2020/slick-button-spinner/slick-button-spinner.component.mjs +175 -0
- package/esm2020/slick-button-spinner/slick-button-spinner.module.mjs +19 -0
- package/esm2020/slick-calendar/slick-calendar.component.mjs +246 -0
- package/esm2020/slick-calendar/slick-calendar.module.mjs +19 -0
- package/esm2020/slick-card/slick-card-header.component.mjs +14 -0
- package/esm2020/slick-card/slick-card.component.mjs +42 -0
- package/esm2020/slick-card/slick-card.module.mjs +20 -0
- package/esm2020/slick-components.mjs +5 -0
- package/esm2020/slick-confirm-dialog/slick-confirm-dialog.component.mjs +65 -0
- package/esm2020/slick-confirm-dialog/slick-confirm-dialog.module.mjs +20 -0
- package/esm2020/slick-container/slick-container-body.component.mjs +24 -0
- package/esm2020/slick-container/slick-container-footer.component.mjs +20 -0
- package/esm2020/slick-container/slick-container-header.component.mjs +20 -0
- package/esm2020/slick-container/slick-container.component.mjs +21 -0
- package/esm2020/slick-container/slick-container.module.mjs +25 -0
- package/esm2020/slick-context-menu/slick-context-menu-item.component.mjs +14 -0
- package/esm2020/slick-context-menu/slick-context-menu.component.mjs +48 -0
- package/esm2020/slick-context-menu/slick-context-menu.module.mjs +20 -0
- package/{esm2015/slick-currency-mask/slick-currency-mask-options.model.js → esm2020/slick-currency-mask/slick-currency-mask-options.model.mjs} +0 -0
- package/esm2020/slick-currency-mask/slick-currency-mask.directive.mjs +233 -0
- package/esm2020/slick-currency-mask/slick-currency-mask.module.mjs +19 -0
- package/esm2020/slick-date-picker/slick-date-picker.component.mjs +278 -0
- package/esm2020/slick-date-picker/slick-date-picker.module.mjs +21 -0
- package/esm2020/slick-dialog/slick-dialog-footer.component.mjs +24 -0
- package/esm2020/slick-dialog/slick-dialog.component.mjs +294 -0
- package/esm2020/slick-dialog/slick-dialog.module.mjs +23 -0
- package/esm2020/slick-dialog/slick-dialog.service.mjs +68 -0
- package/esm2020/slick-drag-drop/slick-drag-drop.directive.mjs +13 -0
- package/esm2020/slick-drag-drop/slick-drag-drop.module.mjs +21 -0
- package/esm2020/slick-drag-drop/slick-draggable.directive.mjs +13 -0
- package/{esm2015/slick-drop-down/slick-drop-down-button.model.js → esm2020/slick-drop-down/slick-drop-down-button.model.mjs} +0 -0
- package/esm2020/slick-drop-down/slick-drop-down.component.mjs +479 -0
- package/esm2020/slick-drop-down/slick-drop-down.module.mjs +24 -0
- package/esm2020/slick-drop-down/slick-drop-down.service.mjs +55 -0
- package/esm2020/slick-drop-list/slick-drop-list-grab.directive.mjs +18 -0
- package/esm2020/slick-drop-list/slick-drop-list-item.directive.mjs +18 -0
- package/esm2020/slick-drop-list/slick-drop-list.directive.mjs +215 -0
- package/esm2020/slick-drop-list/slick-drop-list.module.mjs +23 -0
- package/esm2020/slick-email-viewer/slick-email-viewer-dialog.component.mjs +81 -0
- package/esm2020/slick-email-viewer/slick-email-viewer.component.mjs +42 -0
- package/esm2020/slick-email-viewer/slick-email-viewer.module.mjs +26 -0
- package/{esm2015/slick-emailer/slick-emailer-address.model.js → esm2020/slick-emailer/slick-emailer-address.model.mjs} +0 -0
- package/esm2020/slick-emailer/slick-emailer-dialog.component.mjs +153 -0
- package/esm2020/slick-emailer/slick-emailer.component.mjs +235 -0
- package/{esm2015/slick-emailer/slick-emailer.model.js → esm2020/slick-emailer/slick-emailer.model.mjs} +0 -0
- package/esm2020/slick-emailer/slick-emailer.module.mjs +29 -0
- package/esm2020/slick-file-drop/slick-file-drop.component.mjs +156 -0
- package/esm2020/slick-file-drop/slick-file-drop.module.mjs +20 -0
- package/esm2020/slick-file-list/slick-file-list-item.component.mjs +173 -0
- package/esm2020/slick-file-list/slick-file-list.component.mjs +130 -0
- package/esm2020/slick-file-list/slick-file-list.module.mjs +23 -0
- package/{esm2015/slick-file-model/slick-file.model.js → esm2020/slick-file-model/slick-file.model.mjs} +0 -0
- package/esm2020/slick-google-address-search/slick-google-address-search.directive.mjs +75 -0
- package/esm2020/slick-google-address-search/slick-google-address-search.module.mjs +19 -0
- package/esm2020/slick-google-map/slick-google-map-dialog.component.mjs +50 -0
- package/esm2020/slick-google-map/slick-google-map.component.mjs +48 -0
- package/esm2020/slick-google-map/slick-google-map.module.mjs +22 -0
- package/esm2020/slick-grid/slick-grid-column-template.directive.mjs +19 -0
- package/{esm2015/slick-grid/slick-grid-column.model.js → esm2020/slick-grid/slick-grid-column.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-favorite.model.js → esm2020/slick-grid/slick-grid-favorite.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-request.model.js → esm2020/slick-grid/slick-grid-request.model.mjs} +0 -0
- package/{esm2015/slick-grid/slick-grid-response.model.js → esm2020/slick-grid/slick-grid-response.model.mjs} +0 -0
- package/esm2020/slick-grid/slick-grid-sanitize.pipe.mjs +20 -0
- package/esm2020/slick-grid/slick-grid.component.mjs +793 -0
- package/esm2020/slick-grid/slick-grid.module.mjs +43 -0
- package/{esm2015/slick-grid/slick-grid.options.js → esm2020/slick-grid/slick-grid.options.mjs} +0 -0
- package/esm2020/slick-grid/slick-grid.service.mjs +66 -0
- package/esm2020/slick-multi-select/slick-multi-select.component.mjs +362 -0
- package/esm2020/slick-multi-select/slick-multi-select.module.mjs +20 -0
- package/esm2020/slick-multi-select/slick-multi-select.service.mjs +77 -0
- package/esm2020/slick-ordered-list/slick-ordered-list.component.mjs +200 -0
- package/esm2020/slick-ordered-list/slick-ordered-list.module.mjs +20 -0
- package/esm2020/slick-paging/slick-paging.component.mjs +185 -0
- package/esm2020/slick-paging/slick-paging.module.mjs +19 -0
- package/esm2020/slick-photo-gallery/slick-photo-gallery.component.mjs +98 -0
- package/{esm2015/slick-photo-gallery/slick-photo-gallery.model.js → esm2020/slick-photo-gallery/slick-photo-gallery.model.mjs} +0 -0
- package/esm2020/slick-photo-gallery/slick-photo-gallery.module.mjs +21 -0
- package/esm2020/slick-pick-list/slick-pick-list.component.mjs +84 -0
- package/esm2020/slick-pick-list/slick-pick-list.module.mjs +20 -0
- package/esm2020/slick-popover/slick-popover.component.mjs +204 -0
- package/esm2020/slick-popover/slick-popover.module.mjs +19 -0
- package/esm2020/slick-profile-picture/slick-profile-picture.component.mjs +267 -0
- package/esm2020/slick-profile-picture/slick-profile-picture.module.mjs +20 -0
- package/esm2020/slick-progress-bar/slick-progress-bar.module.mjs +18 -0
- package/esm2020/slick-progress-bar/slick-progress-bar.service.mjs +53 -0
- package/esm2020/slick-screen-blocker/slick-screen-blocker.module.mjs +18 -0
- package/esm2020/slick-screen-blocker/slick-screen-blocker.service.mjs +83 -0
- package/{esm2015/slick-slider/slick-slider-tick.model.js → esm2020/slick-slider/slick-slider-tick.model.mjs} +0 -0
- package/esm2020/slick-slider/slick-slider.component.mjs +90 -0
- package/esm2020/slick-slider/slick-slider.module.mjs +20 -0
- package/esm2020/slick-split-screen/slick-screen-split-left-content.component.mjs +15 -0
- package/esm2020/slick-split-screen/slick-screen-split-right-content.component.mjs +15 -0
- package/esm2020/slick-split-screen/slick-split-screen.component.mjs +159 -0
- package/esm2020/slick-split-screen/slick-split-screen.module.mjs +21 -0
- package/esm2020/slick-tabs/slick-tab-header.component.mjs +28 -0
- package/esm2020/slick-tabs/slick-tab.component.mjs +63 -0
- package/{esm2015/slick-tabs/slick-tab.model.js → esm2020/slick-tabs/slick-tab.model.mjs} +0 -0
- package/esm2020/slick-tabs/slick-tabs.component.mjs +107 -0
- package/esm2020/slick-tabs/slick-tabs.module.mjs +23 -0
- package/esm2020/slick-toast/slick-toast.module.mjs +18 -0
- package/esm2020/slick-toast/slick-toast.service.mjs +88 -0
- package/{esm2015/slick-tree-view/slick-tree-node.model.js → esm2020/slick-tree-view/slick-tree-node.model.mjs} +0 -0
- package/esm2020/slick-tree-view/slick-tree-view.component.mjs +293 -0
- package/esm2020/slick-tree-view/slick-tree-view.module.mjs +22 -0
- package/esm2020/slick-type-ahead/slick-type-ahead.directive.mjs +164 -0
- package/esm2020/slick-type-ahead/slick-type-ahead.module.mjs +18 -0
- package/esm2020/slick-validation-indicator/slick-validation-indicator.directive.mjs +63 -0
- package/esm2020/slick-validation-indicator/slick-validation-indicator.module.mjs +19 -0
- package/esm2020/utils/slick-function-lock.service.mjs +55 -0
- package/esm2020/utils/slick-init.service.mjs +49 -0
- package/esm2020/utils/slick-log.service.mjs +23 -0
- package/esm2020/utils/slick-sleep.service.mjs +14 -0
- package/esm2020/utils/slick-utils.service.mjs +247 -0
- package/fesm2015/{slick-components.js → slick-components.mjs} +2779 -2070
- package/fesm2015/slick-components.mjs.map +1 -0
- package/fesm2020/slick-components.mjs +8467 -0
- package/fesm2020/slick-components.mjs.map +1 -0
- package/package.json +20 -8
- package/public-api.d.ts +8 -8
- package/slick-accordion/slick-accordion-item-header.component.d.ts +3 -0
- package/slick-accordion/slick-accordion-item.component.d.ts +3 -0
- package/slick-accordion/slick-accordion.component.d.ts +3 -0
- package/slick-accordion/slick-accordion.module.d.ts +8 -0
- package/slick-auto-complete/slick-auto-complete-list-item-template.directive.d.ts +3 -0
- package/slick-auto-complete/slick-auto-complete.component.d.ts +3 -0
- package/slick-auto-complete/slick-auto-complete.module.d.ts +8 -0
- package/slick-button-spinner/slick-button-spinner.component.d.ts +3 -0
- package/slick-button-spinner/slick-button-spinner.module.d.ts +6 -0
- package/slick-calendar/slick-calendar.component.d.ts +3 -0
- package/slick-calendar/slick-calendar.module.d.ts +6 -0
- package/slick-card/slick-card-header.component.d.ts +3 -0
- package/slick-card/slick-card.component.d.ts +3 -0
- package/slick-card/slick-card.module.d.ts +10 -0
- package/slick-components.d.ts +1 -22
- package/slick-confirm-dialog/slick-confirm-dialog.component.d.ts +3 -0
- package/slick-confirm-dialog/slick-confirm-dialog.module.d.ts +7 -0
- package/slick-container/slick-container-body.component.d.ts +3 -0
- package/slick-container/slick-container-footer.component.d.ts +3 -0
- package/slick-container/slick-container-header.component.d.ts +3 -0
- package/slick-container/slick-container.component.d.ts +3 -0
- package/slick-container/slick-container.module.d.ts +9 -0
- package/slick-context-menu/slick-context-menu-item.component.d.ts +3 -0
- package/slick-context-menu/slick-context-menu.component.d.ts +3 -0
- package/slick-context-menu/slick-context-menu.module.d.ts +7 -0
- package/slick-currency-mask/slick-currency-mask.directive.d.ts +3 -0
- package/slick-currency-mask/slick-currency-mask.module.d.ts +5 -0
- package/slick-date-picker/slick-date-picker.component.d.ts +3 -0
- package/slick-date-picker/slick-date-picker.module.d.ts +8 -0
- package/slick-dialog/slick-dialog-footer.component.d.ts +3 -0
- package/slick-dialog/slick-dialog.component.d.ts +3 -0
- package/slick-dialog/slick-dialog.module.d.ts +10 -1
- package/slick-dialog/slick-dialog.service.d.ts +3 -0
- package/slick-drag-drop/slick-drag-drop.directive.d.ts +3 -0
- package/slick-drag-drop/slick-drag-drop.module.d.ts +11 -0
- package/slick-drag-drop/slick-draggable.directive.d.ts +3 -0
- package/slick-drop-down/slick-drop-down.component.d.ts +3 -0
- package/slick-drop-down/slick-drop-down.module.d.ts +9 -0
- package/slick-drop-down/slick-drop-down.service.d.ts +3 -0
- package/slick-drop-list/slick-drop-list-grab.directive.d.ts +3 -0
- package/slick-drop-list/slick-drop-list-item.directive.d.ts +3 -0
- package/slick-drop-list/slick-drop-list.directive.d.ts +13 -7
- package/slick-drop-list/slick-drop-list.module.d.ts +14 -0
- package/slick-email-viewer/slick-email-viewer-dialog.component.d.ts +3 -0
- package/slick-email-viewer/slick-email-viewer.component.d.ts +3 -0
- package/slick-email-viewer/slick-email-viewer.module.d.ts +10 -0
- package/slick-emailer/slick-emailer-dialog.component.d.ts +3 -0
- package/slick-emailer/slick-emailer.component.d.ts +3 -0
- package/slick-emailer/slick-emailer.module.d.ts +13 -0
- package/slick-file-drop/slick-file-drop.component.d.ts +3 -0
- package/slick-file-drop/slick-file-drop.module.d.ts +7 -0
- package/slick-file-list/slick-file-list-item.component.d.ts +3 -0
- package/slick-file-list/slick-file-list.component.d.ts +3 -0
- package/slick-file-list/slick-file-list.module.d.ts +10 -0
- package/slick-google-address-search/slick-google-address-search.directive.d.ts +3 -0
- package/slick-google-address-search/slick-google-address-search.module.d.ts +6 -0
- package/slick-google-map/slick-google-map-dialog.component.d.ts +3 -0
- package/slick-google-map/slick-google-map.component.d.ts +3 -0
- package/slick-google-map/slick-google-map.module.d.ts +8 -0
- package/slick-grid/slick-grid-column-template.directive.d.ts +3 -0
- package/slick-grid/slick-grid-sanitize.pipe.d.ts +3 -0
- package/slick-grid/slick-grid.component.d.ts +3 -0
- package/slick-grid/slick-grid.module.d.ts +16 -0
- package/slick-grid/slick-grid.service.d.ts +3 -0
- package/slick-multi-select/slick-multi-select.component.d.ts +3 -0
- package/slick-multi-select/slick-multi-select.module.d.ts +7 -0
- package/slick-multi-select/slick-multi-select.service.d.ts +3 -0
- package/slick-ordered-list/slick-ordered-list.component.d.ts +3 -0
- package/slick-ordered-list/slick-ordered-list.module.d.ts +7 -0
- package/slick-paging/slick-paging.component.d.ts +3 -0
- package/slick-paging/slick-paging.module.d.ts +6 -0
- package/slick-photo-gallery/slick-photo-gallery.component.d.ts +3 -0
- package/slick-photo-gallery/slick-photo-gallery.module.d.ts +6 -0
- package/slick-pick-list/slick-pick-list.component.d.ts +3 -0
- package/slick-pick-list/slick-pick-list.module.d.ts +7 -0
- package/slick-popover/slick-popover.component.d.ts +3 -0
- package/slick-popover/slick-popover.module.d.ts +6 -0
- package/slick-profile-picture/slick-profile-picture.component.d.ts +3 -0
- package/slick-profile-picture/slick-profile-picture.module.d.ts +7 -0
- package/slick-progress-bar/slick-progress-bar.module.d.ts +5 -0
- package/slick-progress-bar/slick-progress-bar.service.d.ts +3 -0
- package/slick-screen-blocker/slick-screen-blocker.module.d.ts +5 -0
- package/slick-screen-blocker/slick-screen-blocker.service.d.ts +3 -0
- package/slick-slider/slick-slider.component.d.ts +3 -0
- package/slick-slider/slick-slider.module.d.ts +6 -0
- package/slick-split-screen/slick-screen-split-left-content.component.d.ts +3 -0
- package/slick-split-screen/slick-screen-split-right-content.component.d.ts +3 -0
- package/slick-split-screen/slick-split-screen.component.d.ts +3 -0
- package/slick-split-screen/slick-split-screen.module.d.ts +8 -0
- package/slick-tabs/slick-tab-header.component.d.ts +3 -0
- package/slick-tabs/slick-tab.component.d.ts +3 -0
- package/slick-tabs/slick-tabs.component.d.ts +3 -0
- package/slick-tabs/slick-tabs.module.d.ts +10 -0
- package/slick-toast/slick-toast.module.d.ts +5 -0
- package/slick-toast/slick-toast.service.d.ts +3 -0
- package/slick-tree-view/slick-tree-view.component.d.ts +3 -0
- package/slick-tree-view/slick-tree-view.module.d.ts +8 -0
- package/slick-type-ahead/slick-type-ahead.directive.d.ts +3 -0
- package/slick-type-ahead/slick-type-ahead.module.d.ts +5 -0
- package/slick-validation-indicator/slick-validation-indicator.directive.d.ts +3 -0
- package/slick-validation-indicator/slick-validation-indicator.module.d.ts +6 -0
- package/utils/slick-function-lock.service.d.ts +3 -0
- package/utils/slick-init.service.d.ts +3 -0
- package/utils/slick-log.service.d.ts +3 -0
- package/utils/slick-sleep.service.d.ts +3 -0
- package/utils/slick-utils.service.d.ts +5 -0
- package/bundles/slick-components.umd.js +0 -9777
- package/bundles/slick-components.umd.js.map +0 -1
- package/esm2015/public-api.js +0 -43
- package/esm2015/slick-accordion/slick-accordion-item-header.component.js +0 -10
- package/esm2015/slick-accordion/slick-accordion-item.component.js +0 -80
- package/esm2015/slick-accordion/slick-accordion.component.js +0 -77
- package/esm2015/slick-accordion/slick-accordion.module.js +0 -18
- package/esm2015/slick-auto-complete/slick-auto-complete-list-item-template.directive.js +0 -21
- package/esm2015/slick-auto-complete/slick-auto-complete.component.js +0 -352
- package/esm2015/slick-auto-complete/slick-auto-complete.module.js +0 -19
- package/esm2015/slick-button-spinner/slick-button-spinner.component.js +0 -186
- package/esm2015/slick-button-spinner/slick-button-spinner.module.js +0 -14
- package/esm2015/slick-calendar/slick-calendar.component.js +0 -233
- package/esm2015/slick-calendar/slick-calendar.module.js +0 -14
- package/esm2015/slick-card/slick-card-header.component.js +0 -10
- package/esm2015/slick-card/slick-card.component.js +0 -37
- package/esm2015/slick-card/slick-card.module.js +0 -14
- package/esm2015/slick-components.js +0 -27
- package/esm2015/slick-confirm-dialog/slick-confirm-dialog.component.js +0 -62
- package/esm2015/slick-confirm-dialog/slick-confirm-dialog.module.js +0 -15
- package/esm2015/slick-container/slick-container-body.component.js +0 -18
- package/esm2015/slick-container/slick-container-footer.component.js +0 -16
- package/esm2015/slick-container/slick-container-header.component.js +0 -16
- package/esm2015/slick-container/slick-container.component.js +0 -19
- package/esm2015/slick-container/slick-container.module.js +0 -20
- package/esm2015/slick-context-menu/slick-context-menu-item.component.js +0 -10
- package/esm2015/slick-context-menu/slick-context-menu.component.js +0 -43
- package/esm2015/slick-context-menu/slick-context-menu.module.js +0 -15
- package/esm2015/slick-currency-mask/slick-currency-mask.directive.js +0 -234
- package/esm2015/slick-currency-mask/slick-currency-mask.module.js +0 -14
- package/esm2015/slick-date-picker/slick-date-picker.component.js +0 -267
- package/esm2015/slick-date-picker/slick-date-picker.module.js +0 -16
- package/esm2015/slick-dialog/slick-dialog-footer.component.js +0 -18
- package/esm2015/slick-dialog/slick-dialog.component.js +0 -282
- package/esm2015/slick-dialog/slick-dialog.module.js +0 -18
- package/esm2015/slick-dialog/slick-dialog.service.js +0 -67
- package/esm2015/slick-drag-drop/slick-drag-drop.directive.js +0 -9
- package/esm2015/slick-drag-drop/slick-drag-drop.module.js +0 -14
- package/esm2015/slick-drag-drop/slick-draggable.directive.js +0 -9
- package/esm2015/slick-drop-down/slick-drop-down.component.js +0 -465
- package/esm2015/slick-drop-down/slick-drop-down.module.js +0 -19
- package/esm2015/slick-drop-down/slick-drop-down.service.js +0 -59
- package/esm2015/slick-drop-list/slick-drop-list-grab.directive.js +0 -18
- package/esm2015/slick-drop-list/slick-drop-list-item.directive.js +0 -18
- package/esm2015/slick-drop-list/slick-drop-list.directive.js +0 -162
- package/esm2015/slick-drop-list/slick-drop-list.module.js +0 -15
- package/esm2015/slick-email-viewer/slick-email-viewer-dialog.component.js +0 -61
- package/esm2015/slick-email-viewer/slick-email-viewer.component.js +0 -39
- package/esm2015/slick-email-viewer/slick-email-viewer.module.js +0 -21
- package/esm2015/slick-emailer/slick-emailer-dialog.component.js +0 -122
- package/esm2015/slick-emailer/slick-emailer.component.js +0 -226
- package/esm2015/slick-emailer/slick-emailer.module.js +0 -24
- package/esm2015/slick-file-drop/slick-file-drop.component.js +0 -144
- package/esm2015/slick-file-drop/slick-file-drop.module.js +0 -15
- package/esm2015/slick-file-list/slick-file-list-item.component.js +0 -156
- package/esm2015/slick-file-list/slick-file-list.component.js +0 -114
- package/esm2015/slick-file-list/slick-file-list.module.js +0 -18
- package/esm2015/slick-google-address-search/slick-google-address-search.directive.js +0 -75
- package/esm2015/slick-google-address-search/slick-google-address-search.module.js +0 -14
- package/esm2015/slick-google-map/slick-google-map-dialog.component.js +0 -45
- package/esm2015/slick-google-map/slick-google-map.component.js +0 -45
- package/esm2015/slick-google-map/slick-google-map.module.js +0 -17
- package/esm2015/slick-grid/slick-grid-column-template.directive.js +0 -19
- package/esm2015/slick-grid/slick-grid-sanitize.pipe.js +0 -20
- package/esm2015/slick-grid/slick-grid.component.js +0 -792
- package/esm2015/slick-grid/slick-grid.module.js +0 -38
- package/esm2015/slick-grid/slick-grid.service.js +0 -72
- package/esm2015/slick-multi-select/slick-multi-select.component.js +0 -356
- package/esm2015/slick-multi-select/slick-multi-select.module.js +0 -15
- package/esm2015/slick-multi-select/slick-multi-select.service.js +0 -74
- package/esm2015/slick-ordered-list/slick-ordered-list.component.js +0 -198
- package/esm2015/slick-ordered-list/slick-ordered-list.module.js +0 -15
- package/esm2015/slick-paging/slick-paging.component.js +0 -180
- package/esm2015/slick-paging/slick-paging.module.js +0 -14
- package/esm2015/slick-photo-gallery/slick-photo-gallery.component.js +0 -101
- package/esm2015/slick-photo-gallery/slick-photo-gallery.module.js +0 -16
- package/esm2015/slick-pick-list/slick-pick-list.component.js +0 -78
- package/esm2015/slick-pick-list/slick-pick-list.module.js +0 -15
- package/esm2015/slick-popover/slick-popover.component.js +0 -199
- package/esm2015/slick-popover/slick-popover.module.js +0 -14
- package/esm2015/slick-profile-picture/slick-profile-picture.component.js +0 -242
- package/esm2015/slick-profile-picture/slick-profile-picture.module.js +0 -15
- package/esm2015/slick-progress-bar/slick-progress-bar.module.js +0 -13
- package/esm2015/slick-progress-bar/slick-progress-bar.service.js +0 -50
- package/esm2015/slick-screen-blocker/slick-screen-blocker.module.js +0 -13
- package/esm2015/slick-screen-blocker/slick-screen-blocker.service.js +0 -80
- package/esm2015/slick-slider/slick-slider.component.js +0 -88
- package/esm2015/slick-slider/slick-slider.module.js +0 -15
- package/esm2015/slick-split-screen/slick-screen-split-left-content.component.js +0 -13
- package/esm2015/slick-split-screen/slick-screen-split-right-content.component.js +0 -13
- package/esm2015/slick-split-screen/slick-split-screen.component.js +0 -148
- package/esm2015/slick-split-screen/slick-split-screen.module.js +0 -16
- package/esm2015/slick-tabs/slick-tab-header.component.js +0 -25
- package/esm2015/slick-tabs/slick-tab.component.js +0 -67
- package/esm2015/slick-tabs/slick-tabs.component.js +0 -104
- package/esm2015/slick-tabs/slick-tabs.module.js +0 -17
- package/esm2015/slick-toast/slick-toast.module.js +0 -13
- package/esm2015/slick-toast/slick-toast.service.js +0 -91
- package/esm2015/slick-tree-view/slick-tree-view.component.js +0 -287
- package/esm2015/slick-tree-view/slick-tree-view.module.js +0 -17
- package/esm2015/slick-type-ahead/slick-type-ahead.directive.js +0 -155
- package/esm2015/slick-type-ahead/slick-type-ahead.module.js +0 -13
- package/esm2015/slick-validation-indicator/slick-validation-indicator.directive.js +0 -61
- package/esm2015/slick-validation-indicator/slick-validation-indicator.module.js +0 -14
- package/esm2015/utils/slick-function-lock.service.js +0 -54
- package/esm2015/utils/slick-init.service.js +0 -48
- package/esm2015/utils/slick-log.service.js +0 -27
- package/esm2015/utils/slick-sleep.service.js +0 -14
- package/esm2015/utils/slick-utils.service.js +0 -229
- package/fesm2015/slick-components.js.map +0 -1
- package/slick-components.metadata.json +0 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ViewChild, forwardRef } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { SlickSleepService } from "../utils/slick-sleep.service";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../slick-dialog/slick-dialog.component";
|
|
6
|
+
import * as i2 from "./slick-emailer.component";
|
|
7
|
+
import * as i3 from "../slick-dialog/slick-dialog-footer.component";
|
|
8
|
+
import * as i4 from "../slick-button-spinner/slick-button-spinner.component";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
import * as i6 from "@angular/forms";
|
|
11
|
+
export class SlickEmailerDialogComponent {
|
|
12
|
+
constructor(changeDetector) {
|
|
13
|
+
this.changeDetector = changeDetector;
|
|
14
|
+
this.bodyHeight = "180px";
|
|
15
|
+
this.toAddressSearchEmitter = new EventEmitter();
|
|
16
|
+
this.sendEmailClickEmitter = new EventEmitter();
|
|
17
|
+
this.cancelEmailClickEmitter = new EventEmitter();
|
|
18
|
+
this.spinnerStatus = null;
|
|
19
|
+
this.isVisible = false;
|
|
20
|
+
this.propagateChange = (_) => { };
|
|
21
|
+
}
|
|
22
|
+
// this is the initial value set to the component
|
|
23
|
+
writeValue(obj) {
|
|
24
|
+
this.emailerModel = obj;
|
|
25
|
+
}
|
|
26
|
+
// registers 'fn' that will be fired when changes are made
|
|
27
|
+
// this is how we emit the changes back to the form
|
|
28
|
+
registerOnChange(fn) {
|
|
29
|
+
this.propagateChange = fn;
|
|
30
|
+
}
|
|
31
|
+
// not used, used for touch input
|
|
32
|
+
registerOnTouched() { }
|
|
33
|
+
async showDialog() {
|
|
34
|
+
this.isVisible = true;
|
|
35
|
+
await SlickSleepService.sleep();
|
|
36
|
+
this.dialogEmailerModel = this.emailerModel;
|
|
37
|
+
this.emailerRef.isSubmitted = false;
|
|
38
|
+
this.spinnerStatus = "reset";
|
|
39
|
+
this.emailerRef.dialogInit();
|
|
40
|
+
this.emailerDialogRef.showDialog();
|
|
41
|
+
}
|
|
42
|
+
toAddressSearch(searchText) {
|
|
43
|
+
this.toAddressSearchEmitter.emit(searchText);
|
|
44
|
+
}
|
|
45
|
+
onSendEmail() {
|
|
46
|
+
this.dialogEmailerModel.toEmailAddresses = this.emailerRef.getEmailAddresses(this.dialogEmailerModel);
|
|
47
|
+
if (this.emailerRef.validate() === false)
|
|
48
|
+
return;
|
|
49
|
+
this.dialogEmailerModel.body = this.emailerRef.getBody();
|
|
50
|
+
this.spinnerStatus = "spin";
|
|
51
|
+
if (this.sendEmailClickEmitter)
|
|
52
|
+
this.sendEmailClickEmitter.emit(this.dialogEmailerModel);
|
|
53
|
+
}
|
|
54
|
+
async emailSent() {
|
|
55
|
+
try {
|
|
56
|
+
this.spinnerStatus = "ok";
|
|
57
|
+
this.emailerRef.emailSent();
|
|
58
|
+
this.emailerDialogRef.hideDialog();
|
|
59
|
+
await SlickSleepService.sleep(500);
|
|
60
|
+
this.emailerRef.removeTinyMCE();
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error(error);
|
|
64
|
+
this.spinnerStatus = "error";
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
emailError() {
|
|
68
|
+
this.spinnerStatus = "error";
|
|
69
|
+
}
|
|
70
|
+
async onCancelEmail() {
|
|
71
|
+
this.spinnerStatus = "reset";
|
|
72
|
+
this.emailerRef.removeTinyMCE();
|
|
73
|
+
this.emailerDialogRef.hideDialog();
|
|
74
|
+
if (this.cancelEmailClickEmitter)
|
|
75
|
+
this.cancelEmailClickEmitter.emit();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** @nocollapse */ SlickEmailerDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
+
/** @nocollapse */ SlickEmailerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SlickEmailerDialogComponent, selector: "slick-emailer-dialog", inputs: { toEmailAddressList: "toEmailAddressList", bodyHeight: "bodyHeight" }, outputs: { toAddressSearchEmitter: "toAddressSearch", sendEmailClickEmitter: "sendEmailClick", cancelEmailClickEmitter: "cancelEmailClick" }, providers: [
|
|
80
|
+
{
|
|
81
|
+
provide: NG_VALUE_ACCESSOR,
|
|
82
|
+
useExisting: forwardRef((() => SlickEmailerDialogComponent)),
|
|
83
|
+
multi: true,
|
|
84
|
+
}
|
|
85
|
+
], viewQueries: [{ propertyName: "emailerDialogRef", first: true, predicate: ["emailerDialogRef"], descendants: true }, { propertyName: "emailerRef", first: true, predicate: ["emailerRef"], descendants: true }], ngImport: i0, template: `<slick-dialog *ngIf='isVisible' header='Send Email' [width]='800' (onClose)='onCancelEmail()' #emailerDialogRef>
|
|
86
|
+
<slick-emailer #emailerRef [(ngModel)]='dialogEmailerModel'
|
|
87
|
+
[bodyHeight]='bodyHeight'
|
|
88
|
+
[showButtons]='false'
|
|
89
|
+
[toEmailAddressList]='toEmailAddressList'
|
|
90
|
+
(toAddressSearch)='toAddressSearch($event)'>
|
|
91
|
+
</slick-emailer>
|
|
92
|
+
|
|
93
|
+
<slick-dialog-footer>
|
|
94
|
+
<div class="row">
|
|
95
|
+
<div class="col-12 text-center mb-2 mt-1">
|
|
96
|
+
<button type="button" style="width: 120px; margin-right: 10px;" [slick-button-spinner]="spinnerStatus" class="btn btn-outline-primary" (click)="onSendEmail()"><i class="far fa-envelope"></i> Send</button>
|
|
97
|
+
<button type="button" style="width: 120px;" class="btn btn-outline-danger" (click)="onCancelEmail()"><i class="far fa-times"></i> Cancel</button>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</slick-dialog-footer>
|
|
101
|
+
</slick-dialog>`, isInline: true, components: [{ type: i1.SlickDialogComponent, selector: "slick-dialog", inputs: ["draggable", "resizable", "minimizable", "header", "showHeader", "noPadding", "top", "width", "height", "maxHeight", "cssClass", "key", "showOverlay", "disableScrollbar"], outputs: ["onClose"] }, { type: i2.SlickEmailerComponent, selector: "slick-emailer", inputs: ["toEmailAddressList", "showButtons", "bodyHeight"], outputs: ["toAddressSearch", "sendEmailClick", "cancelEmailClick"] }, { type: i3.SlickDialogFooterComponent, selector: "slick-dialog-footer" }, { type: i4.SlickButtonSpinnerComponent, selector: "[slick-button-spinner]", inputs: ["slick-button-spinner"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerDialogComponent, decorators: [{
|
|
103
|
+
type: Component,
|
|
104
|
+
args: [{
|
|
105
|
+
selector: 'slick-emailer-dialog',
|
|
106
|
+
template: `<slick-dialog *ngIf='isVisible' header='Send Email' [width]='800' (onClose)='onCancelEmail()' #emailerDialogRef>
|
|
107
|
+
<slick-emailer #emailerRef [(ngModel)]='dialogEmailerModel'
|
|
108
|
+
[bodyHeight]='bodyHeight'
|
|
109
|
+
[showButtons]='false'
|
|
110
|
+
[toEmailAddressList]='toEmailAddressList'
|
|
111
|
+
(toAddressSearch)='toAddressSearch($event)'>
|
|
112
|
+
</slick-emailer>
|
|
113
|
+
|
|
114
|
+
<slick-dialog-footer>
|
|
115
|
+
<div class="row">
|
|
116
|
+
<div class="col-12 text-center mb-2 mt-1">
|
|
117
|
+
<button type="button" style="width: 120px; margin-right: 10px;" [slick-button-spinner]="spinnerStatus" class="btn btn-outline-primary" (click)="onSendEmail()"><i class="far fa-envelope"></i> Send</button>
|
|
118
|
+
<button type="button" style="width: 120px;" class="btn btn-outline-danger" (click)="onCancelEmail()"><i class="far fa-times"></i> Cancel</button>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</slick-dialog-footer>
|
|
122
|
+
</slick-dialog>`,
|
|
123
|
+
providers: [
|
|
124
|
+
{
|
|
125
|
+
provide: NG_VALUE_ACCESSOR,
|
|
126
|
+
useExisting: forwardRef((() => SlickEmailerDialogComponent)),
|
|
127
|
+
multi: true,
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}]
|
|
131
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { toEmailAddressList: [{
|
|
132
|
+
type: Input,
|
|
133
|
+
args: ["toEmailAddressList"]
|
|
134
|
+
}], bodyHeight: [{
|
|
135
|
+
type: Input,
|
|
136
|
+
args: ["bodyHeight"]
|
|
137
|
+
}], toAddressSearchEmitter: [{
|
|
138
|
+
type: Output,
|
|
139
|
+
args: ["toAddressSearch"]
|
|
140
|
+
}], sendEmailClickEmitter: [{
|
|
141
|
+
type: Output,
|
|
142
|
+
args: ["sendEmailClick"]
|
|
143
|
+
}], cancelEmailClickEmitter: [{
|
|
144
|
+
type: Output,
|
|
145
|
+
args: ["cancelEmailClick"]
|
|
146
|
+
}], emailerDialogRef: [{
|
|
147
|
+
type: ViewChild,
|
|
148
|
+
args: ["emailerDialogRef"]
|
|
149
|
+
}], emailerRef: [{
|
|
150
|
+
type: ViewChild,
|
|
151
|
+
args: ["emailerRef"]
|
|
152
|
+
}] } });
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZW1haWxlci9zbGljay1lbWFpbGVyLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1uRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7QUFnQ2pFLE1BQU0sT0FBTywyQkFBMkI7SUFldkMsWUFBb0IsY0FBaUM7UUFBakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBYmhDLGVBQVUsR0FBVyxPQUFPLENBQUM7UUFDdkIsMkJBQXNCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkUsMEJBQXFCLEdBQXFDLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0UsNEJBQXVCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFPbkcsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUlsQixvQkFBZSxHQUFHLENBQUMsQ0FBcUIsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRlEsQ0FBQztJQUkxRCxpREFBaUQ7SUFDMUMsVUFBVSxDQUFDLEdBQXVCO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsbURBQW1EO0lBQzVDLGdCQUFnQixDQUFDLEVBQU87UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGlDQUFpQztJ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NEIsRUFBQzs0QkFDMUQsS0FBSyxFQUFFLElBQUk7eUJBQ1g7cUJBQUM7aUJBQ0g7d0dBRTZCLGtCQUFrQjtzQkFBOUMsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBQ04sVUFBVTtzQkFBOUIsS0FBSzt1QkFBQyxZQUFZO2dCQUNRLHNCQUFzQjtzQkFBaEQsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBQ0MscUJBQXFCO3NCQUE5QyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFDSSx1QkFBdUI7c0JBQWxELE1BQU07dUJBQUMsa0JBQWtCO2dCQUVLLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0osVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuLi9zbGljay1kaWFsb2cvc2xpY2stZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBTbGlja0VtYWlsZXJDb21wb25lbnQgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBJU2xpY2tGaWxlTW9kZWwgfSBmcm9tIFwiLi4vc2xpY2stZmlsZS1tb2RlbC9zbGljay1maWxlLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0VtYWlsZXJNb2RlbCwgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLWFkZHJlc3MubW9kZWxcIjtcclxuaW1wb3J0IHsgU2xpY2tTbGVlcFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stc2xlZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcblxyXG5kZWNsYXJlIGNvbnN0IHRpbnltY2U6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stZW1haWxlci1kaWFsb2cnLFxyXG5cdHRlbXBsYXRlOlxyXG5cdGA8c2xpY2stZGlhbG9nICpuZ0lmPSdpc1Zpc2libGUnIGhlYWRlcj0nU2VuZCBFbWFpbCcgW3dpZHRoXT0nODAwJyAob25DbG9zZSk9J29uQ2FuY2VsRW1haWwoKScgI2VtYWlsZXJEaWFsb2dSZWY+XHJcblx0XHQ8c2xpY2stZW1haWxlciAjZW1haWxlclJlZiBbKG5nTW9kZWwpXT0nZGlhbG9nRW1haWxlck1vZGVsJ1xyXG5cdFx0XHRcdFx0W2JvZHlIZWlnaHRdPSdib2R5SGVpZ2h0J1xyXG5cdFx0XHRcdFx0W3Nob3dCdXR0b25zXT0nZmFsc2UnXHJcblx0XHRcdFx0XHRbdG9FbWFpbEFkZHJlc3NMaXN0XT0ndG9FbWFpbEFkZHJlc3NMaXN0JyBcclxuXHRcdFx0ICAgICAgICAodG9BZGRyZXNzU2VhcmNoKT0ndG9BZGRyZXNzU2VhcmNoKCRldmVudCknPlxyXG5cdFx0PC9zbGljay1lbWFpbGVyPlxyXG5cclxuXHRcdDxzbGljay1kaWFsb2ctZm9vdGVyPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWNlbnRlciBtYi0yIG10LTFcIj5cclxuXHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwid2lkdGg6IDEyMHB4OyBtYXJnaW4tcmlnaHQ6IDEwcHg7XCIgW3NsaWNrLWJ1dHRvbi1zcGlubmVyXT1cInNwaW5uZXJTdGF0dXNcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2VuZEVtYWlsKClcIj48aSBjbGFzcz1cImZhciBmYS1lbnZlbG9wZVwiPjwvaT4mbmJzcDtTZW5kPC9idXR0b24+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIndpZHRoOiAxMjBweDtcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXJcIiAoY2xpY2spPVwib25DYW5jZWxFbWFpbCgpXCI+PGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+Jm5ic3A7Q2FuY2VsPC9idXR0b24+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9zbGljay1kaWFsb2ctZm9vdGVyPlxyXG5cdDwvc2xpY2stZGlhbG9nPmAsXHJcblx0cHJvdmlkZXJzOiBbXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja0VtYWlsZXJEaWFsb2dDb21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0VtYWlsZXJEaWFsb2dDb21wb25lbnQge1xyXG5cdEBJbnB1dChcInRvRW1haWxBZGRyZXNzTGlzdFwiKSB0b0VtYWlsQWRkcmVzc0xpc3Q6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWxbXTtcclxuXHRASW5wdXQoXCJib2R5SGVpZ2h0XCIpIGJvZHlIZWlnaHQ6IHN0cmluZyA9IFwiMTgwcHhcIjtcclxuXHRAT3V0cHV0KFwidG9BZGRyZXNzU2VhcmNoXCIpIHRvQWRkcmVzc1NlYXJjaEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoXCJzZW5kRW1haWxDbGlja1wiKSBzZW5kRW1haWxDbGlja0VtaXR0ZXI6IEV2ZW50RW1pdHRlcjxJU2xpY2tFbWFpbGVyTW9kZWw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cdEBPdXRwdXQoXCJjYW5jZWxFbWFpbENsaWNrXCIpIGNhbmNlbEVtYWlsQ2xpY2tFbWl0dGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJlbWFpbGVyRGlhbG9nUmVmXCIpIGVtYWlsZXJEaWFsb2dSZWY6IFNsaWNrRGlhbG9nQ29tcG9uZW50O1xyXG5cdEBWaWV3Q2hpbGQoXCJlbWFpbGVyUmVmXCIpIGVtYWlsZXJSZWY6IFNsaWNrRW1haWxlckNvbXBvbmVudDtcclxuXHJcblx0ZGlhbG9nRW1haWxlck1vZGVsOiBJU2xpY2tFbWFpbGVyTW9kZWw7XHJcblx0ZW1haWxlck1vZGVsOiBJU2xpY2tFbWFpbGVyTW9kZWw7XHJcblx0c3Bpbm5lclN0YXR1czogc3RyaW5nID0gbnVsbDtcclxuXHRpc1Zpc2libGUgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuXHRwcm9wYWdhdGVDaGFuZ2UgPSAoXzogSVNsaWNrRW1haWxlck1vZGVsKSA9PiB7IH07XHJcblxyXG5cdC8vIHRoaXMgaXMgdGhlIGluaXRpYWwgdmFsdWUgc2V0IHRvIHRoZSBjb21wb25lbnRcclxuXHRwdWJsaWMgd3JpdGVWYWx1ZShvYmo6IElTbGlja0VtYWlsZXJNb2RlbCkge1xyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwgPSBvYmo7XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHRhc3luYyBzaG93RGlhbG9nKCkge1xyXG5cdFx0dGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0dGhpcy5kaWFsb2dFbWFpbGVyTW9kZWwgPSB0aGlzLmVtYWlsZXJNb2RlbDtcclxuXHRcdHRoaXMuZW1haWxlclJlZi5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xyXG5cdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJyZXNldFwiO1xyXG5cdFx0dGhpcy5lbWFpbGVyUmVmLmRpYWxvZ0luaXQoKTtcclxuXHRcdHRoaXMuZW1haWxlckRpYWxvZ1JlZi5zaG93RGlhbG9nKCk7XHJcblx0fVxyXG5cclxuXHR0b0FkZHJlc3NTZWFyY2goc2VhcmNoVGV4dCkge1xyXG5cdFx0dGhpcy50b0FkZHJlc3NTZWFyY2hFbWl0dGVyLmVtaXQoc2VhcmNoVGV4dCk7XHJcblx0fVxyXG5cclxuXHRvblNlbmRFbWFpbCgpIHtcclxuXHRcdHRoaXMuZGlhbG9nRW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMgPSB0aGlzLmVtYWlsZXJSZWYuZ2V0RW1haWxBZGRyZXNzZXModGhpcy5kaWFsb2dFbWFpbGVyTW9kZWwpO1xyXG5cdFx0aWYgKHRoaXMuZW1haWxlclJlZi52YWxpZGF0ZSgpID09PSBmYWxzZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuZGlhbG9nRW1haWxlck1vZGVsLmJvZHkgPSB0aGlzLmVtYWlsZXJSZWYuZ2V0Qm9keSgpO1xyXG5cdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJzcGluXCI7XHJcblxyXG5cdFx0aWYgKHRoaXMuc2VuZEVtYWlsQ2xpY2tFbWl0dGVyKVxyXG5cdFx0XHR0aGlzLnNlbmRFbWFpbENsaWNrRW1pdHRlci5lbWl0KHRoaXMuZGlhbG9nRW1haWxlck1vZGVsKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGVtYWlsU2VudCgpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwib2tcIjtcclxuXHRcdFx0dGhpcy5lbWFpbGVyUmVmLmVtYWlsU2VudCgpO1xyXG5cdFx0XHR0aGlzLmVtYWlsZXJEaWFsb2dSZWYuaGlkZURpYWxvZygpO1xyXG5cdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCg1MDApO1xyXG5cdFx0XHR0aGlzLmVtYWlsZXJSZWYucmVtb3ZlVGlueU1DRSgpO1xyXG5cdFx0fVxyXG5cdFx0Y2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG5cdFx0XHR0aGlzLnNwaW5uZXJTdGF0dXMgPSBcImVycm9yXCI7XHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0ZW1haWxFcnJvcigpIHtcclxuXHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwiZXJyb3JcIjtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uQ2FuY2VsRW1haWwoKSB7XHJcblx0XHR0aGlzLnNwaW5uZXJTdGF0dXMgPSBcInJlc2V0XCI7XHJcblx0XHR0aGlzLmVtYWlsZXJSZWYucmVtb3ZlVGlueU1DRSgpO1xyXG5cdFx0dGhpcy5lbWFpbGVyRGlhbG9nUmVmLmhpZGVEaWFsb2coKTtcclxuXHRcdGlmICh0aGlzLmNhbmNlbEVtYWlsQ2xpY2tFbWl0dGVyKVxyXG5cdFx0XHR0aGlzLmNhbmNlbEVtYWlsQ2xpY2tFbWl0dGVyLmVtaXQoKTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, forwardRef, ViewChild } from "@angular/core";
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from "@angular/forms";
|
|
3
|
+
import { SlickUtilsService } from "../utils/slick-utils.service";
|
|
4
|
+
import { SlickFunctionLockService } from "../utils/slick-function-lock.service";
|
|
5
|
+
import { SlickEmailerAddressModel } from "./slick-emailer-address.model";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../utils/slick-function-lock.service";
|
|
8
|
+
import * as i2 from "../slick-auto-complete/slick-auto-complete.component";
|
|
9
|
+
import * as i3 from "../slick-file-drop/slick-file-drop.component";
|
|
10
|
+
import * as i4 from "../slick-file-list/slick-file-list.component";
|
|
11
|
+
import * as i5 from "../slick-button-spinner/slick-button-spinner.component";
|
|
12
|
+
import * as i6 from "@angular/common";
|
|
13
|
+
import * as i7 from "@angular/forms";
|
|
14
|
+
import * as i8 from "../slick-auto-complete/slick-auto-complete-list-item-template.directive";
|
|
15
|
+
export class SlickEmailerComponent {
|
|
16
|
+
constructor(slickFunctionLockService, changeDetector) {
|
|
17
|
+
this.slickFunctionLockService = slickFunctionLockService;
|
|
18
|
+
this.changeDetector = changeDetector;
|
|
19
|
+
this.showButtons = true;
|
|
20
|
+
this.bodyHeight = "180px";
|
|
21
|
+
this.toAddressSearchEmitter = new EventEmitter();
|
|
22
|
+
this.sendEmailClickEmitter = new EventEmitter();
|
|
23
|
+
this.cancelEmailClickEmitter = new EventEmitter();
|
|
24
|
+
this.isSubmitted = false;
|
|
25
|
+
this.tinyMCEInitialized = false;
|
|
26
|
+
this.spinnerStatus = null;
|
|
27
|
+
this.propagateChange = (_) => { };
|
|
28
|
+
this.uuid = SlickUtilsService.newGuid();
|
|
29
|
+
}
|
|
30
|
+
async ngAfterViewInit() {
|
|
31
|
+
await this.initTinyMCE();
|
|
32
|
+
const body = (this.emailerModel) ? (this.emailerModel.body || '') : '';
|
|
33
|
+
tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() {
|
|
36
|
+
this.removeTinyMCE();
|
|
37
|
+
}
|
|
38
|
+
// this is the initial value set to the component
|
|
39
|
+
async writeValue(obj) {
|
|
40
|
+
if (obj) {
|
|
41
|
+
this.spinnerStatus = "reset";
|
|
42
|
+
this.emailerModel = obj;
|
|
43
|
+
if (!this.emailerModel.attachments)
|
|
44
|
+
this.emailerModel.attachments = [];
|
|
45
|
+
if (!this.emailerModel.toEmailAddresses)
|
|
46
|
+
this.emailerModel.toEmailAddresses = [];
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.emailerModel = null;
|
|
50
|
+
}
|
|
51
|
+
await this.initTinyMCE();
|
|
52
|
+
const body = (this.emailerModel) ? (this.emailerModel.body || '') : '';
|
|
53
|
+
tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);
|
|
54
|
+
}
|
|
55
|
+
// registers 'fn' that will be fired when changes are made
|
|
56
|
+
// this is how we emit the changes back to the form
|
|
57
|
+
registerOnChange(fn) {
|
|
58
|
+
this.propagateChange = fn;
|
|
59
|
+
}
|
|
60
|
+
// not used, used for touch input
|
|
61
|
+
registerOnTouched() { }
|
|
62
|
+
toAddressSearch(searchText) {
|
|
63
|
+
this.toAddressSearchEmitter.emit(searchText);
|
|
64
|
+
}
|
|
65
|
+
onSelectEmailAddress(emailerAddressModel) {
|
|
66
|
+
this.emailerModel.toEmailAddresses.push(emailerAddressModel);
|
|
67
|
+
this.toEmailAddress = null;
|
|
68
|
+
}
|
|
69
|
+
onFreeformTextSelect(text) {
|
|
70
|
+
const freeformEmailAddress = new SlickEmailerAddressModel();
|
|
71
|
+
freeformEmailAddress.displayName = text;
|
|
72
|
+
freeformEmailAddress.emailAddress = text;
|
|
73
|
+
this.emailerModel.toEmailAddresses.push(freeformEmailAddress);
|
|
74
|
+
this.toEmailAddress = null;
|
|
75
|
+
}
|
|
76
|
+
deleteEmailAddress(idx) {
|
|
77
|
+
this.emailerModel.toEmailAddresses.splice(idx, 1);
|
|
78
|
+
}
|
|
79
|
+
onAttachmentsChanged(attachments) {
|
|
80
|
+
this.emailerModel.attachments = this.emailerModel.attachments.concat(attachments);
|
|
81
|
+
}
|
|
82
|
+
validate() {
|
|
83
|
+
this.isSubmitted = true;
|
|
84
|
+
if (this.emailerModel.toEmailAddresses.length === 0)
|
|
85
|
+
return false;
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
getEmailAddresses(emailerModel) {
|
|
89
|
+
let slickEmailerAddresses = emailerModel.toEmailAddresses || [];
|
|
90
|
+
if (this.toEmailAddress) {
|
|
91
|
+
const scrubbedToEmailAddress = this.toEmailAddress.replace(",", ";").replace(/\s/g, ";");
|
|
92
|
+
const emailAddressesToAddStrings = scrubbedToEmailAddress.split(";").filter(x => x !== '');
|
|
93
|
+
const emailAddressesToAdd = emailAddressesToAddStrings.map(x => {
|
|
94
|
+
const slickEmailerAddressModel = new SlickEmailerAddressModel();
|
|
95
|
+
slickEmailerAddressModel.contactId = 0;
|
|
96
|
+
slickEmailerAddressModel.displayName = x;
|
|
97
|
+
slickEmailerAddressModel.emailAddress = x;
|
|
98
|
+
return slickEmailerAddressModel;
|
|
99
|
+
});
|
|
100
|
+
slickEmailerAddresses = slickEmailerAddresses.concat(emailAddressesToAdd);
|
|
101
|
+
}
|
|
102
|
+
this.toEmailAddress = null;
|
|
103
|
+
return slickEmailerAddresses;
|
|
104
|
+
}
|
|
105
|
+
async setBody(body) {
|
|
106
|
+
try {
|
|
107
|
+
await this.slickFunctionLockService.lock("SLICK_EMAILER_SET_BODY");
|
|
108
|
+
await this.initTinyMCE();
|
|
109
|
+
const tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);
|
|
110
|
+
if (!tinyMCE)
|
|
111
|
+
console.error("tinyMCE not initialized");
|
|
112
|
+
tinyMCE.setContent(body);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
this.slickFunctionLockService.release("SLICK_EMAILER_SET_BODY");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
getBody() {
|
|
119
|
+
return tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).getContent();
|
|
120
|
+
}
|
|
121
|
+
onSendEmail() {
|
|
122
|
+
this.emailerModel.toEmailAddresses = this.getEmailAddresses(this.emailerModel);
|
|
123
|
+
if (this.validate() === false)
|
|
124
|
+
return;
|
|
125
|
+
this.emailerModel.body = this.getBody();
|
|
126
|
+
this.spinnerStatus = "spin";
|
|
127
|
+
if (this.sendEmailClickEmitter)
|
|
128
|
+
this.sendEmailClickEmitter.emit(this.emailerModel);
|
|
129
|
+
}
|
|
130
|
+
emailSent() {
|
|
131
|
+
this.spinnerStatus = "ok";
|
|
132
|
+
}
|
|
133
|
+
emailError() {
|
|
134
|
+
this.spinnerStatus = "error";
|
|
135
|
+
}
|
|
136
|
+
onCancelEmail() {
|
|
137
|
+
if (this.cancelEmailClickEmitter)
|
|
138
|
+
this.cancelEmailClickEmitter.emit();
|
|
139
|
+
}
|
|
140
|
+
async dialogInit() {
|
|
141
|
+
this.removeTinyMCE();
|
|
142
|
+
await this.initTinyMCE();
|
|
143
|
+
const body = (this.emailerModel) ? (this.emailerModel.body || '') : '';
|
|
144
|
+
tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`).setContent(body);
|
|
145
|
+
}
|
|
146
|
+
async initTinyMCE() {
|
|
147
|
+
return new Promise(async (resolve) => {
|
|
148
|
+
await this.slickFunctionLockService.lock("SLICK_EMAILER_INIT_TINY_MCE");
|
|
149
|
+
if (this.tinyMCEUuid) {
|
|
150
|
+
this.slickFunctionLockService.release("SLICK_EMAILER_INIT_TINY_MCE");
|
|
151
|
+
resolve();
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.tinyMCEUuid = SlickUtilsService.newGuid();
|
|
155
|
+
const tinyMCEContainer = this.tinyMCEContainerRef.nativeElement;
|
|
156
|
+
const tinyMCETextarea = document.createElement("textarea");
|
|
157
|
+
tinyMCETextarea.id = `emailer_tinymce_${this.tinyMCEUuid}`;
|
|
158
|
+
tinyMCETextarea.style.minHeight = "300px";
|
|
159
|
+
tinyMCETextarea.style.maxHeight = "300px";
|
|
160
|
+
tinyMCEContainer.appendChild(tinyMCETextarea);
|
|
161
|
+
tinymce.init({
|
|
162
|
+
selector: `#emailer_tinymce_${this.tinyMCEUuid}`,
|
|
163
|
+
branding: false,
|
|
164
|
+
menubar: 'edit insert format tools',
|
|
165
|
+
plugins: 'link image imagetools code',
|
|
166
|
+
toolbar: 'fontselect | fontsizeselect | styleselect | bold italic underline | indent outdent | bullist | alignleft aligncenter alignright | code | image',
|
|
167
|
+
fontsize_formats: "8px 10px 12px 14px 18px 24px 36px",
|
|
168
|
+
height: this.bodyHeight,
|
|
169
|
+
convert_urls: false,
|
|
170
|
+
setup: (ed) => {
|
|
171
|
+
ed.on('init', (args) => {
|
|
172
|
+
ed.setContent((this.emailerModel) ? (this.emailerModel.body || '') : '');
|
|
173
|
+
this.tinyMCEInitialized = true;
|
|
174
|
+
this.slickFunctionLockService.release("SLICK_EMAILER_INIT_TINY_MCE");
|
|
175
|
+
resolve();
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async removeTinyMCE() {
|
|
183
|
+
if (this.tinyMCEUuid) {
|
|
184
|
+
const tinyMCE = tinymce.get(`emailer_tinymce_${this.tinyMCEUuid}`);
|
|
185
|
+
if (tinyMCE)
|
|
186
|
+
tinyMCE.remove();
|
|
187
|
+
const tinyMCEContainer = this.tinyMCEContainerRef.nativeElement;
|
|
188
|
+
tinyMCEContainer.innerHTML = "";
|
|
189
|
+
this.tinyMCEInitialized = false;
|
|
190
|
+
this.tinyMCEUuid = null;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/** @nocollapse */ SlickEmailerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerComponent, deps: [{ token: i1.SlickFunctionLockService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
+
/** @nocollapse */ SlickEmailerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SlickEmailerComponent, selector: "slick-emailer", inputs: { toEmailAddressList: "toEmailAddressList", showButtons: "showButtons", bodyHeight: "bodyHeight" }, outputs: { toAddressSearchEmitter: "toAddressSearch", sendEmailClickEmitter: "sendEmailClick", cancelEmailClickEmitter: "cancelEmailClick" }, providers: [
|
|
196
|
+
{
|
|
197
|
+
provide: NG_VALUE_ACCESSOR,
|
|
198
|
+
useExisting: forwardRef((() => SlickEmailerComponent)),
|
|
199
|
+
multi: true,
|
|
200
|
+
},
|
|
201
|
+
SlickFunctionLockService
|
|
202
|
+
], viewQueries: [{ propertyName: "tinyMCEContainerRef", first: true, predicate: ["tinyMCEContainerRef"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"emailerModel\" id=\"slick-emailer_{{uuid}}\" class=\"slick-emailer\">\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div *ngIf=\"isSubmitted === true && emailerModel.toEmailAddresses.length === 0\" class=\"errorWrapper showIcons\"><div class=\"text-danger\">Email must have at least one email address</div></div>\r\n\t\t\t<div class=\"input-group\">\r\n\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t<span class=\"input-group-text\"><span class=\"fas fa-search\"></span></span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<input class=\"form-control\" #emailAddressAutocomplete [(ngModel)]=\"toEmailAddress\" placeholder=\"Email Search...\" autofocus />\r\n\t\t\t</div>\r\n\t\t\t<slick-auto-complete [inputRef]=\"emailAddressAutocomplete\" textField=\"emailDisplay\" [items]=\"toEmailAddressList\" (onRefresh)=\"toAddressSearch($event)\" (onSelect)=\"onSelectEmailAddress($event)\" (onFreeformTextSelect)=\"onFreeformTextSelect($event)\">\r\n\t\t\t\t<ng-template let-emailDisplay [slickAutoCompleteListItemTemplate]>\r\n\t\t\t\t\t<div style='line-height: 1.1em; font-size: 12px;'>\r\n\t\t\t\t\t\t{{emailDisplay.displayName}} [{{emailDisplay.emailAddress}}]\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</slick-auto-complete>\r\n\r\n\t\t\t<label>To: </label>\r\n\t\t\t<div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-emailer_email-address alert alert-secondary\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]<i (click)=\"deleteEmailAddress(idx)\" class=\"fas fa-times-circle bg-white text-danger ml-1\"></i></div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Subject:</label>\r\n\t\t\t<input type=\"text\" class=\"form-control\" [(ngModel)]=\"emailerModel.subject\" />\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Body:</label>\r\n\t\t\t<div #tinyMCEContainerRef></div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Attachments:</label>\r\n\t\t\t<slick-file-drop (filesChanged)=\"onAttachmentsChanged($event)\"></slick-file-drop>\r\n\t\t\t<slick-file-list [(files)]=\"emailerModel.attachments\"></slick-file-list>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"showButtons\" class=\"row form-group\">\r\n\t\t<div class=\"col-12 text-center\">\r\n\t\t\t<button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n\t\t\t<button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", components: [{ type: i2.SlickAutoCompleteComponent, selector: "slick-auto-complete", inputs: ["inputRef", "items", "delay", "selectFirst", "displayTextFieldName", "listHeight", "listWidth", "allowFreeformText", "showNoItemsFoundDisplay"], outputs: ["onRefresh", "onSelect", "onFreeformTextSelect"] }, { type: i3.SlickFileDropComponent, selector: "slick-file-drop", inputs: ["displayText"], outputs: ["filesChanged"] }, { type: i4.SlickFileListComponent, selector: "slick-file-list", inputs: ["files", "allowDelete", "showPhotoGallery", "showCheckboxes", "thumbnailSize", "confirmDelete"], outputs: ["filesEmitter", "onFileDelete", "onFileCheckChanged", "onFileClicked"] }, { type: i5.SlickButtonSpinnerComponent, selector: "[slick-button-spinner]", inputs: ["slick-button-spinner"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i8.SlickAutoCompleteListItemTemplateDirective, selector: "[slickAutoCompleteListItemTemplate]", inputs: ["type", "slickAutoCompleteListItemTemplate"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerComponent, decorators: [{
|
|
204
|
+
type: Component,
|
|
205
|
+
args: [{ selector: 'slick-emailer', providers: [
|
|
206
|
+
{
|
|
207
|
+
provide: NG_VALUE_ACCESSOR,
|
|
208
|
+
useExisting: forwardRef((() => SlickEmailerComponent)),
|
|
209
|
+
multi: true,
|
|
210
|
+
},
|
|
211
|
+
SlickFunctionLockService
|
|
212
|
+
], template: "<div *ngIf=\"emailerModel\" id=\"slick-emailer_{{uuid}}\" class=\"slick-emailer\">\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div *ngIf=\"isSubmitted === true && emailerModel.toEmailAddresses.length === 0\" class=\"errorWrapper showIcons\"><div class=\"text-danger\">Email must have at least one email address</div></div>\r\n\t\t\t<div class=\"input-group\">\r\n\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t<span class=\"input-group-text\"><span class=\"fas fa-search\"></span></span>\r\n\t\t\t\t</div>\r\n\t\t\t\t<input class=\"form-control\" #emailAddressAutocomplete [(ngModel)]=\"toEmailAddress\" placeholder=\"Email Search...\" autofocus />\r\n\t\t\t</div>\r\n\t\t\t<slick-auto-complete [inputRef]=\"emailAddressAutocomplete\" textField=\"emailDisplay\" [items]=\"toEmailAddressList\" (onRefresh)=\"toAddressSearch($event)\" (onSelect)=\"onSelectEmailAddress($event)\" (onFreeformTextSelect)=\"onFreeformTextSelect($event)\">\r\n\t\t\t\t<ng-template let-emailDisplay [slickAutoCompleteListItemTemplate]>\r\n\t\t\t\t\t<div style='line-height: 1.1em; font-size: 12px;'>\r\n\t\t\t\t\t\t{{emailDisplay.displayName}} [{{emailDisplay.emailAddress}}]\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</slick-auto-complete>\r\n\r\n\t\t\t<label>To: </label>\r\n\t\t\t<div *ngFor=\"let emailAddress of emailerModel.toEmailAddresses; let idx = index;\" class=\"slick-emailer_email-address alert alert-secondary\">{{emailAddress.displayName}} [{{emailAddress.emailAddress}}]<i (click)=\"deleteEmailAddress(idx)\" class=\"fas fa-times-circle bg-white text-danger ml-1\"></i></div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Subject:</label>\r\n\t\t\t<input type=\"text\" class=\"form-control\" [(ngModel)]=\"emailerModel.subject\" />\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Body:</label>\r\n\t\t\t<div #tinyMCEContainerRef></div>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row form-group\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<label>Attachments:</label>\r\n\t\t\t<slick-file-drop (filesChanged)=\"onAttachmentsChanged($event)\"></slick-file-drop>\r\n\t\t\t<slick-file-list [(files)]=\"emailerModel.attachments\"></slick-file-list>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div *ngIf=\"showButtons\" class=\"row form-group\">\r\n\t\t<div class=\"col-12 text-center\">\r\n\t\t\t<button type=\"button\" style=\"width: 120px; margin-right: 10px;\" [slick-button-spinner]=\"spinnerStatus\" class=\"btn btn-outline-primary\" (click)=\"onSendEmail()\"><i class=\"far fa-envelope\"></i> Send</button>\r\n\t\t\t<button type=\"button\" style=\"width: 120px;\" class=\"btn btn-outline-danger\" (click)=\"onCancelEmail()\"><i class=\"far fa-times\"></i> Cancel</button>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n" }]
|
|
213
|
+
}], ctorParameters: function () { return [{ type: i1.SlickFunctionLockService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { toEmailAddressList: [{
|
|
214
|
+
type: Input,
|
|
215
|
+
args: ["toEmailAddressList"]
|
|
216
|
+
}], showButtons: [{
|
|
217
|
+
type: Input,
|
|
218
|
+
args: ["showButtons"]
|
|
219
|
+
}], bodyHeight: [{
|
|
220
|
+
type: Input,
|
|
221
|
+
args: ["bodyHeight"]
|
|
222
|
+
}], toAddressSearchEmitter: [{
|
|
223
|
+
type: Output,
|
|
224
|
+
args: ["toAddressSearch"]
|
|
225
|
+
}], sendEmailClickEmitter: [{
|
|
226
|
+
type: Output,
|
|
227
|
+
args: ["sendEmailClick"]
|
|
228
|
+
}], cancelEmailClickEmitter: [{
|
|
229
|
+
type: Output,
|
|
230
|
+
args: ["cancelEmailClick"]
|
|
231
|
+
}], tinyMCEContainerRef: [{
|
|
232
|
+
type: ViewChild,
|
|
233
|
+
args: ["tinyMCEContainerRef"]
|
|
234
|
+
}] } });
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1lbWFpbGVyL3NsaWNrLWVtYWlsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZW1haWxlci9zbGljay1lbWFpbGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUErQyxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEYsT0FBTyxFQUE2Qix3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBZ0JwRyxNQUFNLE9BQU8scUJBQXFCO0lBb0JqQyxZQUFvQix3QkFBa0QsRUFBVSxjQUFpQztRQUE3Riw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBbEIzRixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM3QixlQUFVLEdBQVcsT0FBTyxDQUFDO1FBQ3ZCLDJCQUFzQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25FLDBCQUFxQixHQUFxQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNFLDRCQUF1QixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBS25HLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSTdCLHVCQUFrQixHQUFZLEtBQUssQ0FBQztRQUdwQyxrQkFBYSxHQUFXLElB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QUFzQjtzQkFBaEQsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBQ0MscUJBQXFCO3NCQUE5QyxNQUFNO3VCQUFDLGdCQUFnQjtnQkFDSSx1QkFBdUI7c0JBQWxELE1BQU07dUJBQUMsa0JBQWtCO2dCQUVRLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2xpY2tTbGVlcFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stc2xlZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1mdW5jdGlvbi1sb2NrLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSVNsaWNrRmlsZU1vZGVsIH0gZnJvbSBcIi4uL3NsaWNrLWZpbGUtbW9kZWwvc2xpY2stZmlsZS5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJU2xpY2tFbWFpbGVyTW9kZWwsIH0gZnJvbSBcIi4vc2xpY2stZW1haWxlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsLCBTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLWFkZHJlc3MubW9kZWxcIjtcclxuXHJcbmRlY2xhcmUgY29uc3QgdGlueW1jZTogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdzbGljay1lbWFpbGVyJyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLWVtYWlsZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpY2tFbWFpbGVyQ29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0U2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlXHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tFbWFpbGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHRASW5wdXQoXCJ0b0VtYWlsQWRkcmVzc0xpc3RcIikgdG9FbWFpbEFkZHJlc3NMaXN0OiBJU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsW107XHJcblx0QElucHV0KFwic2hvd0J1dHRvbnNcIikgc2hvd0J1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cdEBJbnB1dChcImJvZHlIZWlnaHRcIikgYm9keUhlaWdodDogc3RyaW5nID0gXCIxODBweFwiO1xyXG5cdEBPdXRwdXQoXCJ0b0FkZHJlc3NTZWFyY2hcIikgdG9BZGRyZXNzU2VhcmNoRW1pdHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dChcInNlbmRFbWFpbENsaWNrXCIpIHNlbmRFbWFpbENsaWNrRW1pdHRlcjogRXZlbnRFbWl0dGVyPElTbGlja0VtYWlsZXJNb2RlbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblx0QE91dHB1dChcImNhbmNlbEVtYWlsQ2xpY2tcIikgY2FuY2VsRW1haWxDbGlja0VtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcInRpbnlNQ0VDb250YWluZXJSZWZcIikgdGlueU1DRUNvbnRhaW5lclJlZjogRWxlbWVudFJlZjtcclxuXHJcblx0ZW1haWxlck1vZGVsOiBJU2xpY2tFbWFpbGVyTW9kZWw7XHJcblx0aXNTdWJtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHRpbnlNQ0VVdWlkOiBzdHJpbmc7XHJcblx0dGlueU1DRUluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0dG9FbWFpbEFkZHJlc3M6IHN0cmluZztcclxuXHRlZGl0b3I6IGFueTtcclxuXHRzcGlubmVyU3RhdHVzOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZTogU2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLCBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdGF3YWl0IHRoaXMuaW5pdFRpbnlNQ0UoKTtcclxuXHRcdGNvbnN0IGJvZHkgPSAodGhpcy5lbWFpbGVyTW9kZWwpID8gKHRoaXMuZW1haWxlck1vZGVsLmJvZHkgfHwgJycpIDogJyc7XHJcblx0XHR0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKS5zZXRDb250ZW50KGJvZHkpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnJlbW92ZVRpbnlNQ0UoKTtcclxuXHR9XHJcblxyXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcblx0Ly8gdGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxyXG5cdHB1YmxpYyBhc3luYyB3cml0ZVZhbHVlKG9iajogSVNsaWNrRW1haWxlck1vZGVsKSB7XHJcblx0XHRpZiAob2JqKSB7XHJcblx0XHRcdHRoaXMuc3Bpbm5lclN0YXR1cyA9IFwicmVzZXRcIjtcclxuXHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwgPSBvYmo7XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzKVxyXG5cdFx0XHRcdHRoaXMuZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzID0gW107XHJcblxyXG5cdFx0XHRpZiAoIXRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMpXHJcblx0XHRcdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3NlcyA9IFtdO1x0XHRcdFxyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMuZW1haWxlck1vZGVsID0gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHRhd2FpdCB0aGlzLmluaXRUaW55TUNFKCk7XHJcblx0XHRjb25zdCBib2R5ID0gKHRoaXMuZW1haWxlck1vZGVsKSA/ICh0aGlzLmVtYWlsZXJNb2RlbC5ib2R5IHx8ICcnKSA6ICcnO1xyXG5cdFx0dGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCkuc2V0Q29udGVudChib2R5KTtcclxuXHR9XHJcblxyXG5cdC8vIHJlZ2lzdGVycyAnZm4nIHRoYXQgd2lsbCBiZSBmaXJlZCB3aGVuIGNoYW5nZXMgYXJlIG1hZGVcclxuXHQvLyB0aGlzIGlzIGhvdyB3ZSBlbWl0IHRoZSBjaGFuZ2VzIGJhY2sgdG8gdGhlIGZvcm1cclxuXHRwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xyXG5cdH1cclxuXHJcblx0Ly8gbm90IHVzZWQsIHVzZWQgZm9yIHRvdWNoIGlucHV0XHJcblx0cHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKCkgeyB9XHJcblxyXG5cdHRvQWRkcmVzc1NlYXJjaChzZWFyY2hUZXh0KSB7XHJcblx0XHR0aGlzLnRvQWRkcmVzc1NlYXJjaEVtaXR0ZXIuZW1pdChzZWFyY2hUZXh0KTtcclxuXHR9XHJcblxyXG5cdG9uU2VsZWN0RW1haWxBZGRyZXNzKGVtYWlsZXJBZGRyZXNzTW9kZWw6IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwpIHtcclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMucHVzaChlbWFpbGVyQWRkcmVzc01vZGVsKTtcclxuXHJcblx0XHR0aGlzLnRvRW1haWxBZGRyZXNzID0gbnVsbDtcclxuXHR9XHJcblxyXG5cdG9uRnJlZWZvcm1UZXh0U2VsZWN0KHRleHQ6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgZnJlZWZvcm1FbWFpbEFkZHJlc3MgPSBuZXcgU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsKCk7XHJcblx0XHRmcmVlZm9ybUVtYWlsQWRkcmVzcy5kaXNwbGF5TmFtZSA9IHRleHQ7XHJcblx0XHRmcmVlZm9ybUVtYWlsQWRkcmVzcy5lbWFpbEFkZHJlc3MgPSB0ZXh0O1xyXG5cclxuXHRcdHRoaXMuZW1haWxlck1vZGVsLnRvRW1haWxBZGRyZXNzZXMucHVzaChmcmVlZm9ybUVtYWlsQWRkcmVzcyk7XHJcblx0XHR0aGlzLnRvRW1haWxBZGRyZXNzID0gbnVsbDtcclxuXHR9XHJcblxyXG5cdGRlbGV0ZUVtYWlsQWRkcmVzcyhpZHg6IG51bWJlcikge1xyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwudG9FbWFpbEFkZHJlc3Nlcy5zcGxpY2UoaWR4LCAxKTtcclxuXHR9XHJcblxyXG5cdG9uQXR0YWNobWVudHNDaGFuZ2VkKGF0dGFjaG1lbnRzOiBJU2xpY2tGaWxlTW9kZWxbXSkge1xyXG5cdFx0dGhpcy5lbWFpbGVyTW9kZWwuYXR0YWNobWVudHMgPSB0aGlzLmVtYWlsZXJNb2RlbC5hdHRhY2htZW50cy5jb25jYXQoYXR0YWNobWVudHMpO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGUoKSB7XHJcblx0XHR0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcclxuXHRcdGlmICh0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzLmxlbmd0aCA9PT0gMClcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdHJldHVybiB0cnVlO1xyXG5cdH1cclxuXHJcblx0Z2V0RW1haWxBZGRyZXNzZXMoZW1haWxlck1vZGVsOiBJU2xpY2tFbWFpbGVyTW9kZWwpOiBJU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsW10ge1xyXG5cdFx0bGV0IHNsaWNrRW1haWxlckFkZHJlc3NlcyA9IGVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzIHx8IFtdO1xyXG5cclxuXHRcdGlmICh0aGlzLnRvRW1haWxBZGRyZXNzKSB7XHJcblx0XHRcdGNvbnN0IHNjcnViYmVkVG9FbWFpbEFkZHJlc3MgPSB0aGlzLnRvRW1haWxBZGRyZXNzLnJlcGxhY2UoXCIsXCIsIFwiO1wiKS5yZXBsYWNlKC9cXHMvZywgXCI7XCIpO1xyXG5cdFx0XHRjb25zdCBlbWFpbEFkZHJlc3Nlc1RvQWRkU3RyaW5ncyA9IHNjcnViYmVkVG9FbWFpbEFkZHJlc3Muc3BsaXQoXCI7XCIpLmZpbHRlcih4ID0+IHggIT09ICcnKTtcclxuXHRcdFx0Y29uc3QgZW1haWxBZGRyZXNzZXNUb0FkZCA9IGVtYWlsQWRkcmVzc2VzVG9BZGRTdHJpbmdzLm1hcCh4ID0+IHtcclxuXHRcdFx0XHRjb25zdCBzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwgPSBuZXcgU2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsKCk7XHJcblx0XHRcdFx0c2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsLmNvbnRhY3RJZCA9IDA7XHJcblx0XHRcdFx0c2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsLmRpc3BsYXlOYW1lID0geDtcclxuXHRcdFx0XHRzbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwuZW1haWxBZGRyZXNzID0geDtcclxuXHRcdFx0XHRyZXR1cm4gc2xpY2tFbWFpbGVyQWRkcmVzc01vZGVsO1xyXG5cdFx0XHR9KTtcclxuXHRcdFx0c2xpY2tFbWFpbGVyQWRkcmVzc2VzID0gc2xpY2tFbWFpbGVyQWRkcmVzc2VzLmNvbmNhdChlbWFpbEFkZHJlc3Nlc1RvQWRkKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnRvRW1haWxBZGRyZXNzID0gbnVsbDtcclxuXHJcblx0XHRyZXR1cm4gc2xpY2tFbWFpbGVyQWRkcmVzc2VzO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgc2V0Qm9keShib2R5OiBzdHJpbmcpIHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGF3YWl0IHRoaXMuc2xpY2tGdW5jdGlvbkxvY2tTZXJ2aWNlLmxvY2soXCJTTElDS19FTUFJTEVSX1NFVF9CT0RZXCIpO1xyXG5cclxuXHRcdFx0YXdhaXQgdGhpcy5pbml0VGlueU1DRSgpO1xyXG5cdFx0XHRjb25zdCB0aW55TUNFID0gdGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCk7XHJcblxyXG5cdFx0XHRpZiAoIXRpbnlNQ0UpXHJcblx0XHRcdFx0Y29uc29sZS5lcnJvcihcInRpbnlNQ0Ugbm90IGluaXRpYWxpemVkXCIpO1xyXG5cclxuXHRcdFx0dGlueU1DRS5zZXRDb250ZW50KGJvZHkpO1xyXG5cclxuXHRcdH1cclxuXHRcdGZpbmFsbHkge1xyXG5cdFx0XHR0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiU0xJQ0tfRU1BSUxFUl9TRVRfQk9EWVwiKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGdldEJvZHkoKSB7XHJcblx0XHRyZXR1cm4gdGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCkuZ2V0Q29udGVudCgpO1xyXG5cdH1cclxuXHJcblx0b25TZW5kRW1haWwoKSB7XHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzID0gdGhpcy5nZXRFbWFpbEFkZHJlc3Nlcyh0aGlzLmVtYWlsZXJNb2RlbCk7XHJcblxyXG5cdFx0aWYgKHRoaXMudmFsaWRhdGUoKSA9PT0gZmFsc2UpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLmVtYWlsZXJNb2RlbC5ib2R5ID0gdGhpcy5nZXRCb2R5KCk7XHJcblx0XHR0aGlzLnNwaW5uZXJTdGF0dXMgPSBcInNwaW5cIjtcclxuXHRcdGlmICh0aGlzLnNlbmRFbWFpbENsaWNrRW1pdHRlcilcclxuXHRcdFx0dGhpcy5zZW5kRW1haWxDbGlja0VtaXR0ZXIuZW1pdCh0aGlzLmVtYWlsZXJNb2RlbCk7XHJcblx0fVxyXG5cclxuXHRlbWFpbFNlbnQoKSB7XHJcblx0XHR0aGlzLnNwaW5uZXJTdGF0dXMgPSBcIm9rXCI7XHJcblx0fVxyXG5cclxuXHRlbWFpbEVycm9yKCkge1xyXG5cdFx0dGhpcy5zcGlubmVyU3RhdHVzID0gXCJlcnJvclwiO1xyXG5cdH1cclxuXHJcblx0b25DYW5jZWxFbWFpbCgpIHtcclxuXHRcdGlmICh0aGlzLmNhbmNlbEVtYWlsQ2xpY2tFbWl0dGVyKVxyXG5cdFx0XHR0aGlzLmNhbmNlbEVtYWlsQ2xpY2tFbWl0dGVyLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGRpYWxvZ0luaXQoKSB7XHJcblx0XHR0aGlzLnJlbW92ZVRpbnlNQ0UoKTtcclxuXHJcblx0XHRhd2FpdCB0aGlzLmluaXRUaW55TUNFKCk7XHJcblx0XHRjb25zdCBib2R5ID0gKHRoaXMuZW1haWxlck1vZGVsKSA/ICh0aGlzLmVtYWlsZXJNb2RlbC5ib2R5IHx8ICcnKSA6ICcnO1xyXG5cdFx0dGlueW1jZS5nZXQoYGVtYWlsZXJfdGlueW1jZV8ke3RoaXMudGlueU1DRVV1aWR9YCkuc2V0Q29udGVudChib2R5KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGluaXRUaW55TUNFKCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihhc3luYyAocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRhd2FpdCB0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5sb2NrKFwiU0xJQ0tfRU1BSUxFUl9JTklUX1RJTllfTUNFXCIpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMudGlueU1DRVV1aWQpIHtcclxuXHRcdFx0XHR0aGlzLnNsaWNrRnVuY3Rpb25Mb2NrU2VydmljZS5yZWxlYXNlKFwiU0xJQ0tfRU1BSUxFUl9JTklUX1RJTllfTUNFXCIpO1xyXG5cdFx0XHRcdHJlc29sdmUoKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnRpbnlNQ0VVdWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cclxuXHRcdFx0XHRjb25zdCB0aW55TUNFQ29udGFpbmVyID0gPEhUTUxEaXZFbGVtZW50PnRoaXMudGlueU1DRUNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50O1xyXG5cdFx0XHRcdGNvbnN0IHRpbnlNQ0VUZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuXHRcdFx0XHR0aW55TUNFVGV4dGFyZWEuaWQgPSBgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gO1xyXG5cdFx0XHRcdHRpbnlNQ0VUZXh0YXJlYS5zdHlsZS5taW5IZWlnaHQgPSBcIjMwMHB4XCI7XHJcblx0XHRcdFx0dGlueU1DRVRleHRhcmVhLnN0eWxlLm1heEhlaWdodCA9IFwiMzAwcHhcIjtcclxuXHRcdFx0XHR0aW55TUNFQ29udGFpbmVyLmFwcGVuZENoaWxkKHRpbnlNQ0VUZXh0YXJlYSk7XHJcblxyXG5cdFx0XHRcdHRpbnltY2UuaW5pdCh7XHJcblx0XHRcdFx0XHRzZWxlY3RvcjogYCNlbWFpbGVyX3RpbnltY2VfJHt0aGlzLnRpbnlNQ0VVdWlkfWAsXHJcblx0XHRcdFx0XHRicmFuZGluZzogZmFsc2UsXHJcblx0XHRcdFx0XHRtZW51YmFyOiAnZWRpdCBpbnNlcnQgZm9ybWF0IHRvb2xzJyxcclxuXHRcdFx0XHRcdHBsdWdpbnM6ICdsaW5rIGltYWdlIGltYWdldG9vbHMgY29kZScsXHJcblx0XHRcdFx0XHR0b29sYmFyOiAnZm9udHNlbGVjdCB8IGZvbnRzaXplc2VsZWN0IHwgc3R5bGVzZWxlY3QgfCBib2xkIGl0YWxpYyB1bmRlcmxpbmUgfCBpbmRlbnQgb3V0ZGVudCB8IGJ1bGxpc3QgfCBhbGlnbmxlZnQgYWxpZ25jZW50ZXIgYWxpZ25yaWdodCB8IGNvZGUgfCBpbWFnZScsXHJcblx0XHRcdFx0XHRmb250c2l6ZV9mb3JtYXRzOiBcIjhweCAxMHB4IDEycHggMTRweCAxOHB4IDI0cHggMzZweFwiLFxyXG5cdFx0XHRcdFx0aGVpZ2h0OiB0aGlzLmJvZHlIZWlnaHQsXHJcblx0XHRcdFx0XHRjb252ZXJ0X3VybHM6IGZhbHNlLFxyXG5cdFx0XHRcdFx0c2V0dXA6IChlZCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRlZC5vbignaW5pdCcsIChhcmdzKSA9PiB7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGVkLnNldENvbnRlbnQoKHRoaXMuZW1haWxlck1vZGVsKSA/ICh0aGlzLmVtYWlsZXJNb2RlbC5ib2R5IHx8ICcnKSA6ICcnKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnRpbnlNQ0VJbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zbGlja0Z1bmN0aW9uTG9ja1NlcnZpY2UucmVsZWFzZShcIlNMSUNLX0VNQUlMRVJfSU5JVF9USU5ZX01DRVwiKTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgcmVtb3ZlVGlueU1DRSgpIHtcclxuXHRcdGlmICh0aGlzLnRpbnlNQ0VVdWlkKSB7XHJcblx0XHRcdGNvbnN0IHRpbnlNQ0UgPSB0aW55bWNlLmdldChgZW1haWxlcl90aW55bWNlXyR7dGhpcy50aW55TUNFVXVpZH1gKTtcclxuXHJcblx0XHRcdGlmICh0aW55TUNFKVxyXG5cdFx0XHRcdHRpbnlNQ0UucmVtb3ZlKCk7XHJcblxyXG5cdFx0XHRjb25zdCB0aW55TUNFQ29udGFpbmVyID0gPEhUTUxEaXZFbGVtZW50PnRoaXMudGlueU1DRUNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50O1xyXG5cdFx0XHR0aW55TUNFQ29udGFpbmVyLmlubmVySFRNTCA9IFwiXCI7XHJcblxyXG5cdFx0XHR0aGlzLnRpbnlNQ0VJbml0aWFsaXplZCA9IGZhbHNlO1xyXG5cclxuXHRcdFx0dGhpcy50aW55TUNFVXVpZCA9IG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJlbWFpbGVyTW9kZWxcIiBpZD1cInNsaWNrLWVtYWlsZXJfe3t1dWlkfX1cIiBjbGFzcz1cInNsaWNrLWVtYWlsZXJcIj5cclxuXHQ8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0PGRpdiAqbmdJZj1cImlzU3VibWl0dGVkID09PSB0cnVlICYmIGVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiZXJyb3JXcmFwcGVyIHNob3dJY29uc1wiPjxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPkVtYWlsIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZW1haWwgYWRkcmVzczwvZGl2PjwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiPlxyXG5cdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+PHNwYW4gY2xhc3M9XCJmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPjwvc3Bhbj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAjZW1haWxBZGRyZXNzQXV0b2NvbXBsZXRlIFsobmdNb2RlbCldPVwidG9FbWFpbEFkZHJlc3NcIiBwbGFjZWhvbGRlcj1cIkVtYWlsIFNlYXJjaC4uLlwiIGF1dG9mb2N1cyAvPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PHNsaWNrLWF1dG8tY29tcGxldGUgW2lucHV0UmVmXT1cImVtYWlsQWRkcmVzc0F1dG9jb21wbGV0ZVwiIHRleHRGaWVsZD1cImVtYWlsRGlzcGxheVwiIFtpdGVtc109XCJ0b0VtYWlsQWRkcmVzc0xpc3RcIiAob25SZWZyZXNoKT1cInRvQWRkcmVzc1NlYXJjaCgkZXZlbnQpXCIgKG9uU2VsZWN0KT1cIm9uU2VsZWN0RW1haWxBZGRyZXNzKCRldmVudClcIiAob25GcmVlZm9ybVRleHRTZWxlY3QpPVwib25GcmVlZm9ybVRleHRTZWxlY3QoJGV2ZW50KVwiPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBsZXQtZW1haWxEaXNwbGF5IFtzbGlja0F1dG9Db21wbGV0ZUxpc3RJdGVtVGVtcGxhdGVdPlxyXG5cdFx0XHRcdFx0PGRpdiBzdHlsZT0nbGluZS1oZWlnaHQ6IDEuMWVtOyBmb250LXNpemU6IDEycHg7Jz5cclxuXHRcdFx0XHRcdFx0e3tlbWFpbERpc3BsYXkuZGlzcGxheU5hbWV9fSBbe3tlbWFpbERpc3BsYXkuZW1haWxBZGRyZXNzfX1dXHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L3NsaWNrLWF1dG8tY29tcGxldGU+XHJcblxyXG5cdFx0XHQ8bGFiZWw+VG86Jm5ic3A7PC9sYWJlbD5cclxuXHRcdFx0PGRpdiAqbmdGb3I9XCJsZXQgZW1haWxBZGRyZXNzIG9mIGVtYWlsZXJNb2RlbC50b0VtYWlsQWRkcmVzc2VzOyBsZXQgaWR4ID0gaW5kZXg7XCIgY2xhc3M9XCJzbGljay1lbWFpbGVyX2VtYWlsLWFkZHJlc3MgYWxlcnQgYWxlcnQtc2Vjb25kYXJ5XCI+e3tlbWFpbEFkZHJlc3MuZGlzcGxheU5hbWV9fSBbe3tlbWFpbEFkZHJlc3MuZW1haWxBZGRyZXNzfX1dPGkgKGNsaWNrKT1cImRlbGV0ZUVtYWlsQWRkcmVzcyhpZHgpXCIgY2xhc3M9XCJmYXMgZmEtdGltZXMtY2lyY2xlIGJnLXdoaXRlIHRleHQtZGFuZ2VyIG1sLTFcIj48L2k+PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHQ8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0PGxhYmVsPlN1YmplY3Q6PC9sYWJlbD5cclxuXHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImVtYWlsZXJNb2RlbC5zdWJqZWN0XCIgLz5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0PGxhYmVsPkJvZHk6PC9sYWJlbD5cclxuXHRcdFx0PGRpdiAjdGlueU1DRUNvbnRhaW5lclJlZj48L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdDwvZGl2PlxyXG5cclxuXHQ8ZGl2IGNsYXNzPVwicm93IGZvcm0tZ3JvdXBcIj5cclxuXHRcdDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuXHRcdFx0PGxhYmVsPkF0dGFjaG1lbnRzOjwvbGFiZWw+XHJcblx0XHRcdDxzbGljay1maWxlLWRyb3AgKGZpbGVzQ2hhbmdlZCk9XCJvbkF0dGFjaG1lbnRzQ2hhbmdlZCgkZXZlbnQpXCI+PC9zbGljay1maWxlLWRyb3A+XHJcblx0XHRcdDxzbGljay1maWxlLWxpc3QgWyhmaWxlcyldPVwiZW1haWxlck1vZGVsLmF0dGFjaG1lbnRzXCI+PC9zbGljay1maWxlLWxpc3Q+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuXHJcblx0PGRpdiAqbmdJZj1cInNob3dCdXR0b25zXCIgY2xhc3M9XCJyb3cgZm9ybS1ncm91cFwiPlxyXG5cdFx0PGRpdiBjbGFzcz1cImNvbC0xMiB0ZXh0LWNlbnRlclwiPlxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIndpZHRoOiAxMjBweDsgbWFyZ2luLXJpZ2h0OiAxMHB4O1wiIFtzbGljay1idXR0b24tc3Bpbm5lcl09XCJzcGlubmVyU3RhdHVzXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJvblNlbmRFbWFpbCgpXCI+PGkgY2xhc3M9XCJmYXIgZmEtZW52ZWxvcGVcIj48L2k+Jm5ic3A7U2VuZDwvYnV0dG9uPlxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIndpZHRoOiAxMjBweDtcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kYW5nZXJcIiAoY2xpY2spPVwib25DYW5jZWxFbWFpbCgpXCI+PGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+Jm5ic3A7Q2FuY2VsPC9idXR0b24+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
File without changes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from "@angular/core";
|
|
3
|
+
import { FormsModule } from "@angular/forms";
|
|
4
|
+
import { SlickDialogModule } from "../slick-dialog/slick-dialog.module";
|
|
5
|
+
import { SlickAutoCompleteModule } from "../slick-auto-complete/slick-auto-complete.module";
|
|
6
|
+
import { SlickButtonSpinnerModule } from "../slick-button-spinner/slick-button-spinner.module";
|
|
7
|
+
import { SlickFileDropModule } from "../slick-file-drop/slick-file-drop.module";
|
|
8
|
+
import { SlickFileListModule } from "../slick-file-list/slick-file-list.module";
|
|
9
|
+
import { SlickEmailerComponent } from "./slick-emailer.component";
|
|
10
|
+
import { SlickEmailerDialogComponent } from "./slick-emailer-dialog.component";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class SlickEmailerModule {
|
|
13
|
+
}
|
|
14
|
+
/** @nocollapse */ SlickEmailerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
/** @nocollapse */ SlickEmailerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerModule, declarations: [SlickEmailerComponent, SlickEmailerDialogComponent], imports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule], exports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent] });
|
|
16
|
+
/** @nocollapse */ SlickEmailerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerModule, imports: [[CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule], CommonModule, FormsModule] });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SlickEmailerModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [CommonModule, FormsModule, SlickDialogModule, SlickAutoCompleteModule, SlickButtonSpinnerModule, SlickFileDropModule, SlickFileListModule],
|
|
21
|
+
declarations: [SlickEmailerComponent, SlickEmailerDialogComponent],
|
|
22
|
+
exports: [CommonModule, FormsModule, SlickEmailerComponent, SlickEmailerDialogComponent]
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
export { SlickEmailerComponent };
|
|
26
|
+
export { SlickEmailerDialogComponent };
|
|
27
|
+
export { SlickEmailerModel } from "./slick-emailer.model";
|
|
28
|
+
export { SlickEmailerAddressModel } from "./slick-emailer-address.model";
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZW1haWxlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1lbWFpbGVyL3NsaWNrLWVtYWlsZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFPL0UsTUFBTSxPQUFPLGtCQUFrQjs7a0lBQWxCLGtCQUFrQjttSUFBbEIsa0JBQWtCLGlCQUhmLHFCQUFxQixFQUFFLDJCQUEyQixhQUR2RCxZQUFZLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixhQUV6SSxZQUFZLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQjttSUFFM0Usa0JBQWtCLFlBSnJCLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQyxFQUUxSSxZQUFZLEVBQUUsV0FBVzsyRkFFdkIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7b0JBQ3BKLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLDJCQUEyQixDQUFDO29CQUNsRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixDQUFDO2lCQUN4Rjs7QUFFRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQTtBQUNoQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQTtBQUN0QyxPQUFPLEVBQXNCLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUUsT0FBTyxFQUE2Qix3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja0RpYWxvZ01vZHVsZSB9IGZyb20gXCIuLi9zbGljay1kaWFsb2cvc2xpY2stZGlhbG9nLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja0F1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gXCIuLi9zbGljay1hdXRvLWNvbXBsZXRlL3NsaWNrLWF1dG8tY29tcGxldGUubW9kdWxlXCI7XHJcbmltcG9ydCB7IFNsaWNrQnV0dG9uU3Bpbm5lck1vZHVsZSB9IGZyb20gXCIuLi9zbGljay1idXR0b24tc3Bpbm5lci9zbGljay1idXR0b24tc3Bpbm5lci5tb2R1bGVcIjtcclxuaW1wb3J0IHsgU2xpY2tGaWxlRHJvcE1vZHVsZSB9IGZyb20gXCIuLi9zbGljay1maWxlLWRyb3Avc2xpY2stZmlsZS1kcm9wLm1vZHVsZVwiO1xyXG5pbXBvcnQgeyBTbGlja0ZpbGVMaXN0TW9kdWxlIH0gZnJvbSBcIi4uL3NsaWNrLWZpbGUtbGlzdC9zbGljay1maWxlLWxpc3QubW9kdWxlXCI7XHJcbmltcG9ydCB7IFNsaWNrRW1haWxlckNvbXBvbmVudCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNsaWNrRW1haWxlckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXItZGlhbG9nLmNvbXBvbmVudFwiO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgU2xpY2tEaWFsb2dNb2R1bGUsIFNsaWNrQXV0b0NvbXBsZXRlTW9kdWxlLCBTbGlja0J1dHRvblNwaW5uZXJNb2R1bGUsIFNsaWNrRmlsZURyb3BNb2R1bGUsIFNsaWNrRmlsZUxpc3RNb2R1bGVdLFxyXG5cdGRlY2xhcmF0aW9uczogW1NsaWNrRW1haWxlckNvbXBvbmVudCwgU2xpY2tFbWFpbGVyRGlhbG9nQ29tcG9uZW50XSxcclxuXHRleHBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgU2xpY2tFbWFpbGVyQ29tcG9uZW50LCBTbGlja0VtYWlsZXJEaWFsb2dDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0VtYWlsZXJNb2R1bGUgeyB9XHJcbmV4cG9ydCB7IFNsaWNrRW1haWxlckNvbXBvbmVudCB9XHJcbmV4cG9ydCB7IFNsaWNrRW1haWxlckRpYWxvZ0NvbXBvbmVudCB9XHJcbmV4cG9ydCB7IElTbGlja0VtYWlsZXJNb2RlbCwgU2xpY2tFbWFpbGVyTW9kZWwgfSBmcm9tIFwiLi9zbGljay1lbWFpbGVyLm1vZGVsXCI7XHJcbmV4cG9ydCB7IElTbGlja0VtYWlsZXJBZGRyZXNzTW9kZWwsIFNsaWNrRW1haWxlckFkZHJlc3NNb2RlbCB9IGZyb20gXCIuL3NsaWNrLWVtYWlsZXItYWRkcmVzcy5tb2RlbFwiO1xyXG4iXX0=
|