@posiwise/admin-module 0.0.3
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 +7 -0
- package/assets/scss/_bootstrap_modules.scss +40 -0
- package/assets/scss/_custom-bootstrap.scss +13 -0
- package/assets/scss/_dashboard.scss +31 -0
- package/assets/scss/_dynamic-styles.scss +534 -0
- package/assets/scss/_plugins.scss +3 -0
- package/assets/scss/_public-pages.scss +7 -0
- package/assets/scss/_shared.scss +3 -0
- package/assets/scss/_variables.scss +5 -0
- package/assets/scss/common/landing-page-a/landing-page-style-1.scss +670 -0
- package/assets/scss/common/landing-page-b/banner.scss +141 -0
- package/assets/scss/common/landing-page-b/contact-us.scss +167 -0
- package/assets/scss/common/landing-page-b/explainer.scss +75 -0
- package/assets/scss/common/landing-page-b/explainer2.scss +35 -0
- package/assets/scss/common/landing-page-b/header.scss +56 -0
- package/assets/scss/common/landing-page-b/landing-page-style-2.scss +20 -0
- package/assets/scss/custom-bootstrap/_badge.scss +468 -0
- package/assets/scss/custom-bootstrap/_bootstrap_variables.scss +30 -0
- package/assets/scss/custom-bootstrap/_buttons.scss +84 -0
- package/assets/scss/custom-bootstrap/_card.scss +319 -0
- package/assets/scss/custom-bootstrap/_carousel.scss +6 -0
- package/assets/scss/custom-bootstrap/_form_select.scss +7 -0
- package/assets/scss/custom-bootstrap/_forms.scss +337 -0
- package/assets/scss/custom-bootstrap/_links.scss +7 -0
- package/assets/scss/custom-bootstrap/_modal.scss +16 -0
- package/assets/scss/custom-bootstrap/_navbar.scss +42 -0
- package/assets/scss/custom-bootstrap/_popover.scss +10 -0
- package/assets/scss/custom-bootstrap/_progress.scss +12 -0
- package/assets/scss/custom-bootstrap/_reboot.scss +93 -0
- package/assets/scss/custom-bootstrap/_type.scss +202 -0
- package/assets/scss/dashboard/_admin.scss +15 -0
- package/assets/scss/dashboard/_animations.scss +20 -0
- package/assets/scss/dashboard/_bootstrap-social.scss +641 -0
- package/assets/scss/dashboard/_chat.scss +250 -0
- package/assets/scss/dashboard/_coming-soon.scss +34 -0
- package/assets/scss/dashboard/_components.scss +229 -0
- package/assets/scss/dashboard/_email.scss +184 -0
- package/assets/scss/dashboard/_fixed-navbar.scss +18 -0
- package/assets/scss/dashboard/_gallery.scss +1201 -0
- package/assets/scss/dashboard/_helper.scss +736 -0
- package/assets/scss/dashboard/_horizontal-timeline.scss +314 -0
- package/assets/scss/dashboard/_icons.scss +107 -0
- package/assets/scss/dashboard/_layout.scss +23 -0
- package/assets/scss/dashboard/_misc.scss +220 -0
- package/assets/scss/dashboard/_notifications.scss +27 -0
- package/assets/scss/dashboard/_palette.scss +308 -0
- package/assets/scss/dashboard/_profile.scss +36 -0
- package/assets/scss/dashboard/_responsive.scss +209 -0
- package/assets/scss/dashboard/_search.scss +33 -0
- package/assets/scss/dashboard/_select.scss +16 -0
- package/assets/scss/dashboard/_sidebar-content.scss +632 -0
- package/assets/scss/dashboard/_tables.scss +17 -0
- package/assets/scss/dashboard/_tabs.scss +151 -0
- package/assets/scss/dashboard/_ui-switch.scss +6 -0
- package/assets/scss/dashboard/_upload.scss +249 -0
- package/assets/scss/dashboard/_utilities.scss +105 -0
- package/assets/scss/dashboard/_vertical-timeline.scss +1261 -0
- package/assets/scss/dashboard/mixins/_buttons.scss +78 -0
- package/assets/scss/dashboard/mixins/_colors.scss +29 -0
- package/assets/scss/dashboard/mixins/_custom.scss +34 -0
- package/assets/scss/dashboard/mixins/_shadows.scss +62 -0
- package/assets/scss/dashboard/mixins/_type.scss +16 -0
- package/assets/scss/dashboard/mixins/_typography.scss +29 -0
- package/assets/scss/dashboard/mixins/_utilities.scss +129 -0
- package/assets/scss/dashboard/mixins/_vendor-prefixes.scss +71 -0
- package/assets/scss/plugins/_plugin-nouislider.scss +199 -0
- package/assets/scss/plugins/_toastr.scss +71 -0
- package/assets/scss/plugins/perfect-scrollbar/_main.scss +3 -0
- package/assets/scss/plugins/perfect-scrollbar/_mixins.scss +135 -0
- package/assets/scss/plugins/perfect-scrollbar/_ps-custom.scss +134 -0
- package/assets/scss/plugins/perfect-scrollbar/_themes.scss +23 -0
- package/assets/scss/plugins/perfect-scrollbar/_variables.scss +19 -0
- package/assets/scss/public-pages/_buttons.scss +136 -0
- package/assets/scss/public-pages/_input-fields.scss +29 -0
- package/assets/scss/public-pages/_layout.scss +108 -0
- package/assets/scss/public-pages/mixins/_buttons.scss +28 -0
- package/assets/scss/shared/_modal.scss +28 -0
- package/assets/scss/shared/_prime-ng-tables.scss +107 -0
- package/assets/scss/shared/_prime-ng.scss +5100 -0
- package/assets/scss/variables/_app-colors-variables.scss +760 -0
- package/assets/scss/variables/_branding-variables.scss +93 -0
- package/assets/scss/variables/_dashboard-variables.scss +96 -0
- package/assets/scss/variables/_generic-variables.scss +33 -0
- package/assets/scss/variables/_landing-page-new-variables.scss +11 -0
- package/assets/scss/variables/_primeng-variables.scss +190 -0
- package/esm2020/admin-module.mjs +5 -0
- package/esm2020/index.mjs +85 -0
- package/esm2020/lib/admin-guard.service.mjs +44 -0
- package/esm2020/lib/admin-module.routing.mjs +706 -0
- package/esm2020/lib/admin.module.mjs +328 -0
- package/esm2020/lib/admin.service.mjs +411 -0
- package/esm2020/lib/components/TOS/terms-of-service/terms-of-service.component.mjs +86 -0
- package/esm2020/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.mjs +72 -0
- package/esm2020/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.mjs +26 -0
- package/esm2020/lib/components/config/global-config-details/global-config-details.component.mjs +61 -0
- package/esm2020/lib/components/config/global-config-list/global-config-list.component.mjs +86 -0
- package/esm2020/lib/components/config/global-config-tabs/global-config-tabs.component.mjs +24 -0
- package/esm2020/lib/components/contact-us/contact-us-list/contact-us-list.component.mjs +96 -0
- package/esm2020/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.mjs +24 -0
- package/esm2020/lib/components/credentials/credentials/credentials.component.mjs +81 -0
- package/esm2020/lib/components/credentials/credentials-details/credentials-details.component.mjs +70 -0
- package/esm2020/lib/components/credentials/credentials-tab/credentials-tab.component.mjs +31 -0
- package/esm2020/lib/components/credentials/subscription-credentials/subscription-credentials.component.mjs +87 -0
- package/esm2020/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.mjs +82 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.mjs +214 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.mjs +86 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-details.component.mjs +56 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.mjs +83 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.mjs +124 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.mjs +83 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.mjs +84 -0
- package/esm2020/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.mjs +83 -0
- package/esm2020/lib/components/domain-config/domain-config-list/domain-config-list.component.mjs +85 -0
- package/esm2020/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.mjs +24 -0
- package/esm2020/lib/components/faqs/faqs-list/faqs-list.component.mjs +289 -0
- package/esm2020/lib/components/faqs/faqs-tabs/faqs-tabs.component.mjs +24 -0
- package/esm2020/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.mjs +80 -0
- package/esm2020/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.mjs +95 -0
- package/esm2020/lib/components/generic/generic-insight/generic-insight.component.mjs +11 -0
- package/esm2020/lib/components/generic/generic-misc/generic-misc.component.mjs +73 -0
- package/esm2020/lib/components/generic/generic-tabs/generic-tabs.component.mjs +31 -0
- package/esm2020/lib/components/login-notifications/login-notification-details/login-notification-details.component.mjs +97 -0
- package/esm2020/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.mjs +24 -0
- package/esm2020/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.mjs +88 -0
- package/esm2020/lib/components/newsletters/newsletter-details/newsletter-details.component.mjs +77 -0
- package/esm2020/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.mjs +236 -0
- package/esm2020/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.mjs +73 -0
- package/esm2020/lib/components/newsletters/newsletters-insight/newsletters-insight.component.mjs +30 -0
- package/esm2020/lib/components/newsletters/newsletters-items/newsletters-items.component.mjs +167 -0
- package/esm2020/lib/components/newsletters/newsletters-list/newsletters-list.component.mjs +97 -0
- package/esm2020/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.mjs +38 -0
- package/esm2020/lib/components/permissions/permissions-details/permissions-details.component.mjs +83 -0
- package/esm2020/lib/components/permissions/permissions-list/permissions-list.component.mjs +76 -0
- package/esm2020/lib/components/permissions/permissions-tabs/permissions-tabs.component.mjs +31 -0
- package/esm2020/lib/components/permissions/role-details/role-details.component.mjs +117 -0
- package/esm2020/lib/components/permissions/roles-list/roles-list.component.mjs +83 -0
- package/esm2020/lib/components/products/product-details/product-details.component.mjs +305 -0
- package/esm2020/lib/components/products/products-insight/products-insight.component.mjs +46 -0
- package/esm2020/lib/components/products/products-list/products-list.component.mjs +142 -0
- package/esm2020/lib/components/products/products-tabs/products-tabs.component.mjs +28 -0
- package/esm2020/lib/components/products/users-list-for-product/users-list-for-product.component.mjs +55 -0
- package/esm2020/lib/components/subscriptions/subscription-agents/subscription-agents.component.mjs +122 -0
- package/esm2020/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.mjs +125 -0
- package/esm2020/lib/components/subscriptions/subscription-details/subscription-details.component.mjs +174 -0
- package/esm2020/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.mjs +210 -0
- package/esm2020/lib/components/subscriptions/subscription-products/subscription-products.component.mjs +60 -0
- package/esm2020/lib/components/subscriptions/subscription-users/subscription-users.component.mjs +98 -0
- package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.mjs +100 -0
- package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.mjs +48 -0
- package/esm2020/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.mjs +18 -0
- package/esm2020/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.mjs +48 -0
- package/esm2020/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.mjs +301 -0
- package/esm2020/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.mjs +35 -0
- package/esm2020/lib/components/tags/tags-category/tags-category.component.mjs +125 -0
- package/esm2020/lib/components/tags/tags-list/tags-list.component.mjs +139 -0
- package/esm2020/lib/components/tags/tags-tabs/tags-tabs.component.mjs +32 -0
- package/esm2020/lib/components/tips/tip-detail/tip-detail.component.mjs +75 -0
- package/esm2020/lib/components/tips/tips-list/tips-list.component.mjs +46 -0
- package/esm2020/lib/components/tips/tips-tabs/tips-tabs.component.mjs +25 -0
- package/esm2020/lib/components/tracking/ahoy-events/ahoy-events.component.mjs +101 -0
- package/esm2020/lib/components/tracking/ahoy-messages/ahoy-messages.component.mjs +93 -0
- package/esm2020/lib/components/tracking/ahoy-visits/ahoy-visits.component.mjs +89 -0
- package/esm2020/lib/components/tracking/events/events.component.mjs +89 -0
- package/esm2020/lib/components/tracking/tracking-tabs/tracking-tabs.component.mjs +49 -0
- package/esm2020/lib/components/tracking/versions/versions.component.mjs +100 -0
- package/esm2020/lib/components/users/user-details/user-details.component.mjs +148 -0
- package/esm2020/lib/components/users/users-insight/users-insight.component.mjs +38 -0
- package/esm2020/lib/components/users/users-list/users-list.component.mjs +312 -0
- package/esm2020/lib/components/users/users-tabs/users-tabs.component.mjs +32 -0
- package/esm2020/lib/shared/interface/contact-us.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/credential.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/domain-config.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/feedback-question.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/global-config.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/login-notification.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/newsletter.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/permission.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/privacy-tos.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/tip.interface.mjs +2 -0
- package/esm2020/lib/shared/interface/tracking.interface.mjs +2 -0
- package/esm2020/lib/shared/models/admin.model.mjs +337 -0
- package/esm2020/lib/shared/routers/routers.mjs +27 -0
- package/fesm2015/admin-module.mjs +7762 -0
- package/fesm2015/admin-module.mjs.map +1 -0
- package/fesm2020/admin-module.mjs +7767 -0
- package/fesm2020/admin-module.mjs.map +1 -0
- package/index.d.ts +82 -0
- package/lib/admin-guard.service.d.ts +14 -0
- package/lib/admin-module.routing.d.ts +7 -0
- package/lib/admin.module.d.ts +98 -0
- package/lib/admin.service.d.ts +145 -0
- package/lib/components/TOS/terms-of-service/terms-of-service.component.d.ts +51 -0
- package/lib/components/TOS/terms-of-service-details/terms-of-service-details.component.d.ts +24 -0
- package/lib/components/TOS/terms-of-service-tabs/terms-of-service-tabs.component.d.ts +9 -0
- package/lib/components/config/global-config-details/global-config-details.component.d.ts +25 -0
- package/lib/components/config/global-config-list/global-config-list.component.d.ts +51 -0
- package/lib/components/config/global-config-tabs/global-config-tabs.component.d.ts +7 -0
- package/lib/components/contact-us/contact-us-list/contact-us-list.component.d.ts +28 -0
- package/lib/components/contact-us/contact-us-tabs/contact-us-tabs.component.d.ts +7 -0
- package/lib/components/credentials/credentials/credentials.component.d.ts +49 -0
- package/lib/components/credentials/credentials-details/credentials-details.component.d.ts +25 -0
- package/lib/components/credentials/credentials-tab/credentials-tab.component.d.ts +8 -0
- package/lib/components/credentials/subscription-credentials/subscription-credentials.component.d.ts +52 -0
- package/lib/components/credentials/subscription-credentials-details/subscription-credentials-details.component.d.ts +28 -0
- package/lib/components/domain-config/domain-config-details/domain-config-build/domain-config-build.component.d.ts +67 -0
- package/lib/components/domain-config/domain-config-details/domain-config-core/domain-config-core.component.d.ts +49 -0
- package/lib/components/domain-config/domain-config-details/domain-config-details.component.d.ts +44 -0
- package/lib/components/domain-config/domain-config-details/domain-config-integrations/domain-config-integrations.component.d.ts +49 -0
- package/lib/components/domain-config/domain-config-details/domain-config-interface/domain-config-interface.component.d.ts +54 -0
- package/lib/components/domain-config/domain-config-details/domain-config-organization/domain-config-organization.component.d.ts +49 -0
- package/lib/components/domain-config/domain-config-details/domain-config-security/domain-config-security.component.d.ts +49 -0
- package/lib/components/domain-config/domain-config-details/domain-config-social/domain-config-social.component.d.ts +49 -0
- package/lib/components/domain-config/domain-config-list/domain-config-list.component.d.ts +50 -0
- package/lib/components/domain-config/domain-config-tabs/domain-config-tabs.component.d.ts +7 -0
- package/lib/components/faqs/faqs-list/faqs-list.component.d.ts +63 -0
- package/lib/components/faqs/faqs-tabs/faqs-tabs.component.d.ts +7 -0
- package/lib/components/feedback-questions/feedback-questions-details/feedback-questions-details.component.d.ts +51 -0
- package/lib/components/feedback-questions/feedback-questions-list/feedback-questions-list.component.d.ts +56 -0
- package/lib/components/generic/generic-insight/generic-insight.component.d.ts +5 -0
- package/lib/components/generic/generic-misc/generic-misc.component.d.ts +16 -0
- package/lib/components/generic/generic-tabs/generic-tabs.component.d.ts +7 -0
- package/lib/components/login-notifications/login-notification-details/login-notification-details.component.d.ts +53 -0
- package/lib/components/login-notifications/login-notification-tabs/login-notification-tabs.component.d.ts +7 -0
- package/lib/components/login-notifications/login-notifications-list/login-notifications-list.component.d.ts +50 -0
- package/lib/components/newsletters/newsletter-details/newsletter-details.component.d.ts +49 -0
- package/lib/components/newsletters/newsletter-item-details/newsletter-item-details.component.d.ts +77 -0
- package/lib/components/newsletters/newsletter-users-list/newsletter-users-list.component.d.ts +26 -0
- package/lib/components/newsletters/newsletters-insight/newsletters-insight.component.d.ts +15 -0
- package/lib/components/newsletters/newsletters-items/newsletters-items.component.d.ts +69 -0
- package/lib/components/newsletters/newsletters-list/newsletters-list.component.d.ts +52 -0
- package/lib/components/newsletters/newsletters-tabs/newsletters-tabs.component.d.ts +9 -0
- package/lib/components/permissions/permissions-details/permissions-details.component.d.ts +51 -0
- package/lib/components/permissions/permissions-list/permissions-list.component.d.ts +48 -0
- package/lib/components/permissions/permissions-tabs/permissions-tabs.component.d.ts +8 -0
- package/lib/components/permissions/role-details/role-details.component.d.ts +32 -0
- package/lib/components/permissions/roles-list/roles-list.component.d.ts +50 -0
- package/lib/components/products/product-details/product-details.component.d.ts +64 -0
- package/lib/components/products/products-insight/products-insight.component.d.ts +21 -0
- package/lib/components/products/products-list/products-list.component.d.ts +65 -0
- package/lib/components/products/products-tabs/products-tabs.component.d.ts +8 -0
- package/lib/components/products/users-list-for-product/users-list-for-product.component.d.ts +22 -0
- package/lib/components/subscriptions/subscription-agents/subscription-agents.component.d.ts +29 -0
- package/lib/components/subscriptions/subscription-agents-list/subscription-agents-list.component.d.ts +31 -0
- package/lib/components/subscriptions/subscription-details/subscription-details.component.d.ts +43 -0
- package/lib/components/subscriptions/subscription-product-details/subscription-product-details.component.d.ts +69 -0
- package/lib/components/subscriptions/subscription-products/subscription-products.component.d.ts +50 -0
- package/lib/components/subscriptions/subscription-users/subscription-users.component.d.ts +57 -0
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-nps/subscription-insight-nps.component.d.ts +40 -0
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-revenue/subscription-insight-revenue.component.d.ts +22 -0
- package/lib/components/subscriptions/subscriptions-insight/subscription-insight-tabs/subscription-insight-tabs.component.d.ts +6 -0
- package/lib/components/subscriptions/subscriptions-insight/subscriptions-insight.component.d.ts +22 -0
- package/lib/components/subscriptions/subscriptions-list/subscriptions-list.component.d.ts +93 -0
- package/lib/components/subscriptions/subscriptions-tabs/subscriptions-tabs.component.d.ts +8 -0
- package/lib/components/tags/tags-category/tags-category.component.d.ts +32 -0
- package/lib/components/tags/tags-list/tags-list.component.d.ts +33 -0
- package/lib/components/tags/tags-tabs/tags-tabs.component.d.ts +9 -0
- package/lib/components/tips/tip-detail/tip-detail.component.d.ts +21 -0
- package/lib/components/tips/tips-list/tips-list.component.d.ts +41 -0
- package/lib/components/tips/tips-tabs/tips-tabs.component.d.ts +9 -0
- package/lib/components/tracking/ahoy-events/ahoy-events.component.d.ts +35 -0
- package/lib/components/tracking/ahoy-messages/ahoy-messages.component.d.ts +28 -0
- package/lib/components/tracking/ahoy-visits/ahoy-visits.component.d.ts +28 -0
- package/lib/components/tracking/events/events.component.d.ts +28 -0
- package/lib/components/tracking/tracking-tabs/tracking-tabs.component.d.ts +8 -0
- package/lib/components/tracking/versions/versions.component.d.ts +34 -0
- package/lib/components/users/user-details/user-details.component.d.ts +33 -0
- package/lib/components/users/users-insight/users-insight.component.d.ts +17 -0
- package/lib/components/users/users-list/users-list.component.d.ts +94 -0
- package/lib/components/users/users-tabs/users-tabs.component.d.ts +11 -0
- package/lib/shared/interface/contact-us.interface.d.ts +16 -0
- package/lib/shared/interface/credential.interface.d.ts +37 -0
- package/lib/shared/interface/domain-config.interface.d.ts +120 -0
- package/lib/shared/interface/feedback-question.interface.d.ts +10 -0
- package/lib/shared/interface/global-config.interface.d.ts +11 -0
- package/lib/shared/interface/login-notification.interface.d.ts +15 -0
- package/lib/shared/interface/newsletter.interface.d.ts +44 -0
- package/lib/shared/interface/permission.interface.d.ts +10 -0
- package/lib/shared/interface/privacy-tos.interface.d.ts +12 -0
- package/lib/shared/interface/tip.interface.d.ts +15 -0
- package/lib/shared/interface/tracking.interface.d.ts +105 -0
- package/lib/shared/models/admin.model.d.ts +29 -0
- package/lib/shared/routers/routers.d.ts +25 -0
- package/package.json +49 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Injector } from '@angular/core';
|
|
2
|
+
import swal from 'sweetalert2';
|
|
3
|
+
import { AdminService } from '../../../admin.service';
|
|
4
|
+
import { ROUTERS } from '../../../shared/routers/routers';
|
|
5
|
+
import { PAGE_SIZE, TOKEN_KEY } from '@posiwise/common-utilities';
|
|
6
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
7
|
+
import { HelperService } from '@posiwise/helper-service';
|
|
8
|
+
import { PermissionService } from '@posiwise/common-services';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../admin.service";
|
|
11
|
+
import * as i2 from "primeng/table";
|
|
12
|
+
import * as i3 from "primeng/api";
|
|
13
|
+
import * as i4 from "@angular/common";
|
|
14
|
+
import * as i5 from "@angular/router";
|
|
15
|
+
import * as i6 from "@posiwise/directives";
|
|
16
|
+
import * as i7 from "@ng-bootstrap/ng-bootstrap";
|
|
17
|
+
import * as i8 from "@angular/forms";
|
|
18
|
+
import * as i9 from "@ngneat/transloco";
|
|
19
|
+
import * as i10 from "@posiwise/pipes";
|
|
20
|
+
export class NewslettersItemsComponent extends AppBaseComponent {
|
|
21
|
+
constructor(adminService, injector, cdr) {
|
|
22
|
+
super(injector);
|
|
23
|
+
this.adminService = adminService;
|
|
24
|
+
this.cdr = cdr;
|
|
25
|
+
this.searchTextItems = '';
|
|
26
|
+
this.newslettersItems = [];
|
|
27
|
+
this.allNewslettersItems = [];
|
|
28
|
+
this.isLoading = true;
|
|
29
|
+
this.newsletters = [];
|
|
30
|
+
this.isItemsEmpty = true;
|
|
31
|
+
this.isLoaded = false;
|
|
32
|
+
this.totalRecordsUnFilter = 0;
|
|
33
|
+
this.page = 1;
|
|
34
|
+
this.routers = ROUTERS;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.subscriptionId = PermissionService.selectedSubscription?.id;
|
|
38
|
+
this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {
|
|
39
|
+
this.userLoggedIn = !!res;
|
|
40
|
+
this.getNewsletterForSelect({
|
|
41
|
+
page: this.page,
|
|
42
|
+
page_size: PAGE_SIZE
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
// this.getNewsletterItems(1, PAGE_SIZE);
|
|
46
|
+
this.getUserInfo();
|
|
47
|
+
this.newsletterId = Number(this.route.snapshot.queryParamMap.get('newsletter_id'));
|
|
48
|
+
this.newsletterIdForItem = Number(this.route.snapshot.queryParamMap.get('newsletter_id'));
|
|
49
|
+
}
|
|
50
|
+
ngAfterViewChecked() {
|
|
51
|
+
this.cdr.detectChanges();
|
|
52
|
+
}
|
|
53
|
+
onLazyLoadNewsletterItems(event) {
|
|
54
|
+
const pageDetails = HelperService.onTableLazyLoad(event);
|
|
55
|
+
this.page = pageDetails.page;
|
|
56
|
+
this.getNewsletterItems({
|
|
57
|
+
page: this.page,
|
|
58
|
+
page_size: PAGE_SIZE,
|
|
59
|
+
order_by: pageDetails.sortField,
|
|
60
|
+
order_direction: pageDetails.sortOrder,
|
|
61
|
+
search: this.searchTextItems
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
getNewsletterItems(paging) {
|
|
65
|
+
this.adminService.getNewslettersItems(paging, this.subscriptionId).subscribe(response => {
|
|
66
|
+
this.newslettersItems = response.newsletter_items;
|
|
67
|
+
this.allNewslettersItems = this.newslettersItems.slice(0);
|
|
68
|
+
this.newslettersItemsTotal = response.object_count;
|
|
69
|
+
this.totalRecordsUnFilter = response.unfiltered_count;
|
|
70
|
+
this.isLoading = false;
|
|
71
|
+
this.isLoaded = true;
|
|
72
|
+
if (this.newslettersItems.length > 0) {
|
|
73
|
+
this.isItemsEmpty = false;
|
|
74
|
+
}
|
|
75
|
+
if (this.newsletterId) {
|
|
76
|
+
this.newslettersItems = this.allNewslettersItems.filter(x => x.newsletter_id === this.newsletterId);
|
|
77
|
+
this.newslettersItemsTotal = this.newslettersItems.length;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
onNewsletterChange(event) {
|
|
82
|
+
this.newsletterIdForItem =
|
|
83
|
+
!event.value?.length || event.value?.length > 1 ? '' : event.value[0];
|
|
84
|
+
this.newslettersItems =
|
|
85
|
+
event.value.length > 0
|
|
86
|
+
? this.allNewslettersItems.filter(x => event.value.includes(x.newsletter_id))
|
|
87
|
+
: this.allNewslettersItems;
|
|
88
|
+
this.selectedNewsletter = '';
|
|
89
|
+
this.newslettersItemsTotal = this.newslettersItems?.length;
|
|
90
|
+
}
|
|
91
|
+
onDelete(item) {
|
|
92
|
+
swal.fire({
|
|
93
|
+
title: 'Delete',
|
|
94
|
+
text: `Are you sure you want to delete ${item.title}?`,
|
|
95
|
+
showCancelButton: true,
|
|
96
|
+
reverseButtons: true,
|
|
97
|
+
icon: 'warning'
|
|
98
|
+
}).then(rep => {
|
|
99
|
+
if (rep.value) {
|
|
100
|
+
this.adminService.deleteNewsletterItem(item.id).subscribe(() => {
|
|
101
|
+
this.newslettersItems = this.newslettersItems.filter(x => x.id !== item.id);
|
|
102
|
+
this.toast.success(this.translation.translate('Admin.Newsletter.DeletedMessage'));
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
getNewsletterForSelect(paging) {
|
|
108
|
+
const subscriptionId = this.userLoggedIn ? this.subscriptionId : null;
|
|
109
|
+
this.adminService.getNewsletters(paging, subscriptionId).subscribe(response => {
|
|
110
|
+
this.newsletters = response.newsletters.map(item => {
|
|
111
|
+
return {
|
|
112
|
+
label: item.name,
|
|
113
|
+
value: item.id
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
if (this.newsletterId) {
|
|
117
|
+
const data = this.newsletters.find(x => x.value === this.newsletterId);
|
|
118
|
+
this.selectedNewsletter = data;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
getUserInfo() {
|
|
123
|
+
this.userStore().subscribe(user => {
|
|
124
|
+
this.user = user;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
sendTestEmail(item) {
|
|
128
|
+
swal.fire({
|
|
129
|
+
title: 'Send Email',
|
|
130
|
+
text: `A test email will be sent to "${this.user.email}". Do you want to continue?`,
|
|
131
|
+
showCancelButton: true,
|
|
132
|
+
reverseButtons: true,
|
|
133
|
+
icon: 'warning'
|
|
134
|
+
}).then(sendOk => {
|
|
135
|
+
if (sendOk.value === true) {
|
|
136
|
+
this.adminService.sendTestMail(item.id, this.subscriptionId).subscribe(response => {
|
|
137
|
+
if (response) {
|
|
138
|
+
this.toast.success(this.translation.translate('Newsletter test email sent correctly'));
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
navigateToCreateNewsletterItem() {
|
|
145
|
+
if (this.newsletterIdForItem) {
|
|
146
|
+
this.router.navigate([`${this.routers.newsletterItemDetails}add`], {
|
|
147
|
+
queryParams: { newsletter_id: this.newsletterIdForItem }
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.router.navigate([`${this.routers.newsletterItemDetails}add`]);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
getSendUntilColor(val) {
|
|
155
|
+
return { 'text-success fw-bold': val && new Date(val) > new Date() };
|
|
156
|
+
}
|
|
157
|
+
ngOnDestroy() {
|
|
158
|
+
super.ngOnDestroy();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
NewslettersItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NewslettersItemsComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
162
|
+
NewslettersItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NewslettersItemsComponent, selector: "pw-newsletters-items", usesInheritance: true, ngImport: i0, template: "<div class=\"row mt-3\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Newsletters Items</h2>\n <button *rbacAllow=\"'SubscriptionAdmin'\"\n class=\"btn btn-sm btn-outline-primary float-end m-0\"\n (click)=\"navigateToCreateNewsletterItem()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create Newsletter Item\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFilter === 0\">\n <div class=\"row\">\n <div class=\"col-8\">\n <div>\n <span class=\"d-block\"> Search </span>\n <input type=\"text\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n size=\"50\"\n placeholder=\"Search...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n <div class=\"col-4 float-end\">\n Filter By Newsletter\n <p-multiSelect [options]=\"newsletters\"\n (onChange)=\"onNewsletterChange($event)\"\n [defaultLabel]=\"selectedNewsletter?.label\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n </div>\n <p-table #dt\n [value]=\"newslettersItems\"\n [paginator]=\"true\"\n [globalFilterFields]=\"['title']\"\n [rows]=\"PAGE_SIZE\"\n [responsive]=\"true\"\n [totalRecords]=\"newslettersItemsTotal\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoadNewsletterItems($event)\"\n [loading]=\"isLoading\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Admin.NewsletterItem.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Admin.NewsletterItem.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Admin.NewsletterItem.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Admin.NewsletterItem.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Admin.NewsletterItem.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th class=\"actions-list-four\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Title\">{{ item.title }}</td>\n <td data-head=\"Body\"\n class=\"custom-td\">\n {{ item.body | removeHtml | textTruncate: 200 }}\n </td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">\n <span [ngClass]=\"getSendUntilColor(item?.send_until)\">{{\n item.send_until | dateFormat\n }}</span>\n </td>\n <td data-head=\"Is Pushed\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_pushed }}</span>\n </td>\n <td data-head=\"Is Sent\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.newsletterItemDetails + item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Newsletter recipients\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.newslettersUserList + item.id]\">\n <i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"newslettersItemsTotal === 0 && totalRecordsUnFilter !== 0\">\n <pw-no-data message=\"No Result\"> </pw-no-data>\n </div>\n <span class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ newslettersItemsTotal }}</span>\n</div>\n<div *ngIf=\"totalRecordsUnFilter === 0 && isLoaded\">\n <pw-no-data [message]=\"'Admin.NewsletterItem.NewsletterItemsNoDataMessage' | transloco\">\n </pw-no-data>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.custom-td{max-width:400px;word-break:break-all}\n"], dependencies: [{ kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i6.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }, { kind: "pipe", type: i10.DateFormatPipe, name: "dateFormat" }, { kind: "pipe", type: i10.RemoveHtmlPipe, name: "removeHtml" }, { kind: "pipe", type: i10.TextTruncatePipe, name: "textTruncate" }] });
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NewslettersItemsComponent, decorators: [{
|
|
164
|
+
type: Component,
|
|
165
|
+
args: [{ selector: 'pw-newsletters-items', template: "<div class=\"row mt-3\">\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Newsletters Items</h2>\n <button *rbacAllow=\"'SubscriptionAdmin'\"\n class=\"btn btn-sm btn-outline-primary float-end m-0\"\n (click)=\"navigateToCreateNewsletterItem()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create Newsletter Item\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"totalRecordsUnFilter === 0\">\n <div class=\"row\">\n <div class=\"col-8\">\n <div>\n <span class=\"d-block\"> Search </span>\n <input type=\"text\"\n [(ngModel)]=\"searchTextItems\"\n pInputText\n size=\"50\"\n placeholder=\"Search...\"\n data-cy=\"user-search\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"wd-90\" />\n </div>\n </div>\n <div class=\"col-4 float-end\">\n Filter By Newsletter\n <p-multiSelect [options]=\"newsletters\"\n (onChange)=\"onNewsletterChange($event)\"\n [defaultLabel]=\"selectedNewsletter?.label\"\n appendTo=\"body\">\n </p-multiSelect>\n </div>\n </div>\n <p-table #dt\n [value]=\"newslettersItems\"\n [paginator]=\"true\"\n [globalFilterFields]=\"['title']\"\n [rows]=\"PAGE_SIZE\"\n [responsive]=\"true\"\n [totalRecords]=\"newslettersItemsTotal\"\n [lazy]=\"true\"\n (onLazyLoad)=\"onLazyLoadNewsletterItems($event)\"\n [loading]=\"isLoading\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"title\">\n {{ 'Label.Title' | transloco }}\n <p-sortIcon field=\"title\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"body\">\n {{ 'Admin.NewsletterItem.Body' | transloco }}\n <p-sortIcon field=\"body\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"location\">\n {{ 'Admin.NewsletterItem.Location' | transloco }}\n <p-sortIcon field=\"location'\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"send_until\">\n {{ 'Admin.NewsletterItem.SendUntil' | transloco }}\n <p-sortIcon field=\"send_until\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_pushed\">\n {{ 'Admin.NewsletterItem.Pushed' | transloco }}\n <p-sortIcon field=\"is_pushed\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"is_sent\">\n {{ 'Admin.NewsletterItem.Sent' | transloco }}\n <p-sortIcon field=\"is_sent\"></p-sortIcon>\n </th>\n <th class=\"actions-list-four\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Title\">{{ item.title }}</td>\n <td data-head=\"Body\"\n class=\"custom-td\">\n {{ item.body | removeHtml | textTruncate: 200 }}\n </td>\n <td data-head=\"Location\">{{ item.location }}</td>\n <td data-head=\"Send Until\">\n <span [ngClass]=\"getSendUntilColor(item?.send_until)\">{{\n item.send_until | dateFormat\n }}</span>\n </td>\n <td data-head=\"Is Pushed\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_pushed }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_pushed }}</span>\n </td>\n <td data-head=\"Is Sent\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.is_sent }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.is_sent }}</span>\n </td>\n <td data-head=\"Action\"\n *rbacAllow=\"'SubscriptionAdmin'\">\n <ul class=\"list-unstyled list-inline\">\n <li ngbTooltip=\"Send test email\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-comment-alt cta1-icon\"\n (click)=\"sendTestEmail(item)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.newsletterItemDetails + item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Newsletter recipients\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.newslettersUserList + item.id]\">\n <i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"newslettersItemsTotal === 0 && totalRecordsUnFilter !== 0\">\n <pw-no-data message=\"No Result\"> </pw-no-data>\n </div>\n <span class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ newslettersItemsTotal }}</span>\n</div>\n<div *ngIf=\"totalRecordsUnFilter === 0 && isLoaded\">\n <pw-no-data [message]=\"'Admin.NewsletterItem.NewsletterItemsNoDataMessage' | transloco\">\n </pw-no-data>\n</div>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.custom-td{max-width:400px;word-break:break-all}\n"] }]
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i1.AdminService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }]; } });
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3c2xldHRlcnMtaXRlbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hZG1pbi1tb2R1bGUvc3JjL2xpYi9jb21wb25lbnRzL25ld3NsZXR0ZXJzL25ld3NsZXR0ZXJzLWl0ZW1zL25ld3NsZXR0ZXJzLWl0ZW1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9uZXdzbGV0dGVycy9uZXdzbGV0dGVycy1pdGVtcy9uZXdzbGV0dGVycy1pdGVtcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBR1gsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7OztBQU85RCxNQUFNLE9BQU8seUJBQ1QsU0FBUSxnQkFBZ0I7SUFxQ3hCLFlBQ1ksWUFBMEIsRUFDbEMsUUFBa0IsRUFDVixHQUFzQjtRQUU5QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUUxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQW5DbEMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFckIscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUV4Qyx3QkFBbUIsR0FBcUIsRUFBRSxDQUFDO1FBRTNDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFFakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFRcEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFFakIsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVqQixZQUFPLEdBQUcsT0FBTyxDQUFDO0lBY2xCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxQixJQUFJLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixTQUFTLEVBQUUsU0FBUzthQUN2QixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILHlDQUF5QztRQUN6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxLQUFvQjtRQUMxQyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLFNBQVM7WUFDcEIsUUFBUSxFQUFFLFdBQVcsQ0FBQyxTQUFTO1lBQy9CLGVBQWUsRUFBRSxXQUFXLENBQUMsU0FBUztZQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDL0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGtCQUFrQixDQUFDLE1BQWM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNwRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ2xELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ25ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7YUFDN0I7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUNuRCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FDN0MsQ0FBQztnQkFDRixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzthQUM3RDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQUs7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQjtZQUNwQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDakIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzdFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUMvRCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQW9CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDTixLQUFLLEVBQUUsUUFBUTtZQUNmLElBQUksRUFBRSxtQ0FBbUMsSUFBSSxDQUFDLEtBQUssR0FBRztZQUN0RCxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDVixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDNUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FDaEUsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQzthQUNOO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsTUFBYztRQUN6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxRSxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQyxPQUFPO29CQUNILEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtvQkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO2lCQUNqQixDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7YUFDbEM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBb0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNOLEtBQUssRUFBRSxZQUFZO1lBQ25CLElBQUksRUFBRSxpQ0FBaUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLDZCQUE2QjtZQUNuRixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLElBQUksRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDYixJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQzlFLElBQUksUUFBUSxFQUFFO3dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQ3JFLENBQUM7cUJBQ0w7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDhCQUE4QjtRQUMxQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsS0FBSyxDQUFDLEVBQUU7Z0JBQy9ELFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7YUFDM0QsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQUc7UUFDakIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O3NIQXpMUSx5QkFBeUI7MEdBQXpCLHlCQUF5QixtRkMxQnRDLDh0TEFzSkE7MkZENUhhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hZG1pbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IFBBR0VfU0laRSwgVE9LRU5fS0VZIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmV3c0xldHRlckl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL25ld3NsZXR0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBhZ2luZyB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctbmV3c2xldHRlcnMtaXRlbXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9uZXdzbGV0dGVycy1pdGVtcy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmV3c2xldHRlcnMtaXRlbXMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZXdzbGV0dGVyc0l0ZW1zQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZFxue1xuICAgIG5ld3NsZXR0ZXJzSXRlbXNUb3RhbDogbnVtYmVyO1xuXG4gICAgc2VhcmNoVGV4dEl0ZW1zID0gJyc7XG5cbiAgICBuZXdzbGV0dGVyc0l0ZW1zOiBOZXdzTGV0dGVySXRlbVtdID0gW107XG5cbiAgICBhbGxOZXdzbGV0dGVyc0l0ZW1zOiBOZXdzTGV0dGVySXRlbVtdID0gW107XG5cbiAgICBpc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgbmV3c2xldHRlcnMgPSBbXTtcblxuICAgIGlzSXRlbXNFbXB0eSA9IHRydWU7XG5cbiAgICB1c2VyOiBVc2VyO1xuXG4gICAgbmV3c2xldHRlcklkOiBudW1iZXI7XG5cbiAgICBzZWxlY3RlZE5ld3NsZXR0ZXI6IGFueTtcblxuICAgIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICB0b3RhbFJlY29yZHNVbkZpbHRlciA9IDA7XG5cbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuXG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG5cbiAgICBzdWJzY3JpcHRpb25JZDogbnVtYmVyO1xuXG4gICAgdXNlckxvZ2dlZEluOiBib29sZWFuO1xuXG4gICAgbmV3c2xldHRlcklkRm9ySXRlbTogbnVtYmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRtaW5TZXJ2aWNlOiBBZG1pblNlcnZpY2UsXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IFBlcm1pc3Npb25TZXJ2aWNlLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5pZDtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSQoVE9LRU5fS0VZKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlckxvZ2dlZEluID0gISFyZXM7XG4gICAgICAgICAgICB0aGlzLmdldE5ld3NsZXR0ZXJGb3JTZWxlY3Qoe1xuICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgICAgICBwYWdlX3NpemU6IFBBR0VfU0laRVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyB0aGlzLmdldE5ld3NsZXR0ZXJJdGVtcygxLCBQQUdFX1NJWkUpO1xuICAgICAgICB0aGlzLmdldFVzZXJJbmZvKCk7XG4gICAgICAgIHRoaXMubmV3c2xldHRlcklkID0gTnVtYmVyKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ25ld3NsZXR0ZXJfaWQnKSk7XG4gICAgICAgIHRoaXMubmV3c2xldHRlcklkRm9ySXRlbSA9IE51bWJlcih0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCduZXdzbGV0dGVyX2lkJykpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uTGF6eUxvYWROZXdzbGV0dGVySXRlbXMoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZURldGFpbHMgPSBIZWxwZXJTZXJ2aWNlLm9uVGFibGVMYXp5TG9hZChldmVudCk7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2VEZXRhaWxzLnBhZ2U7XG4gICAgICAgIHRoaXMuZ2V0TmV3c2xldHRlckl0ZW1zKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgb3JkZXJfYnk6IHBhZ2VEZXRhaWxzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIG9yZGVyX2RpcmVjdGlvbjogcGFnZURldGFpbHMuc29ydE9yZGVyLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRJdGVtc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5ld3NsZXR0ZXJJdGVtcyhwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXROZXdzbGV0dGVyc0l0ZW1zKHBhZ2luZywgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMubmV3c2xldHRlcnNJdGVtcyA9IHJlc3BvbnNlLm5ld3NsZXR0ZXJfaXRlbXM7XG4gICAgICAgICAgICB0aGlzLmFsbE5ld3NsZXR0ZXJzSXRlbXMgPSB0aGlzLm5ld3NsZXR0ZXJzSXRlbXMuc2xpY2UoMCk7XG4gICAgICAgICAgICB0aGlzLm5ld3NsZXR0ZXJzSXRlbXNUb3RhbCA9IHJlc3BvbnNlLm9iamVjdF9jb3VudDtcbiAgICAgICAgICAgIHRoaXMudG90YWxSZWNvcmRzVW5GaWx0ZXIgPSByZXNwb25zZS51bmZpbHRlcmVkX2NvdW50O1xuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMubmV3c2xldHRlcnNJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1zRW1wdHkgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm5ld3NsZXR0ZXJJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmV3c2xldHRlcnNJdGVtcyA9IHRoaXMuYWxsTmV3c2xldHRlcnNJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIHggPT4geC5uZXdzbGV0dGVyX2lkID09PSB0aGlzLm5ld3NsZXR0ZXJJZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXdzbGV0dGVyc0l0ZW1zVG90YWwgPSB0aGlzLm5ld3NsZXR0ZXJzSXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk5ld3NsZXR0ZXJDaGFuZ2UoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5uZXdzbGV0dGVySWRGb3JJdGVtID1cbiAgICAgICAgICAgICFldmVudC52YWx1ZT8ubGVuZ3RoIHx8IGV2ZW50LnZhbHVlPy5sZW5ndGggPiAxID8gJycgOiBldmVudC52YWx1ZVswXTtcbiAgICAgICAgdGhpcy5uZXdzbGV0dGVyc0l0ZW1zID1cbiAgICAgICAgICAgIGV2ZW50LnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IHRoaXMuYWxsTmV3c2xldHRlcnNJdGVtcy5maWx0ZXIoeCA9PiBldmVudC52YWx1ZS5pbmNsdWRlcyh4Lm5ld3NsZXR0ZXJfaWQpKVxuICAgICAgICAgICAgICAgIDogdGhpcy5hbGxOZXdzbGV0dGVyc0l0ZW1zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTmV3c2xldHRlciA9ICcnO1xuICAgICAgICB0aGlzLm5ld3NsZXR0ZXJzSXRlbXNUb3RhbCA9IHRoaXMubmV3c2xldHRlcnNJdGVtcz8ubGVuZ3RoO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGl0ZW06IE5ld3NMZXR0ZXJJdGVtKSB7XG4gICAgICAgIHN3YWwuZmlyZSh7XG4gICAgICAgICAgICB0aXRsZTogJ0RlbGV0ZScsXG4gICAgICAgICAgICB0ZXh0OiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAke2l0ZW0udGl0bGV9P2AsXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IHRydWUsXG4gICAgICAgICAgICBpY29uOiAnd2FybmluZydcbiAgICAgICAgfSkudGhlbihyZXAgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLmRlbGV0ZU5ld3NsZXR0ZXJJdGVtKGl0ZW0uaWQpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3c2xldHRlcnNJdGVtcyA9IHRoaXMubmV3c2xldHRlcnNJdGVtcy5maWx0ZXIoeCA9PiB4LmlkICE9PSBpdGVtLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLk5ld3NsZXR0ZXIuRGVsZXRlZE1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5ld3NsZXR0ZXJGb3JTZWxlY3QocGFnaW5nOiBQYWdpbmcpIHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uSWQgPSB0aGlzLnVzZXJMb2dnZWRJbiA/IHRoaXMuc3Vic2NyaXB0aW9uSWQgOiBudWxsO1xuICAgICAgICB0aGlzLmFkbWluU2VydmljZS5nZXROZXdzbGV0dGVycyhwYWdpbmcsIHN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5uZXdzbGV0dGVycyA9IHJlc3BvbnNlLm5ld3NsZXR0ZXJzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbS5pZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld3NsZXR0ZXJJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLm5ld3NsZXR0ZXJzLmZpbmQoeCA9PiB4LnZhbHVlID09PSB0aGlzLm5ld3NsZXR0ZXJJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE5ld3NsZXR0ZXIgPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFVzZXJJbmZvKCkge1xuICAgICAgICB0aGlzLnVzZXJTdG9yZSgpLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlbmRUZXN0RW1haWwoaXRlbTogTmV3c0xldHRlckl0ZW0pIHtcbiAgICAgICAgc3dhbC5maXJlKHtcbiAgICAgICAgICAgIHRpdGxlOiAnU2VuZCBFbWFpbCcsXG4gICAgICAgICAgICB0ZXh0OiBgQSB0ZXN0IGVtYWlsIHdpbGwgYmUgc2VudCB0byBcIiR7dGhpcy51c2VyLmVtYWlsfVwiLiBEbyB5b3Ugd2FudCB0byBjb250aW51ZT9gLFxuICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgIHJldmVyc2VCdXR0b25zOiB0cnVlLFxuICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnXG4gICAgICAgIH0pLnRoZW4oc2VuZE9rID0+IHtcbiAgICAgICAgICAgIGlmIChzZW5kT2sudmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkbWluU2VydmljZS5zZW5kVGVzdE1haWwoaXRlbS5pZCwgdGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ05ld3NsZXR0ZXIgdGVzdCBlbWFpbCBzZW50IGNvcnJlY3RseScpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5hdmlnYXRlVG9DcmVhdGVOZXdzbGV0dGVySXRlbSgpIHtcbiAgICAgICAgaWYgKHRoaXMubmV3c2xldHRlcklkRm9ySXRlbSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Ake3RoaXMucm91dGVycy5uZXdzbGV0dGVySXRlbURldGFpbHN9YWRkYF0sIHtcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogeyBuZXdzbGV0dGVyX2lkOiB0aGlzLm5ld3NsZXR0ZXJJZEZvckl0ZW0gfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYCR7dGhpcy5yb3V0ZXJzLm5ld3NsZXR0ZXJJdGVtRGV0YWlsc31hZGRgXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTZW5kVW50aWxDb2xvcih2YWwpIHtcbiAgICAgICAgcmV0dXJuIHsgJ3RleHQtc3VjY2VzcyBmdy1ib2xkJzogdmFsICYmIG5ldyBEYXRlKHZhbCkgPiBuZXcgRGF0ZSgpIH07XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxoMiBjbGFzcz1cImNhcmQtdGl0bGUgcC0wIGZsb2F0LXN0YXJ0XCI+TmV3c2xldHRlcnMgSXRlbXM8L2gyPlxuICAgIDxidXR0b24gKnJiYWNBbGxvdz1cIidTdWJzY3JpcHRpb25BZG1pbidcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtZW5kIG0tMFwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0NyZWF0ZU5ld3NsZXR0ZXJJdGVtKClcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cy1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+IENyZWF0ZSBOZXdzbGV0dGVyIEl0ZW1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmVcIlxuICBbY2xhc3MuaGlkZVRhYmxlXT1cInRvdGFsUmVjb3Jkc1VuRmlsdGVyID09PSAwXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9ja1wiPiBTZWFyY2ggPC9zcGFuPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dEl0ZW1zXCJcbiAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXG4gICAgICAgICAgZGF0YS1jeT1cInVzZXItc2VhcmNoXCJcbiAgICAgICAgICAoaW5wdXQpPVwiZHQuZmlsdGVyR2xvYmFsKCRldmVudC50YXJnZXQudmFsdWUsICdjb250YWlucycpXCJcbiAgICAgICAgICBjbGFzcz1cIndkLTkwXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBmbG9hdC1lbmRcIj5cbiAgICAgIEZpbHRlciBCeSBOZXdzbGV0dGVyXG4gICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJuZXdzbGV0dGVyc1wiXG4gICAgICAgIChvbkNoYW5nZSk9XCJvbk5ld3NsZXR0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkZWZhdWx0TGFiZWxdPVwic2VsZWN0ZWROZXdzbGV0dGVyPy5sYWJlbFwiXG4gICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPlxuICAgICAgPC9wLW11bHRpU2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHAtdGFibGUgI2R0XG4gICAgW3ZhbHVlXT1cIm5ld3NsZXR0ZXJzSXRlbXNcIlxuICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgW2dsb2JhbEZpbHRlckZpZWxkc109XCJbJ3RpdGxlJ11cIlxuICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXG4gICAgW3RvdGFsUmVjb3Jkc109XCJuZXdzbGV0dGVyc0l0ZW1zVG90YWxcIlxuICAgIFtsYXp5XT1cInRydWVcIlxuICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWROZXdzbGV0dGVySXRlbXMoJGV2ZW50KVwiXG4gICAgW2xvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICBbY3VzdG9tU29ydF09XCJ0cnVlXCI+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgPHRyPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJ0aXRsZVwiPlxuICAgICAgICAgIHt7ICdMYWJlbC5UaXRsZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInRpdGxlXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJib2R5XCI+XG4gICAgICAgICAge3sgJ0FkbWluLk5ld3NsZXR0ZXJJdGVtLkJvZHknIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJib2R5XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJsb2NhdGlvblwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5OZXdzbGV0dGVySXRlbS5Mb2NhdGlvbicgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImxvY2F0aW9uJ1wiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwic2VuZF91bnRpbFwiPlxuICAgICAgICAgIHt7ICdBZG1pbi5OZXdzbGV0dGVySXRlbS5TZW5kVW50aWwnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzZW5kX3VudGlsXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJpc19wdXNoZWRcIj5cbiAgICAgICAgICB7eyAnQWRtaW4uTmV3c2xldHRlckl0ZW0uUHVzaGVkJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiaXNfcHVzaGVkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJpc19zZW50XCI+XG4gICAgICAgICAge3sgJ0FkbWluLk5ld3NsZXR0ZXJJdGVtLlNlbnQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJpc19zZW50XCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zLWxpc3QtZm91clwiXG4gICAgICAgICAgc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICBsZXQtaXRlbT5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlRpdGxlXCI+e3sgaXRlbS50aXRsZSB9fTwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJCb2R5XCJcbiAgICAgICAgICBjbGFzcz1cImN1c3RvbS10ZFwiPlxuICAgICAgICAgIHt7IGl0ZW0uYm9keSB8IHJlbW92ZUh0bWwgfCB0ZXh0VHJ1bmNhdGU6IDIwMCB9fVxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTG9jYXRpb25cIj57eyBpdGVtLmxvY2F0aW9uIH19PC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIlNlbmQgVW50aWxcIj5cbiAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJnZXRTZW5kVW50aWxDb2xvcihpdGVtPy5zZW5kX3VudGlsKVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlbmRfdW50aWwgfCBkYXRlRm9ybWF0XG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiSXMgUHVzaGVkXCI+XG4gICAgICAgICAgPHNwYW4gW2FwcER5bmFtaWNCYWRnZV09XCJ7IGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sIGl0ZW06IGl0ZW0/LmlzX3B1c2hlZCB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwic3VjY2Vzcy1kYW5nZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGl0ZW0/LmlzX3B1c2hlZCB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIklzIFNlbnRcIj5cbiAgICAgICAgICA8c3BhbiBbYXBwRHluYW1pY0JhZGdlXT1cInsgaXRlbXNBcnJheTogW3RydWUsIGZhbHNlXSwgaXRlbTogaXRlbT8uaXNfc2VudCB9XCJcbiAgICAgICAgICAgIGNvbG9yPVwic3VjY2Vzcy1kYW5nZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7IGl0ZW0/LmlzX3NlbnQgfX08L3NwYW4+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3Rpb25cIlxuICAgICAgICAgICpyYmFjQWxsb3c9XCInU3Vic2NyaXB0aW9uQWRtaW4nXCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZVwiPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJTZW5kIHRlc3QgZW1haWxcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLWNvbW1lbnQtYWx0IGN0YTEtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kVGVzdEVtYWlsKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRWRpdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW3JvdXRlcnMubmV3c2xldHRlckl0ZW1EZXRhaWxzICsgaXRlbS5pZF1cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGVkaXQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKGl0ZW0pXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJOZXdzbGV0dGVyIHJlY2lwaWVudHNcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXJzLm5ld3NsZXR0ZXJzVXNlckxpc3QgKyBpdGVtLmlkXVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhc2tzIGN0YTEtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8ZGl2ICpuZ0lmPVwibmV3c2xldHRlcnNJdGVtc1RvdGFsID09PSAwICYmIHRvdGFsUmVjb3Jkc1VuRmlsdGVyICE9PSAwXCI+XG4gICAgPHB3LW5vLWRhdGEgbWVzc2FnZT1cIk5vIFJlc3VsdFwiPiA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyBuZXdzbGV0dGVyc0l0ZW1zVG90YWwgfX08L3NwYW4+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJ0b3RhbFJlY29yZHNVbkZpbHRlciA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICA8cHctbm8tZGF0YSBbbWVzc2FnZV09XCInQWRtaW4uTmV3c2xldHRlckl0ZW0uTmV3c2xldHRlckl0ZW1zTm9EYXRhTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgPC9wdy1uby1kYXRhPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Component, Injector } from '@angular/core';
|
|
2
|
+
import swal from 'sweetalert2';
|
|
3
|
+
import { AdminService } from '../../../admin.service';
|
|
4
|
+
import { ROUTERS } from '../../../shared/routers/routers';
|
|
5
|
+
import { PAGE_SIZE, TOKEN_KEY } from '@posiwise/common-utilities';
|
|
6
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
7
|
+
import { HelperService } from '@posiwise/helper-service';
|
|
8
|
+
import { PermissionService } from '@posiwise/common-services';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../admin.service";
|
|
11
|
+
import * as i2 from "primeng/table";
|
|
12
|
+
import * as i3 from "primeng/api";
|
|
13
|
+
import * as i4 from "@angular/common";
|
|
14
|
+
import * as i5 from "@angular/router";
|
|
15
|
+
import * as i6 from "@posiwise/directives";
|
|
16
|
+
import * as i7 from "@ng-bootstrap/ng-bootstrap";
|
|
17
|
+
import * as i8 from "@angular/forms";
|
|
18
|
+
import * as i9 from "@ngneat/transloco";
|
|
19
|
+
export class NewslettersListComponent extends AppBaseComponent {
|
|
20
|
+
constructor(adminService, injector, cdr) {
|
|
21
|
+
super(injector);
|
|
22
|
+
this.adminService = adminService;
|
|
23
|
+
this.cdr = cdr;
|
|
24
|
+
this.data = {
|
|
25
|
+
newsletters: [],
|
|
26
|
+
object_count: 0,
|
|
27
|
+
unfiltered_count: 0
|
|
28
|
+
};
|
|
29
|
+
this.searchText = '';
|
|
30
|
+
this.loading = true;
|
|
31
|
+
this.isLoaded = false;
|
|
32
|
+
this.page = 1;
|
|
33
|
+
this.routers = ROUTERS;
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.localStorage.getItem$(TOKEN_KEY).subscribe(res => {
|
|
37
|
+
this.userLoggedIn = !!res;
|
|
38
|
+
if (this.userLoggedIn) {
|
|
39
|
+
this.subscriptionId = PermissionService.selectedSubscription?.id;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
ngAfterViewChecked() {
|
|
44
|
+
this.cdr.detectChanges();
|
|
45
|
+
}
|
|
46
|
+
onLazyLoad(event) {
|
|
47
|
+
const pageDetails = HelperService.onTableLazyLoad(event);
|
|
48
|
+
this.page = pageDetails.page;
|
|
49
|
+
this.getNewsletters({
|
|
50
|
+
page: this.page,
|
|
51
|
+
page_size: PAGE_SIZE,
|
|
52
|
+
order_by: pageDetails.sortField,
|
|
53
|
+
order_direction: pageDetails.sortOrder,
|
|
54
|
+
search: this.searchText
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
getNewsletters(paging) {
|
|
58
|
+
this.adminService
|
|
59
|
+
.getNewsletters(paging, this.subscriptionId || null)
|
|
60
|
+
.subscribe((response) => {
|
|
61
|
+
this.data = response;
|
|
62
|
+
this.loading = false;
|
|
63
|
+
this.isLoaded = true;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
onDelete(item) {
|
|
67
|
+
swal.fire({
|
|
68
|
+
title: 'Delete',
|
|
69
|
+
text: `Are you sure you want to delete ${item.name}?`,
|
|
70
|
+
showCancelButton: true,
|
|
71
|
+
reverseButtons: true,
|
|
72
|
+
icon: 'warning'
|
|
73
|
+
}).then(rep => {
|
|
74
|
+
if (rep.value) {
|
|
75
|
+
const subscriptionId = PermissionService.selectedSubscription.id;
|
|
76
|
+
this.adminService.deleteNewsletter(item.id, subscriptionId).subscribe(() => {
|
|
77
|
+
this.data.newsletters = this.data.newsletters.filter(x => x.id !== item.id);
|
|
78
|
+
this.data.object_count--;
|
|
79
|
+
this.toast.success(this.translation.translate('Admin.Newsletter.DeletedMessage'));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
navigateNewsletterItems(id) {
|
|
85
|
+
this.router.navigate([`/admin/newsletter/items`], { queryParams: { newsletter_id: id } });
|
|
86
|
+
}
|
|
87
|
+
ngOnDestroy() {
|
|
88
|
+
super.ngOnDestroy();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
NewslettersListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NewslettersListComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
+
NewslettersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NewslettersListComponent, selector: "pw-newsletters-list", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end my-3\">\n <h2 class=\"card-title p-0 float-start\">Newsletters</h2>\n <button *rbacAllow=\"'SubscriptionSuperAdmin'\"\n class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.newsletterDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create Newsletter\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.newsletters\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [responsive]=\"true\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n pInputText\n size=\"50\"\n placeholder=\"Search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sortIcon field=\"name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"active\">\n {{ 'Label.IsActive' | transloco }}\n <p-sortIcon field=\"active\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"visible\">\n {{ 'Label.IsVisible' | transloco }}\n <p-sortIcon field=\"visible\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Name\">\n <a (click)=\"navigateNewsletterItems(item.id)\">\n <span class=\"item-hoverable\">{{ item.name }}</span>\n </a>\n </td>\n <td data-head=\"Active\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.active }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.visible }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.visible ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\"\n *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.newsletterDetails + item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Newsletter Items\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"'/admin/newsletter/items'\"\n [queryParams]=\"{ newsletter_id: item.id }\">\n <i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data message=\"No Result\"> </pw-no-data>\n </div>\n <span class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [message]=\"'Admin.Newsletter.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n", dependencies: [{ kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i6.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i6.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i7.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i8.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: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i9.TranslocoPipe, name: "transloco" }] });
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NewslettersListComponent, decorators: [{
|
|
94
|
+
type: Component,
|
|
95
|
+
args: [{ selector: 'pw-newsletters-list', template: "<div class=\"row\">\n <div class=\"col-12 d-flex justify-content-between align-items-center text-end my-3\">\n <h2 class=\"card-title p-0 float-start\">Newsletters</h2>\n <button *rbacAllow=\"'SubscriptionSuperAdmin'\"\n class=\"btn btn-outline-primary btn-sm float-end m-0\"\n [routerLink]=\"[routers.newsletterDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> Create Newsletter\n </button>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"primeng-datatable-container table-responsive mt-0\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #tt\n [value]=\"data.newsletters\"\n [paginator]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [responsive]=\"true\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [lazy]=\"true\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <!--sort order should be default empty when page load-->\n\n <!-- Caption Header, Search Bar -->\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n pInputText\n size=\"50\"\n placeholder=\"Search\"\n [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\" />\n </div>\n </ng-template>\n\n <!-- Column Header -->\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"name\">\n {{ 'Label.Name' | transloco }}\n <p-sortIcon field=\"name\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"active\">\n {{ 'Label.IsActive' | transloco }}\n <p-sortIcon field=\"active\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"visible\">\n {{ 'Label.IsVisible' | transloco }}\n <p-sortIcon field=\"visible\"></p-sortIcon>\n </th>\n <th class=\"actions-list-two\"\n scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n\n <!-- Table Body -->\n <ng-template pTemplate=\"body\"\n let-item>\n <tr>\n <td data-head=\"Name\">\n <a (click)=\"navigateNewsletterItems(item.id)\">\n <span class=\"item-hoverable\">{{ item.name }}</span>\n </a>\n </td>\n <td data-head=\"Active\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.active }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.active ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{ itemsArray: [true, false], item: item?.visible }\"\n color=\"success-danger\"\n class=\"badge\">{{ item?.visible ? 'Yes' : 'No' }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\"\n *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[routers.newsletterDetails + item.id]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\"\n (click)=\"onDelete(item)\">\n <i class=\"fa fa-trash delete-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Newsletter Items\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"'/admin/newsletter/items'\"\n [queryParams]=\"{ newsletter_id: item.id }\">\n <i class=\"fa fa-tasks cta1-icon\" aria-hidden=\"true\"></i>\n </li>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data message=\"No Result\"> </pw-no-data>\n </div>\n <span class=\"total-records-count\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [message]=\"'Admin.Newsletter.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n" }]
|
|
96
|
+
}], ctorParameters: function () { return [{ type: i1.AdminService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }]; } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3c2xldHRlcnMtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvbmV3c2xldHRlcnMvbmV3c2xldHRlcnMtbGlzdC9uZXdzbGV0dGVycy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9uZXdzbGV0dGVycy9uZXdzbGV0dGVycy1saXN0L25ld3NsZXR0ZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUUvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7OztBQU05RCxNQUFNLE9BQU8sd0JBQ1QsU0FBUSxnQkFBZ0I7SUF1QnhCLFlBQ1ksWUFBMEIsRUFDbEMsUUFBa0IsRUFDVixHQUFzQjtRQUU5QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFKUixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUUxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQXZCbEMsU0FBSSxHQUF1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LENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFVO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7O3FIQTlGUSx3QkFBd0I7eUdBQXhCLHdCQUF3QixrRkN4QnJDLCsySUFvSEE7MkZENUZhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDSSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHN3YWwgZnJvbSAnc3dlZXRhbGVydDInO1xuXG5pbXBvcnQgeyBBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hZG1pbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IFBBR0VfU0laRSwgVE9LRU5fS0VZIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmV3c0xldHRlciwgTmV3c0xldHRlclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9uZXdzbGV0dGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdpbmcgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctbmV3c2xldHRlcnMtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25ld3NsZXR0ZXJzLWxpc3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE5ld3NsZXR0ZXJzTGlzdENvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBkYXRhOiBOZXdzTGV0dGVyUmVzcG9uc2UgPSB7XG4gICAgICAgIG5ld3NsZXR0ZXJzOiBbXSxcbiAgICAgICAgb2JqZWN0X2NvdW50OiAwLFxuICAgICAgICB1bmZpbHRlcmVkX2NvdW50OiAwXG4gICAgfTtcblxuICAgIHNlYXJjaFRleHQgPSAnJztcblxuICAgIGxvYWRpbmcgPSB0cnVlO1xuXG4gICAgaXNMb2FkZWQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcGFnZSA9IDE7XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICB1c2VyTG9nZ2VkSW46IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhZG1pblNlcnZpY2U6IEFkbWluU2VydmljZSxcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtJChUT0tFTl9LRVkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTG9nZ2VkSW4gPSAhIXJlcztcbiAgICAgICAgICAgIGlmICh0aGlzLnVzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbj8uaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uTGF6eUxvYWQoZXZlbnQ6IExhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFnZURldGFpbHMgPSBIZWxwZXJTZXJ2aWNlLm9uVGFibGVMYXp5TG9hZChldmVudCk7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2VEZXRhaWxzLnBhZ2U7XG4gICAgICAgIHRoaXMuZ2V0TmV3c2xldHRlcnMoe1xuICAgICAgICAgICAgcGFnZTogdGhpcy5wYWdlLFxuICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkUsXG4gICAgICAgICAgICBvcmRlcl9ieTogcGFnZURldGFpbHMuc29ydEZpZWxkLFxuICAgICAgICAgICAgb3JkZXJfZGlyZWN0aW9uOiBwYWdlRGV0YWlscy5zb3J0T3JkZXIsXG4gICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoVGV4dFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5ld3NsZXR0ZXJzKHBhZ2luZzogUGFnaW5nKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0TmV3c2xldHRlcnMocGFnaW5nLCB0aGlzLnN1YnNjcmlwdGlvbklkIHx8IG51bGwpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogTmV3c0xldHRlclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShpdGVtOiBOZXdzTGV0dGVyKSB7XG4gICAgICAgIHN3YWwuZmlyZSh7XG4gICAgICAgICAgICB0aXRsZTogJ0RlbGV0ZScsXG4gICAgICAgICAgICB0ZXh0OiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAke2l0ZW0ubmFtZX0/YCxcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsXG4gICAgICAgICAgICByZXZlcnNlQnV0dG9uczogdHJ1ZSxcbiAgICAgICAgICAgIGljb246ICd3YXJuaW5nJ1xuICAgICAgICB9KS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICBpZiAocmVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uSWQgPSBQZXJtaXNzaW9uU2VydmljZS5zZWxlY3RlZFN1YnNjcmlwdGlvbi5pZDtcbiAgICAgICAgICAgICAgICB0aGlzLmFkbWluU2VydmljZS5kZWxldGVOZXdzbGV0dGVyKGl0ZW0uaWQsIHN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEubmV3c2xldHRlcnMgPSB0aGlzLmRhdGEubmV3c2xldHRlcnMuZmlsdGVyKHggPT4geC5pZCAhPT0gaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5vYmplY3RfY291bnQtLTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi50cmFuc2xhdGUoJ0FkbWluLk5ld3NsZXR0ZXIuRGVsZXRlZE1lc3NhZ2UnKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuYXZpZ2F0ZU5ld3NsZXR0ZXJJdGVtcyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2FkbWluL25ld3NsZXR0ZXIvaXRlbXNgXSwgeyBxdWVyeVBhcmFtczogeyBuZXdzbGV0dGVyX2lkOiBpZCB9IH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHRleHQtZW5kIG15LTNcIj5cbiAgICA8aDIgY2xhc3M9XCJjYXJkLXRpdGxlIHAtMCBmbG9hdC1zdGFydFwiPk5ld3NsZXR0ZXJzPC9oMj5cbiAgICA8YnV0dG9uICpyYmFjQWxsb3c9XCInU3Vic2NyaXB0aW9uU3VwZXJBZG1pbidcIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBidG4tc20gZmxvYXQtZW5kIG0tMFwiXG4gICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5uZXdzbGV0dGVyRGV0YWlscyArICdhZGQnXVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gQ3JlYXRlIE5ld3NsZXR0ZXJcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgKm5nSWY9XCIhaXNMb2FkZWRcIj5cbiAgPHAtcHJvZ3Jlc3NTcGlubmVyIHN0cm9rZVdpZHRoPVwiMlwiPiA8L3AtcHJvZ3Jlc3NTcGlubmVyPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmUgbXQtMFwiXG4gIFtjbGFzcy5oaWRlVGFibGVdPVwiZGF0YS51bmZpbHRlcmVkX2NvdW50ID09PSAwXCI+XG4gIDxwLXRhYmxlICN0dFxuICAgIFt2YWx1ZV09XCJkYXRhLm5ld3NsZXR0ZXJzXCJcbiAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgW3Jlc3BvbnNpdmVdPVwidHJ1ZVwiXG4gICAgW3RvdGFsUmVjb3Jkc109XCJkYXRhLm9iamVjdF9jb3VudFwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgW2xhenldPVwidHJ1ZVwiXG4gICAgW2ZpbHRlckRlbGF5XT1cIjEwMDBcIlxuICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgW2N1c3RvbVNvcnRdPVwidHJ1ZVwiPlxuICAgIDwhLS1zb3J0IG9yZGVyIHNob3VsZCBiZSBkZWZhdWx0IGVtcHR5IHdoZW4gcGFnZSBsb2FkLS0+XG5cbiAgICA8IS0tIENhcHRpb24gSGVhZGVyLCBTZWFyY2ggQmFyIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggbXQtMiBtZS0yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgIChpbnB1dCk9XCJ0dC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gQ29sdW1uIEhlYWRlciAtLT5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cIm5hbWVcIj5cbiAgICAgICAgICB7eyAnTGFiZWwuTmFtZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cIm5hbWVcIj48L3Atc29ydEljb24+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImFjdGl2ZVwiPlxuICAgICAgICAgIHt7ICdMYWJlbC5Jc0FjdGl2ZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cImFjdGl2ZVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwidmlzaWJsZVwiPlxuICAgICAgICAgIHt7ICdMYWJlbC5Jc1Zpc2libGUnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJ2aXNpYmxlXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggY2xhc3M9XCJhY3Rpb25zLWxpc3QtdHdvXCJcbiAgICAgICAgICBzY29wZT1cInRydWVcIj57eyAnTGFiZWwuQWN0aW9ucycgfCB0cmFuc2xvY28gfX08L3RoPlxuICAgICAgPC90cj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBUYWJsZSBCb2R5IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICAgIGxldC1pdGVtPlxuICAgICAgPHRyPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiTmFtZVwiPlxuICAgICAgICAgIDxhIChjbGljayk9XCJuYXZpZ2F0ZU5ld3NsZXR0ZXJJdGVtcyhpdGVtLmlkKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLWhvdmVyYWJsZVwiPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3RpdmVcIj5cbiAgICAgICAgICA8c3BhbiBbYXBwRHluYW1pY0JhZGdlXT1cInsgaXRlbXNBcnJheTogW3RydWUsIGZhbHNlXSwgaXRlbTogaXRlbT8uYWN0aXZlIH1cIlxuICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzLWRhbmdlclwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgaXRlbT8uYWN0aXZlID8gJ1llcycgOiAnTm8nIH19PC9zcGFuPlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQgZGF0YS1oZWFkPVwiVmlzaWJsZVwiPlxuICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwieyBpdGVtc0FycmF5OiBbdHJ1ZSwgZmFsc2VdLCBpdGVtOiBpdGVtPy52aXNpYmxlIH1cIlxuICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzLWRhbmdlclwiXG4gICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgaXRlbT8udmlzaWJsZSA/ICdZZXMnIDogJ05vJyB9fTwvc3Bhbj5cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbGlzdC1pbmxpbmVcIlxuICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidTdWJzY3JpcHRpb25TdXBlckFkbWluJ1wiPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbcm91dGVycy5uZXdzbGV0dGVyRGV0YWlscyArIGl0ZW0uaWRdXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEZWxldGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZShpdGVtKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiTmV3c2xldHRlciBJdGVtc1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiJy9hZG1pbi9uZXdzbGV0dGVyL2l0ZW1zJ1wiXG4gICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IG5ld3NsZXR0ZXJfaWQ6IGl0ZW0uaWQgfVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRhc2tzIGN0YTEtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLXRhYmxlPlxuICA8ZGl2ICpuZ0lmPVwiZGF0YS5vYmplY3RfY291bnQgPT09IDAgJiYgZGF0YS51bmZpbHRlcmVkX2NvdW50ICE9PSAwXCI+XG4gICAgPHB3LW5vLWRhdGEgbWVzc2FnZT1cIk5vIFJlc3VsdFwiPiA8L3B3LW5vLWRhdGE+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyBkYXRhLm9iamVjdF9jb3VudCB9fTwvc3Bhbj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImRhdGEudW5maWx0ZXJlZF9jb3VudCA9PT0gMCAmJiBpc0xvYWRlZFwiPlxuICA8cHctbm8tZGF0YSBbbWVzc2FnZV09XCInQWRtaW4uTmV3c2xldHRlci5Ob0RhdGFNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPiA8L3B3LW5vLWRhdGE+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { PERMISSION_NAMES } from '@posiwise/common-utilities';
|
|
3
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@posiwise/shared-components";
|
|
6
|
+
export class NewsletterComponent extends AppBaseComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.items = [
|
|
10
|
+
{
|
|
11
|
+
id: 'newsletter',
|
|
12
|
+
label: 'Newsletters',
|
|
13
|
+
icon: 'fa fa-fw fa-book',
|
|
14
|
+
routerLink: ['/admin/newsletter/list']
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'items',
|
|
18
|
+
label: 'Newsletter-Items',
|
|
19
|
+
icon: 'fa fa-fw fa-calendar',
|
|
20
|
+
routerLink: ['/admin/newsletter/items']
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'insight',
|
|
24
|
+
label: 'Insight',
|
|
25
|
+
icon: 'fa fa-fw fa-signature',
|
|
26
|
+
routerLink: ['/admin/newsletter/insight'],
|
|
27
|
+
visible: this.permissionService.evaluatePermissions(PERMISSION_NAMES.SuperAdmin)
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
NewsletterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NewsletterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
+
NewsletterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: NewsletterComponent, selector: "pw-newsletter", usesInheritance: true, ngImport: i0, template: `<pw-tabs [items]="items"></pw-tabs>`, isInline: true, styles: [".text-truncate{max-width:150px}.card-body{min-height:65vh}\n"], dependencies: [{ kind: "component", type: i1.PwTabsComponent, selector: "pw-tabs", inputs: ["items", "withSubscription"] }] });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: NewsletterComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'pw-newsletter', template: `<pw-tabs [items]="items"></pw-tabs>`, styles: [".text-truncate{max-width:150px}.card-body{min-height:65vh}\n"] }]
|
|
37
|
+
}] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3c2xldHRlcnMtdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvbmV3c2xldHRlcnMvbmV3c2xldHRlcnMtdGFicy9uZXdzbGV0dGVycy10YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7QUFnQmhFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxnQkFBZ0I7SUFkekQ7O1FBaUJJLFVBQUssR0FBZTtZQUNoQjtnQkFDSSxFQUFFLEVBQUUsWUFBWTtnQkFDaEIsS0FBSyxFQUFFLGFBQWE7Z0JBQ3BCLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLFVBQVUsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2FBQ3pDO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLE9BQU87Z0JBQ1gsS0FBSyxFQUFFLGtCQUFrQjtnQkFDekIsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsVUFBVSxFQUFFLENBQUMseUJBQXlCLENBQUM7YUFDMUM7WUFDRDtnQkFDSSxFQUFFLEVBQUUsU0FBUztnQkFDYixLQUFLLEVBQUUsU0FBUztnQkFDaEIsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsVUFBVSxFQUFFLENBQUMsMkJBQTJCLENBQUM7Z0JBQ3pDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDO2FBQ25GO1NBQ0osQ0FBQztLQUNMOztnSEF4QlksbUJBQW1CO29HQUFuQixtQkFBbUIsNEVBWmxCLHFDQUFxQzsyRkFZdEMsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNJLGVBQWUsWUFDZixxQ0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQgeyBQRVJNSVNTSU9OX05BTUVTIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQXBwQmFzZUNvbXBvbmVudCB9IGZyb20gJ0Bwb3Npd2lzZS9hcHAtYmFzZS1jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LW5ld3NsZXR0ZXInLFxuICAgIHRlbXBsYXRlOiBgPHB3LXRhYnMgW2l0ZW1zXT1cIml0ZW1zXCI+PC9wdy10YWJzPmAsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgICAgIC50ZXh0LXRydW5jYXRlIHtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDE1MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNhcmQtYm9keSB7XG4gICAgICAgICAgICAgICAgbWluLWhlaWdodDogNjV2aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmV3c2xldHRlckNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQge1xuICAgIGFjdGl2ZUl0ZW06IE1lbnVJdGVtO1xuXG4gICAgaXRlbXM6IE1lbnVJdGVtW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnbmV3c2xldHRlcicsXG4gICAgICAgICAgICBsYWJlbDogJ05ld3NsZXR0ZXJzJyxcbiAgICAgICAgICAgIGljb246ICdmYSBmYS1mdyBmYS1ib29rJyxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL2FkbWluL25ld3NsZXR0ZXIvbGlzdCddXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnaXRlbXMnLFxuICAgICAgICAgICAgbGFiZWw6ICdOZXdzbGV0dGVyLUl0ZW1zJyxcbiAgICAgICAgICAgIGljb246ICdmYSBmYS1mdyBmYS1jYWxlbmRhcicsXG4gICAgICAgICAgICByb3V0ZXJMaW5rOiBbJy9hZG1pbi9uZXdzbGV0dGVyL2l0ZW1zJ11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdpbnNpZ2h0JyxcbiAgICAgICAgICAgIGxhYmVsOiAnSW5zaWdodCcsXG4gICAgICAgICAgICBpY29uOiAnZmEgZmEtZncgZmEtc2lnbmF0dXJlJyxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL2FkbWluL25ld3NsZXR0ZXIvaW5zaWdodCddLFxuICAgICAgICAgICAgdmlzaWJsZTogdGhpcy5wZXJtaXNzaW9uU2VydmljZS5ldmFsdWF0ZVBlcm1pc3Npb25zKFBFUk1JU1NJT05fTkFNRVMuU3VwZXJBZG1pbilcbiAgICAgICAgfVxuICAgIF07XG59XG4iXX0=
|
package/esm2020/lib/components/permissions/permissions-details/permissions-details.component.mjs
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { Component, Injector, ViewChild } from '@angular/core';
|
|
3
|
+
import { AdminService } from '../../../admin.service';
|
|
4
|
+
import { AppAdmin } from '../../../shared/models/admin.model';
|
|
5
|
+
import { ROUTERS } from '../../../shared/routers/routers';
|
|
6
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
7
|
+
import { PermissionTreeComponent } from '@posiwise/shared-components';
|
|
8
|
+
import { ValidateForm } from '@posiwise/utils';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "../../../admin.service";
|
|
11
|
+
import * as i2 from "primeng/tabmenu";
|
|
12
|
+
import * as i3 from "@angular/router";
|
|
13
|
+
import * as i4 from "@posiwise/directives";
|
|
14
|
+
import * as i5 from "@angular/forms";
|
|
15
|
+
import * as i6 from "@ngneat/transloco";
|
|
16
|
+
export class PermissionsDetailsComponent extends AppBaseComponent {
|
|
17
|
+
constructor(adminService, injector) {
|
|
18
|
+
super(injector);
|
|
19
|
+
this.adminService = adminService;
|
|
20
|
+
this.routers = ROUTERS;
|
|
21
|
+
this.items = [
|
|
22
|
+
{ id: 'permission-details', label: 'Permission details', icon: 'fa fa-fw fa-user-cog' }
|
|
23
|
+
];
|
|
24
|
+
[this.activeItem] = this.items;
|
|
25
|
+
this.form = AppAdmin.getPermissionsForm();
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.route.params.subscribe((data) => {
|
|
29
|
+
this.id = Number(data['id']);
|
|
30
|
+
this.getRoleDetails();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
getRoleDetails() {
|
|
34
|
+
this.adminService.getPermissions().subscribe(response => {
|
|
35
|
+
if (response.permissions && response.permissions.length > 0) {
|
|
36
|
+
this.permissions = response.permissions.find(x => x.id === this.id);
|
|
37
|
+
if (this.permissions) {
|
|
38
|
+
this.form.patchValue(this.permissions);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
savePermissionDetails() {
|
|
44
|
+
if (this.form.value['id']) {
|
|
45
|
+
this.adminService.savePermission(this.form.value, this.id).subscribe(() => {
|
|
46
|
+
this.back();
|
|
47
|
+
this.toast.success(this.translation.translate('Admin.Permissions.UpdatedMessage'));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.adminService.addPermission(this.form.value).subscribe(() => {
|
|
52
|
+
this.back();
|
|
53
|
+
this.toast.success(this.translation.translate('Admin.Permissions.AddedMessage'));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
onDiscard() {
|
|
58
|
+
this.form.reset();
|
|
59
|
+
this.location.back();
|
|
60
|
+
}
|
|
61
|
+
ngOnDestroy() {
|
|
62
|
+
super.ngOnDestroy();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
PermissionsDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PermissionsDetailsComponent, deps: [{ token: i1.AdminService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
+
PermissionsDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: PermissionsDetailsComponent, selector: "pw-permissions-details", viewQueries: [{ propertyName: "menu", first: true, predicate: ["menuItems"], descendants: true, static: true }, { propertyName: "permissionTree", first: true, predicate: ["permissionTree"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu #menuItems\n [model]=\"items\"\n [activeItem]=\"activeItem\"></p-tabMenu>\n\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"mb-4\">\n <div class=\"d-flex align-items-center\">\n <div class=\"me-auto col-xs-6\">\n <a href=\"javascript:void(0)\"\n [routerLink]=\"[routers.permissionsList]\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Permission: {{ permissions?.name }}</h3>\n </div>\n </div>\n </div>\n\n <form [formGroup]=\"form\"\n (ngSubmit)=\"savePermissionDetails()\">\n <div class=\"row\">\n <div class=\"col-12 col-md-8\">\n <div class=\"mb-3\">\n <label>{{ 'Permissions.PermissionName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n </div>\n <div class=\"col-12 col-md-4\">\n <div class=\"mb-3 text-center\">\n <label>{{ 'Permissions.IsActive' | transloco }}</label>\n <br />\n <ui-switch class=\"d-block\"\n formControlName=\"active\"\n name=\"active\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row mt-5 text-end\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n *rbacAllow=\"'Pages.Admin.Roles.Create'\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.TabMenu, selector: "p-tabMenu", inputs: ["model", "activeItem", "scrollable", "popup", "style", "styleClass"], outputs: ["activeItemChange"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RbacAllowDirective, selector: "[rbacAllow]", inputs: ["rbacAllow"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] });
|
|
67
|
+
__decorate([
|
|
68
|
+
ValidateForm('form'),
|
|
69
|
+
__metadata("design:type", Function),
|
|
70
|
+
__metadata("design:paramtypes", []),
|
|
71
|
+
__metadata("design:returntype", void 0)
|
|
72
|
+
], PermissionsDetailsComponent.prototype, "savePermissionDetails", null);
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: PermissionsDetailsComponent, decorators: [{
|
|
74
|
+
type: Component,
|
|
75
|
+
args: [{ selector: 'pw-permissions-details', template: "<div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu #menuItems\n [model]=\"items\"\n [activeItem]=\"activeItem\"></p-tabMenu>\n\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"mb-4\">\n <div class=\"d-flex align-items-center\">\n <div class=\"me-auto col-xs-6\">\n <a href=\"javascript:void(0)\"\n [routerLink]=\"[routers.permissionsList]\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"\">Permission: {{ permissions?.name }}</h3>\n </div>\n </div>\n </div>\n\n <form [formGroup]=\"form\"\n (ngSubmit)=\"savePermissionDetails()\">\n <div class=\"row\">\n <div class=\"col-12 col-md-8\">\n <div class=\"mb-3\">\n <label>{{ 'Permissions.PermissionName' | transloco }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"name\" />\n </div>\n </div>\n <div class=\"col-12 col-md-4\">\n <div class=\"mb-3 text-center\">\n <label>{{ 'Permissions.IsActive' | transloco }}</label>\n <br />\n <ui-switch class=\"d-block\"\n formControlName=\"active\"\n name=\"active\">\n </ui-switch>\n </div>\n </div>\n </div>\n <div class=\"row mt-5 text-end\">\n <div class=\"col-12\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onDiscard()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n *rbacAllow=\"'Pages.Admin.Roles.Create'\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</div>\n" }]
|
|
76
|
+
}], ctorParameters: function () { return [{ type: i1.AdminService }, { type: i0.Injector }]; }, propDecorators: { menu: [{
|
|
77
|
+
type: ViewChild,
|
|
78
|
+
args: ['menuItems', { static: true }]
|
|
79
|
+
}], permissionTree: [{
|
|
80
|
+
type: ViewChild,
|
|
81
|
+
args: ['permissionTree', { static: false }]
|
|
82
|
+
}], savePermissionDetails: [] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FkbWluLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcGVybWlzc2lvbnMvcGVybWlzc2lvbnMtZGV0YWlscy9wZXJtaXNzaW9ucy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYWRtaW4tbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wZXJtaXNzaW9ucy9wZXJtaXNzaW9ucy1kZXRhaWxzL3Blcm1pc3Npb25zLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQU0vQyxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBaUI3RCxZQUFvQixZQUEwQixFQUFFLFFBQWtCO1FBQzlELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQURBLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRjlDLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFJZCxJQUFJLENBQUMsS0FBSyxHQUFHO1lBQ1QsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUs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ImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FkbWluLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwQWRtaW4gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbW9kZWxzL2FkbWluLm1vZGVsJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IFBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL3Blcm1pc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBlcm1pc3Npb25UcmVlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL3NoYXJlZC1jb21wb25lbnRzJztcbmltcG9ydCB7IFZhbGlkYXRlRm9ybSB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctcGVybWlzc2lvbnMtZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Blcm1pc3Npb25zLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zRGV0YWlsc0NvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQFZpZXdDaGlsZCgnbWVudUl0ZW1zJywgeyBzdGF0aWM6IHRydWUgfSkgbWVudTogTWVudUl0ZW1bXTtcblxuICAgIEBWaWV3Q2hpbGQoJ3Blcm1pc3Npb25UcmVlJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBlcm1pc3Npb25UcmVlOiBQZXJtaXNzaW9uVHJlZUNvbXBvbmVudDtcblxuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBpZDogbnVtYmVyO1xuXG4gICAgYWN0aXZlSXRlbTogTWVudUl0ZW07XG5cbiAgICBpdGVtczogTWVudUl0ZW1bXTtcblxuICAgIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uO1xuXG4gICAgcm91dGVycyA9IFJPVVRFUlM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFkbWluU2VydmljZTogQWRtaW5TZXJ2aWNlLCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLml0ZW1zID0gW1xuICAgICAgICAgICAgeyBpZDogJ3Blcm1pc3Npb24tZGV0YWlscycsIGxhYmVsOiAnUGVybWlzc2lvbiBkZXRhaWxzJywgaWNvbjogJ2ZhIGZhLWZ3IGZhLXVzZXItY29nJyB9XG4gICAgICAgIF07XG5cbiAgICAgICAgW3RoaXMuYWN0aXZlSXRlbV0gPSB0aGlzLml0ZW1zO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBBZG1pbi5nZXRQZXJtaXNzaW9uc0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChkYXRhOiBQYXJhbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBOdW1iZXIoZGF0YVsnaWQnXSk7XG4gICAgICAgICAgICB0aGlzLmdldFJvbGVEZXRhaWxzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um9sZURldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLmdldFBlcm1pc3Npb25zKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5wZXJtaXNzaW9ucyAmJiByZXNwb25zZS5wZXJtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHJlc3BvbnNlLnBlcm1pc3Npb25zLmZpbmQoeCA9PiB4LmlkID09PSB0aGlzLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLnBlcm1pc3Npb25zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBWYWxpZGF0ZUZvcm0oJ2Zvcm0nKVxuICAgIHNhdmVQZXJtaXNzaW9uRGV0YWlscygpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS52YWx1ZVsnaWQnXSkge1xuICAgICAgICAgICAgdGhpcy5hZG1pblNlcnZpY2Uuc2F2ZVBlcm1pc3Npb24odGhpcy5mb3JtLnZhbHVlLCB0aGlzLmlkKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uUGVybWlzc2lvbnMuVXBkYXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWRtaW5TZXJ2aWNlLmFkZFBlcm1pc3Npb24odGhpcy5mb3JtLnZhbHVlKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3Quc3VjY2Vzcyh0aGlzLnRyYW5zbGF0aW9uLnRyYW5zbGF0ZSgnQWRtaW4uUGVybWlzc2lvbnMuQWRkZWRNZXNzYWdlJykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRpc2NhcmQoKSB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB3LXRhYiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgPHAtdGFiTWVudSAjbWVudUl0ZW1zXG4gICAgW21vZGVsXT1cIml0ZW1zXCJcbiAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCI+PC9wLXRhYk1lbnU+XG5cbiAgPGRpdiBjbGFzcz1cImRhc2hib2FyZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXNoYm9hcmQtYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtYXV0byBjb2wteHMtNlwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltyb3V0ZXJzLnBlcm1pc3Npb25zTGlzdF1cIlxuICAgICAgICAgICAgICBjbGFzcz1cInByZXZpb3VzXCI+PGkgY2xhc3M9XCJmYSBmYS1hcnJvdy1hbHQtY2lyY2xlLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9hPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwiXCI+UGVybWlzc2lvbjoge3sgcGVybWlzc2lvbnM/Lm5hbWUgfX08L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgICAobmdTdWJtaXQpPVwic2F2ZVBlcm1pc3Npb25EZXRhaWxzKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLThcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgIDxsYWJlbD57eyAnUGVybWlzc2lvbnMuUGVybWlzc2lvbk5hbWUnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8bGFiZWw+e3sgJ1Blcm1pc3Npb25zLklzQWN0aXZlJyB8IHRyYW5zbG9jbyB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICA8dWktc3dpdGNoIGNsYXNzPVwiZC1ibG9ja1wiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwiYWN0aXZlXCI+XG4gICAgICAgICAgICAgIDwvdWktc3dpdGNoPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTUgdGV4dC1lbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EaXNjYXJkKClcIj5cbiAgICAgICAgICAgICAge3sgJ0J1dHRvbi5DYW5jZWwnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgKnJiYWNBbGxvdz1cIidQYWdlcy5BZG1pbi5Sb2xlcy5DcmVhdGUnXCI+XG4gICAgICAgICAgICAgIHt7ICdCdXR0b24uU2F2ZScgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|