@abp/ng.theme.basic 5.0.0-rc.1 → 5.1.1
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 +3 -3
- package/{esm2015/abp-ng.theme.basic.js → esm2020/abp-ng.theme.basic.mjs} +0 -0
- package/esm2020/lib/components/account-layout/account-layout.component.mjs +32 -0
- package/esm2020/lib/components/account-layout/auth-wrapper/auth-wrapper.component.mjs +19 -0
- package/esm2020/lib/components/account-layout/tenant-box/tenant-box.component.mjs +20 -0
- package/esm2020/lib/components/application-layout/application-layout.component.mjs +31 -0
- package/{esm2015/lib/components/empty-layout/empty-layout.component.js → esm2020/lib/components/empty-layout/empty-layout.component.mjs} +10 -10
- package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +2 -2
- package/{esm2015/lib/components/logo/logo.component.js → esm2020/lib/components/logo/logo.component.mjs} +32 -32
- package/esm2020/lib/components/nav-items/current-user.component.mjs +39 -0
- package/esm2020/lib/components/nav-items/languages.component.mjs +107 -0
- package/esm2020/lib/components/nav-items/nav-items.component.mjs +19 -0
- package/esm2020/lib/components/page-alert-container/page-alert-container.component.mjs +18 -0
- package/esm2020/lib/components/routes/routes.component.mjs +37 -0
- package/esm2020/lib/components/validation-error/validation-error.component.mjs +44 -0
- package/esm2020/lib/constants/styles.mjs +151 -0
- package/esm2020/lib/enums/components.mjs +2 -0
- package/{esm2015/lib/enums/index.js → esm2020/lib/enums/index.mjs} +2 -1
- package/esm2020/lib/enums/user-menu-items.mjs +2 -0
- package/{esm2015/lib/handlers/index.js → esm2020/lib/handlers/index.mjs} +1 -1
- package/{esm2015/lib/handlers/lazy-style.handler.js → esm2020/lib/handlers/lazy-style.handler.mjs} +4 -4
- package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +1 -1
- package/esm2020/lib/models/layout.mjs +2 -0
- package/{esm2015/lib/providers/index.js → esm2020/lib/providers/index.mjs} +2 -1
- package/{esm2015/lib/providers/nav-item.provider.js → esm2020/lib/providers/nav-item.provider.mjs} +1 -1
- package/{esm2015/lib/providers/styles.provider.js → esm2020/lib/providers/styles.provider.mjs} +1 -1
- package/esm2020/lib/providers/user-menu.provider.mjs +41 -0
- package/{esm2015/lib/services/layout.service.js → esm2020/lib/services/layout.service.mjs} +4 -4
- package/esm2020/lib/theme-basic.module.mjs +128 -0
- package/{esm2015/lib/tokens/index.js → esm2020/lib/tokens/index.mjs} +1 -1
- package/{esm2015/lib/tokens/lazy-styles.token.js → esm2020/lib/tokens/lazy-styles.token.mjs} +1 -1
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +1 -1
- package/{esm2015/testing/abp-ng.theme.basic-testing.js → esm2020/testing/abp-ng.theme.basic-testing.mjs} +0 -0
- package/{esm2015/testing/lib/theme-basic-testing.module.js → esm2020/testing/lib/theme-basic-testing.module.mjs} +5 -5
- package/{esm2015/testing/public-api.js → esm2020/testing/public-api.mjs} +1 -1
- package/fesm2015/{abp-ng.theme.basic-testing.js → abp-ng.theme.basic-testing.mjs} +5 -5
- package/fesm2015/abp-ng.theme.basic-testing.mjs.map +1 -0
- package/fesm2015/abp-ng.theme.basic.mjs +833 -0
- package/fesm2015/abp-ng.theme.basic.mjs.map +1 -0
- package/fesm2020/abp-ng.theme.basic-testing.mjs +45 -0
- package/fesm2020/abp-ng.theme.basic-testing.mjs.map +1 -0
- package/fesm2020/abp-ng.theme.basic.mjs +835 -0
- package/fesm2020/abp-ng.theme.basic.mjs.map +1 -0
- package/lib/components/index.d.ts +1 -1
- package/lib/components/nav-items/current-user.component.d.ts +6 -2
- package/lib/enums/index.d.ts +1 -0
- package/lib/enums/user-menu-items.d.ts +4 -0
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/user-menu.provider.d.ts +8 -0
- package/package.json +30 -9
- package/testing/package.json +5 -5
- package/bundles/abp-ng.theme.basic-testing.umd.js +0 -73
- package/bundles/abp-ng.theme.basic-testing.umd.js.map +0 -1
- package/bundles/abp-ng.theme.basic.umd.js +0 -989
- package/bundles/abp-ng.theme.basic.umd.js.map +0 -1
- package/esm2015/lib/components/account-layout/account-layout.component.js +0 -36
- package/esm2015/lib/components/account-layout/auth-wrapper/auth-wrapper.component.js +0 -23
- package/esm2015/lib/components/account-layout/tenant-box/tenant-box.component.js +0 -24
- package/esm2015/lib/components/application-layout/application-layout.component.js +0 -36
- package/esm2015/lib/components/nav-items/current-user.component.js +0 -38
- package/esm2015/lib/components/nav-items/languages.component.js +0 -107
- package/esm2015/lib/components/nav-items/nav-items.component.js +0 -22
- package/esm2015/lib/components/page-alert-container/page-alert-container.component.js +0 -22
- package/esm2015/lib/components/routes/routes.component.js +0 -40
- package/esm2015/lib/components/validation-error/validation-error.component.js +0 -40
- package/esm2015/lib/constants/styles.js +0 -151
- package/esm2015/lib/enums/components.js +0 -2
- package/esm2015/lib/models/layout.js +0 -2
- package/esm2015/lib/theme-basic.module.js +0 -127
- package/fesm2015/abp-ng.theme.basic-testing.js.map +0 -1
- package/fesm2015/abp-ng.theme.basic.js +0 -821
- package/fesm2015/abp-ng.theme.basic.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abp-ng.theme.basic.umd.js","sources":["../../../../packages/theme-basic/src/lib/services/layout.service.ts","../../../../packages/theme-basic/src/lib/components/logo/logo.component.ts","../../../../packages/theme-basic/src/lib/components/routes/routes.component.ts","../../../../packages/theme-basic/src/lib/components/routes/routes.component.html","../../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.html","../../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.ts","../../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.html","../../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts","../../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.html","../../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts","../../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.html","../../../../packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.ts","../../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.html","../../../../packages/theme-basic/src/lib/components/nav-items/languages.component.ts","../../../../node_modules/tslib/tslib.es6.js","../../../../packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts","../../../../packages/theme-basic/src/lib/tokens/lazy-styles.token.ts","../../../../packages/theme-basic/src/lib/handlers/lazy-style.handler.ts","../../../../packages/theme-basic/src/lib/providers/nav-item.provider.ts","../../../../packages/theme-basic/src/lib/constants/styles.ts","../../../../packages/theme-basic/src/lib/providers/styles.provider.ts","../../../../packages/theme-basic/src/lib/theme-basic.module.ts","../../../../packages/theme-basic/src/public-api.ts","../../../../packages/theme-basic/src/abp-ng.theme.basic.ts"],"sourcesContent":["import { SubscriptionService } from '@abp/ng.core';\nimport { ChangeDetectorRef, Injectable } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { eThemeBasicComponents } from '../enums';\n\n@Injectable()\nexport class LayoutService {\n isCollapsed = true;\n\n smallScreen!: boolean; // do not set true or false\n\n logoComponentKey = eThemeBasicComponents.Logo;\n\n routesComponentKey = eThemeBasicComponents.Routes;\n\n navItemsComponentKey = eThemeBasicComponents.NavItems;\n\n constructor(private subscription: SubscriptionService, private cdRef: ChangeDetectorRef) {}\n\n private checkWindowWidth() {\n const isSmallScreen = window.innerWidth < 992;\n if (isSmallScreen && this.smallScreen === false) {\n this.isCollapsed = false;\n setTimeout(() => {\n this.isCollapsed = true;\n }, 100);\n }\n this.smallScreen = isSmallScreen;\n this.cdRef.detectChanges();\n }\n\n subscribeWindowSize() {\n this.checkWindowWidth();\n\n const resize$ = fromEvent(window, 'resize').pipe(debounceTime(150));\n this.subscription.addOne(resize$, () => this.checkWindowWidth());\n }\n}\n","import { ApplicationInfo, EnvironmentService } from '@abp/ng.core';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-logo',\n template: `\n <a class=\"navbar-brand\" routerLink=\"/\">\n <img\n *ngIf=\"appInfo.logoUrl; else appName\"\n [src]=\"appInfo.logoUrl\"\n [alt]=\"appInfo.name\"\n width=\"100%\"\n height=\"auto\"\n />\n </a>\n\n <ng-template #appName>\n {{ appInfo.name }}\n </ng-template>\n `,\n})\nexport class LogoComponent {\n get appInfo(): ApplicationInfo {\n return this.environment.getEnvironment().application;\n }\n\n constructor(private environment: EnvironmentService) {}\n}\n","import { ABP, RoutesService, TreeNode } from '@abp/ng.core';\nimport {\n Component,\n ElementRef,\n Input,\n QueryList,\n Renderer2,\n TrackByFunction,\n ViewChildren,\n} from '@angular/core';\n\n@Component({\n selector: 'abp-routes',\n templateUrl: 'routes.component.html',\n})\nexport class RoutesComponent {\n @Input() smallScreen?: boolean;\n\n @ViewChildren('childrenContainer') childrenContainers!: QueryList<ElementRef<HTMLDivElement>>;\n\n rootDropdownExpand = {} as { [key: string]: boolean };\n\n trackByFn: TrackByFunction<TreeNode<ABP.Route>> = (_, item) => item.name;\n\n constructor(public readonly routesService: RoutesService, protected renderer: Renderer2) {}\n\n isDropdown(node: TreeNode<ABP.Route>) {\n return !node?.isLeaf || this.routesService.hasChildren(node.name);\n }\n\n closeDropdown() {\n this.childrenContainers.forEach(({ nativeElement }) => {\n this.renderer.addClass(nativeElement, 'd-none');\n setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);\n });\n }\n}\n","<ul class=\"navbar-nav\">\n <ng-container\n *ngFor=\"let route of routesService.visible$ | async; trackBy: trackByFn\"\n [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\n [ngTemplateOutletContext]=\"{ $implicit: route }\"\n >\n </ng-container>\n\n <ng-template #defaultLink let-route>\n <li class=\"nav-item\" *abpPermission=\"route.requiredPolicy\">\n <a class=\"nav-link\" [routerLink]=\"[route.path]\"\n ><i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\n {{ route.name | abpLocalization }}</a\n >\n </li>\n </ng-template>\n\n <ng-template #dropdownLink let-route>\n <ng-container *ngIf=\"route.children?.length\">\n <li\n class=\"nav-item dropdown\"\n display=\"static\"\n *abpPermission=\"route.requiredPolicy\"\n (click)=\"\n rootDropdownExpand[route.name]\n ? (rootDropdownExpand[route.name] = false)\n : (rootDropdownExpand[route.name] = true)\n \"\n >\n <a\n class=\"nav-link dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n href=\"javascript:void(0)\"\n >\n <i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\n {{ route.name | abpLocalization }}\n </a>\n <div\n #routeContainer\n class=\"dropdown-menu border-0 shadow-sm\"\n (click)=\"$event.preventDefault(); $event.stopPropagation()\"\n [class.d-block]=\"smallScreen && rootDropdownExpand[route.name]\"\n >\n <ng-container\n *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\"\n ></ng-container>\n </div>\n </li>\n </ng-container>\n </ng-template>\n\n <ng-template #forTemplate let-route>\n <ng-container *ngFor=\"let child of route.children\">\n <ng-template\n [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\"\n ></ng-template>\n </ng-container>\n </ng-template>\n\n <ng-template #defaultChild let-child>\n <ng-container *ngIf=\"child.path\">\n <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\n <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\n {{ child.name | abpLocalization }}</a\n >\n </div>\n </ng-container>\n </ng-template>\n\n <ng-template #dropdownChild let-child>\n <div\n class=\"dropdown-submenu\"\n ngbDropdown\n #dropdownSubmenu=\"ngbDropdown\"\n placement=\"right-top\"\n [autoClose]=\"true\"\n *abpPermission=\"child.requiredPolicy\"\n >\n <div ngbDropdownToggle [class.dropdown-toggle]=\"false\">\n <a\n abpEllipsis=\"210px\"\n [abpEllipsisEnabled]=\"!smallScreen\"\n role=\"button\"\n class=\"btn d-block text-start dropdown-toggle\"\n >\n <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\n {{ child.name | abpLocalization }}\n </a>\n </div>\n <div\n #childrenContainer\n class=\"dropdown-menu dropdown-menu-start border-0 shadow-sm\"\n [class.d-block]=\"smallScreen && dropdownSubmenu.isOpen()\"\n >\n <ng-container *ngTemplateOutlet=\"forTemplate; context: { $implicit: child }\"></ng-container>\n </div>\n </div>\n </ng-template>\n</ul>\n","import { NavItem, NavItemsService } from '@abp/ng.theme.shared';\nimport { Component, Input, TrackByFunction } from '@angular/core';\n\n@Component({\n selector: 'abp-nav-items',\n templateUrl: 'nav-items.component.html',\n})\nexport class NavItemsComponent {\n trackByFn: TrackByFunction<NavItem> = (_, element) => element.id;\n\n constructor(public readonly navItems: NavItemsService) {}\n}\n","<ul class=\"navbar-nav\">\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\n <ng-container *ngIf=\"item.visible && item.visible()\">\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\n <ng-container\n *ngIf=\"item.component; else htmlTemplate\"\n [ngComponentOutlet]=\"item.component\"\n ></ng-container>\n\n <ng-template #htmlTemplate>\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n</ul>\n","import { Component, ViewEncapsulation } from '@angular/core';\nimport { PageAlertService } from '@abp/ng.theme.shared';\n\n@Component({\n selector: 'abp-page-alert-container',\n templateUrl: './page-alert-container.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class PageAlertContainerComponent {\n constructor(public service: PageAlertService) {}\n}\n","<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\n <div\n class=\"alert alert-{{ alert.type }} fade show\"\n [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\n role=\"alert\"\n >\n <h4 class=\"alert-heading\" *ngIf=\"alert.title\">\n {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\n </h4>\n {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\n <button\n *ngIf=\"alert.dismissible\"\n type=\"button\"\n class=\"close\"\n data-dismiss=\"alert\"\n aria-label=\"Close\"\n (click)=\"service.remove(i)\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n</ng-container>\n","import { TenantBoxService } from '@abp/ng.account.core';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-tenant-box',\n templateUrl: './tenant-box.component.html',\n providers: [TenantBoxService],\n})\nexport class TenantBoxComponent {\n constructor(public service: TenantBoxService) {}\n}\n","<ng-container *ngIf=\"(service.currentTenant$ | async) || { name: '' } as currentTenant\">\n <div class=\"card shadow-sm rounded mb-3\">\n <div class=\"card-body px-5\">\n <div class=\"row\">\n <div class=\"col\">\n <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\n 'AbpUiMultiTenancy::Tenant' | abpLocalization\n }}</span\n ><br />\n <h6 class=\"m-0 d-inline-block\">\n <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\n </h6>\n </div>\n <div class=\"col-auto\">\n <a\n id=\"AbpTenantSwitchLink\"\n href=\"javascript:void(0);\"\n class=\"btn btn-sm mt-3 btn-outline-primary\"\n (click)=\"service.onSwitch()\"\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\n >\n </div>\n </div>\n </div>\n </div>\n\n <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\n <ng-template #abpHeader>\n <h5>Switch Tenant</h5>\n </ng-template>\n <ng-template #abpBody>\n <form (ngSubmit)=\"service.save()\">\n <div class=\"mt-2\">\n <div class=\"mb-3 form-group\">\n <label for=\"name\" class=\"form-label\">{{\n 'AbpUiMultiTenancy::Name' | abpLocalization\n }}</label>\n <input\n [(ngModel)]=\"service.name\"\n type=\"text\"\n id=\"name\"\n name=\"tenant\"\n class=\"form-control\"\n autofocus\n />\n </div>\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\n </div>\n </form>\n </ng-template>\n <ng-template #abpFooter>\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\n </button>\n <abp-button\n type=\"abp-button\"\n iconClass=\"fa fa-check\"\n (click)=\"service.save()\"\n [disabled]=\"currentTenant?.name === service.name\"\n >\n <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\n </abp-button>\n </ng-template>\n </abp-modal>\n</ng-container>\n","import { AuthWrapperService } from '@abp/ng.account.core';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'abp-auth-wrapper',\n templateUrl: './auth-wrapper.component.html',\n providers: [AuthWrapperService],\n})\nexport class AuthWrapperComponent {\n constructor(public service: AuthWrapperService) {}\n}\n","<div class=\"row\">\n <div class=\"mx-auto col col-md-5\">\n <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\n <abp-tenant-box\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\n ></abp-tenant-box>\n </ng-container>\n\n <div class=\"abp-account-container\">\n <div\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\n class=\"card mt-3 shadow-sm rounded\"\n >\n <div class=\"card-body p-5\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #disableLocalLoginTemplate>\n <div class=\"alert alert-warning\">\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\n </div>\n</ng-template>\n","import { AfterViewInit, Component } from '@angular/core';\nimport { eLayoutType, SubscriptionService } from '@abp/ng.core';\nimport { LayoutService } from '../../services/layout.service';\n\n@Component({\n selector: 'abp-layout-account',\n templateUrl: './account-layout.component.html',\n providers: [LayoutService, SubscriptionService],\n})\nexport class AccountLayoutComponent implements AfterViewInit {\n // required for dynamic component\n static type = eLayoutType.account;\n\n authWrapperKey = 'Account.AuthWrapperComponent';\n\n constructor(public service: LayoutService) {}\n\n ngAfterViewInit() {\n this.service.subscribeWindowSize();\n }\n}\n","<nav\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\n id=\"main-navbar\"\n style=\"min-height: 4rem\"\n>\n <div class=\"container\">\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n [attr.aria-expanded]=\"!service.isCollapsed\"\n (click)=\"service.isCollapsed = !service.isCollapsed\"\n >\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div\n class=\"navbar-collapse\"\n [class.overflow-hidden]=\"service.smallScreen\"\n id=\"main-navbar-collapse\"\n >\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\n\n <div\n *ngIf=\"service.smallScreen\"\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\n >\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\n </div>\n\n <ng-template #navigations>\n <abp-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: {\n smallScreen: { value: service.smallScreen }\n }\n }\"\n class=\"mx-auto\"\n [smallScreen]=\"service.smallScreen\"\n ></abp-routes>\n\n <abp-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></abp-nav-items>\n </ng-template>\n </div>\n </div>\n</nav>\n\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\n<div class=\"container\">\n <abp-page-alert-container></abp-page-alert-container>\n <abp-auth-wrapper\n *abpReplaceableTemplate=\"{\n componentKey: authWrapperKey\n }\"\n >\n <router-outlet #outlet=\"outlet\"></router-outlet>\n </abp-auth-wrapper>\n</div>\n","import { eLayoutType, SubscriptionService } from '@abp/ng.core';\nimport { collapseWithMargin, slideFromBottom } from '@abp/ng.theme.shared';\nimport { AfterViewInit, Component } from '@angular/core';\nimport { LayoutService } from '../../services/layout.service';\n\n@Component({\n selector: 'abp-layout-application',\n templateUrl: './application-layout.component.html',\n animations: [slideFromBottom, collapseWithMargin],\n providers: [LayoutService, SubscriptionService],\n})\nexport class ApplicationLayoutComponent implements AfterViewInit {\n // required for dynamic component\n static type = eLayoutType.application;\n\n constructor(public service: LayoutService) {}\n\n ngAfterViewInit() {\n this.service.subscribeWindowSize();\n }\n}\n","<nav\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\n id=\"main-navbar\"\n style=\"min-height: 4rem\"\n>\n <div class=\"container\">\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n [attr.aria-expanded]=\"!service.isCollapsed\"\n (click)=\"service.isCollapsed = !service.isCollapsed\"\n >\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\n\n <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\n </div>\n\n <ng-template #navigations>\n <abp-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: {\n smallScreen: { value: service.smallScreen }\n }\n }\"\n class=\"mx-auto\"\n [smallScreen]=\"service.smallScreen\"\n ></abp-routes>\n\n <abp-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></abp-nav-items>\n </ng-template>\n </div>\n </div>\n</nav>\n\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\n<div class=\"container\">\n <abp-page-alert-container></abp-page-alert-container>\n\n <router-outlet #outlet=\"outlet\"></router-outlet>\n</div>\n","import { Component } from '@angular/core';\nimport { eLayoutType } from '@abp/ng.core';\n\n@Component({\n selector: 'abp-layout-empty',\n template: `\n <router-outlet></router-outlet>\n <abp-confirmation></abp-confirmation>\n `,\n})\nexport class EmptyLayoutComponent {\n static type = eLayoutType.empty;\n}\n","import {\n AuthService,\n ConfigStateService,\n CurrentUserDto,\n NAVIGATE_TO_MANAGE_PROFILE,\n SessionStateService,\n} from '@abp/ng.core';\nimport { Component, Inject } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'abp-current-user',\n templateUrl: './current-user.component.html',\n})\nexport class CurrentUserComponent {\n currentUser$: Observable<CurrentUserDto> = this.configState.getOne$('currentUser');\n selectedTenant$ = this.sessionState.getTenant$();\n\n get smallScreen(): boolean {\n return window.innerWidth < 992;\n }\n\n constructor(\n @Inject(NAVIGATE_TO_MANAGE_PROFILE) public navigateToManageProfile: () => void,\n private authService: AuthService,\n private configState: ConfigStateService,\n private sessionState: SessionStateService,\n ) {}\n\n navigateToLogin() {\n this.authService.navigateToLogin();\n }\n\n logout() {\n this.authService.logout().subscribe();\n }\n}\n","<ng-template #loginBtn>\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\n 'AbpAccount::Login' | abpLocalization\n }}</a>\n</ng-template>\n<div\n *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\n ngbDropdown\n class=\"dropdown\"\n #currentUserDropdown=\"ngbDropdown\"\n display=\"static\"\n>\n <a\n ngbDropdownToggle\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n role=\"button\"\n id=\"dropdownMenuLink\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\n ><i>{{ tenantName }}</i\n >\\</small\n >\n <strong>{{ (currentUser$ | async)?.userName }}</strong>\n </a>\n <div\n class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\n aria-labelledby=\"dropdownMenuLink\"\n [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\n >\n <a class=\"dropdown-item pointer\" (click)=\"navigateToManageProfile()\"\n ><i class=\"fa fa-cog me-1\"></i>{{ 'AbpAccount::MyAccount' | abpLocalization }}</a\n >\n <a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"logout()\"\n ><i class=\"fa fa-power-off me-1\"></i>{{ 'AbpUi::Logout' | abpLocalization }}</a\n >\n </div>\n</div>\n","import { ConfigStateService, LanguageInfo, SessionStateService } from '@abp/ng.core';\nimport { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Component({\n selector: 'abp-languages',\n template: `\n <div\n *ngIf=\"((dropdownLanguages$ | async)?.length || 0) > 0\"\n class=\"dropdown\"\n ngbDropdown\n #languageDropdown=\"ngbDropdown\"\n display=\"static\"\n >\n <a\n ngbDropdownToggle\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n role=\"button\"\n id=\"dropdownMenuLink\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {{ defaultLanguage$ | async }}\n </a>\n <div\n class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\n aria-labelledby=\"dropdownMenuLink\"\n [class.d-block]=\"smallScreen && languageDropdown.isOpen()\"\n >\n <a\n *ngFor=\"let lang of dropdownLanguages$ | async\"\n href=\"javascript:void(0)\"\n class=\"dropdown-item\"\n (click)=\"onChangeLang(lang.cultureName || '')\"\n >{{ lang?.displayName }}</a\n >\n </div>\n </div>\n `,\n})\nexport class LanguagesComponent {\n get smallScreen(): boolean {\n return window.innerWidth < 992;\n }\n\n languages$: Observable<LanguageInfo[]> = this.configState.getDeep$('localization.languages');\n\n get defaultLanguage$(): Observable<string> {\n return this.languages$.pipe(\n map(\n languages =>\n languages?.find(lang => lang.cultureName === this.selectedLangCulture)?.displayName || '',\n ),\n );\n }\n\n get dropdownLanguages$(): Observable<LanguageInfo[]> {\n return this.languages$.pipe(\n map(\n languages => languages?.filter(lang => lang.cultureName !== this.selectedLangCulture) || [],\n ),\n );\n }\n\n get selectedLangCulture(): string {\n return this.sessionState.getLanguage();\n }\n\n constructor(private sessionState: SessionStateService, private configState: ConfigStateService) {}\n\n onChangeLang(cultureName: string) {\n this.sessionState.setLanguage(cultureName);\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core';\n\n@Component({\n selector: 'abp-validation-error',\n template: `\n <div class=\"invalid-feedback\" *ngFor=\"let error of abpErrors; trackBy: trackByFn\">\n {{ error.message | abpLocalization: error.interpoliteParams }}\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ValidationErrorComponent extends ErrorComponent {\n get abpErrors(): (Validation.Error & { interpoliteParams?: string[] })[] {\n if (!this.errors || !this.errors.length) return [];\n\n return this.errors.map(error => {\n if (!error.message) return error;\n\n const index = error.message.indexOf('[');\n\n if (index > -1) {\n return {\n ...error,\n message: error.message.slice(0, index),\n interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','),\n };\n }\n\n return error;\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LAZY_STYLES = new InjectionToken<string[]>('LAZY_STYLES');\n","import { LazyLoadService, LOADING_STRATEGY } from '@abp/ng.core';\nimport { DocumentDirHandlerService, LocaleDirection } from '@abp/ng.theme.shared';\nimport { Injectable, Injector } from '@angular/core';\nimport { LAZY_STYLES } from '../tokens/lazy-styles.token';\nexport const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';\n\n@Injectable()\nexport class LazyStyleHandler {\n private lazyLoad!: LazyLoadService;\n private styles!: string[];\n private _dir: LocaleDirection = 'ltr';\n\n readonly loaded = new Map<string, HTMLLinkElement>();\n\n set dir(dir: LocaleDirection) {\n if (dir === this._dir) return;\n\n this.switchCSS(dir);\n this._dir = dir;\n }\n\n get dir(): LocaleDirection {\n return this._dir;\n }\n\n constructor(injector: Injector) {\n this.setStyles(injector);\n this.setLazyLoad(injector);\n this.listenToDirectionChanges(injector);\n }\n\n private getHrefFromLink(link: HTMLLinkElement | null | undefined): string {\n if (!link) return '';\n\n const a = document.createElement('a');\n a.href = link.href;\n return a.pathname.replace(/^\\//, '');\n }\n\n private getLoadedBootstrap(): LoadedStyle {\n const href = createLazyStyleHref(BOOTSTRAP, this.dir);\n const selector = `[href*=\"${href.replace(/\\.css$/, '')}\"]`;\n const link = document.querySelector<HTMLLinkElement>(selector);\n return { href, link };\n }\n\n private listenToDirectionChanges(injector: Injector) {\n const docDirHandler = injector.get(DocumentDirHandlerService);\n\n // will always listen, no need to unsubscribe\n docDirHandler.dir$.subscribe(dir => {\n this.dir = dir;\n });\n }\n\n private setLazyLoad(injector: Injector) {\n this.lazyLoad = injector.get(LazyLoadService);\n const { href, link } = this.getLoadedBootstrap();\n this.lazyLoad.loaded.set(href, link);\n }\n\n private setStyles(injector: Injector) {\n this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);\n }\n\n private switchCSS(dir: LocaleDirection) {\n this.styles.forEach(style => {\n const oldHref = createLazyStyleHref(style, this.dir);\n const newHref = createLazyStyleHref(style, dir);\n const link = this.loaded.get(newHref);\n const href = this.getHrefFromLink(link) || newHref;\n\n const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);\n this.lazyLoad.load(strategy).subscribe(() => {\n const oldLink = this.lazyLoad.loaded.get(oldHref) as HTMLLinkElement;\n this.loaded.delete(newHref);\n this.loaded.set(oldHref, oldLink);\n const newLink = this.lazyLoad.loaded.get(href) as HTMLLinkElement;\n this.lazyLoad.loaded.delete(href);\n this.lazyLoad.loaded.set(newHref, newLink);\n this.lazyLoad.remove(oldHref);\n });\n });\n }\n}\n\nexport function createLazyStyleHref(style: string, dir: string): string {\n return style.replace(/{{\\s*dir\\s*}}/g, dir);\n}\n\nexport function initLazyStyleHandler(injector: Injector) {\n return () => new LazyStyleHandler(injector);\n}\n\ninterface LoadedStyle {\n href: string;\n link: HTMLLinkElement | null;\n}\n","import { NavItemsService } from '@abp/ng.theme.shared';\nimport { APP_INITIALIZER } from '@angular/core';\nimport { CurrentUserComponent } from '../components/nav-items/current-user.component';\nimport { LanguagesComponent } from '../components/nav-items/languages.component';\nimport { eThemeBasicComponents } from '../enums/components';\n\nexport const BASIC_THEME_NAV_ITEM_PROVIDERS = [\n {\n provide: APP_INITIALIZER,\n useFactory: configureNavItems,\n deps: [NavItemsService],\n multi: true,\n },\n];\n\nexport function configureNavItems(navItems: NavItemsService) {\n return () => {\n navItems.addItems([\n {\n id: eThemeBasicComponents.Languages,\n order: 100,\n component: LanguagesComponent,\n },\n {\n id: eThemeBasicComponents.CurrentUser,\n order: 100,\n component: CurrentUserComponent,\n },\n ]);\n };\n}\n","export default `\n.content-header-title {\n font-size: 24px;\n}\n.entry-row {\n margin-bottom: 15px;\n}\n#main-navbar-tools a.dropdown-toggle {\n text-decoration: none;\n color: #fff;\n}\n.navbar .dropdown-submenu {\n position: relative;\n}\n.navbar .dropdown-menu {\n margin: 0;\n padding: 0;\n}\n.navbar .dropdown-menu a {\n font-size: .9em;\n padding: 10px 15px;\n display: block;\n min-width: 210px;\n text-align: left;\n border-radius: 0.25rem;\n min-height: 44px;\n}\n[dir=rtl] .navbar .dropdown-menu a {\n text-align: right!important;\n}\n.navbar .dropdown-submenu a::after {\n transform: rotate(-90deg);\n position: absolute;\n right: 16px;\n top: 18px;\n}\n[dir=rtl] .navbar .dropdown-submenu a::after {\n transform: rotate(90deg);\n left: 16px;\n right: auto;\n top: 20px;\n}\n.navbar .dropdown-submenu .dropdown-menu {\n top: 0;\n left: 100%;\n}\n/* work around for rtl. Track https://github.com/ng-bootstrap/ng-bootstrap/issues/4100 issue */\n[dir=rtl] .navbar .dropdown-submenu .dropdown-menu {\n top: 0;\n right: 100%;\n}\n.card-header .btn {\n padding: 2px 6px;\n}\n.card-header h5 {\n margin: 0;\n}\n.container > .card {\n box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n@media screen and (min-width: 992px) {\n .navbar .dropdown:hover > .dropdown-menu {\n display: block;\n }\n\n .navbar .dropdown-submenu:hover > .dropdown-menu {\n display: block;\n }\n}\n.input-validation-error {\n border-color: #dc3545;\n}\n.field-validation-error {\n font-size: 0.8em;\n}\n.ui-table .ui-table-tbody > tr.empty-row > div.empty-row-content {\n border: 1px solid #c8c8c8;\n }\n.abp-loading {\n background: rgba(0, 0, 0, 0.05);\n}\n.modal-backdrop {\nbackground-color: rgba(0, 0, 0, 0.6);\n}\n\n.confirmation .confirmation-backdrop {\n\t background: rgba(0, 0, 0, 0.7) !important;\n}\n .confirmation .confirmation-dialog {\n\t border: none;\n\t border-radius: 10px;\n\t background-color: #fff;\n\t box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.5);\n}\n .confirmation .confirmation-dialog .icon-container .icon {\n\t stroke: #fff;\n\t color: #fff;\n}\n .confirmation .confirmation-dialog .icon-container.info .icon {\n\t stroke: #2f96b4;\n\t color: #2f96b4;\n}\n .confirmation .confirmation-dialog .icon-container.success .icon {\n\t stroke: #51a351;\n\t color: #51a351;\n}\n .confirmation .confirmation-dialog .icon-container.warning .icon {\n\t stroke: #f89406;\n\t color: #f89406;\n}\n .confirmation .confirmation-dialog .icon-container.error .icon {\n\t stroke: #bd362f;\n\t color: #bd362f;\n}\n .confirmation .confirmation-dialog .content .title {\n\t color: #222;\n}\n .confirmation .confirmation-dialog .content .message {\n\t color: #777;\n}\n .confirmation .confirmation-dialog .footer {\n\t background: transparent;\n}\n .confirmation .confirmation-dialog .footer .confirmation-button {\n\t background-color: #eee;\n\t color: #777;\n}\n .confirmation .confirmation-dialog .footer .confirmation-button:hover, .confirmation .confirmation-dialog .footer .confirmation-button:focus, .confirmation .confirmation-dialog .footer .confirmation-button:active {\n\t background-color: #bbb;\n}\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm {\n\t background-color: #2f96b4;\n\t color: #fff;\n}\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm:hover {\n\t background-color: #2e819b;\n}\n.ui-table .pagination-wrapper {\n background-color: #f4f4f4;\n border: 1px solid #c8c8c8;\n}\n.bordered .datatable-body-row {\n border-top: 1px solid #eee;\n margin-top: -1px;\n}\n.breadcrumb {\n background-color: transparent;\n padding: 0.27rem;\n}\n`;\n","import { CONTENT_STRATEGY, DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';\nimport { APP_INITIALIZER } from '@angular/core';\nimport { AccountLayoutComponent } from '../components/account-layout/account-layout.component';\nimport { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';\nimport { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';\nimport styles from '../constants/styles';\nimport { eThemeBasicComponents } from '../enums/components';\n\nexport const BASIC_THEME_STYLES_PROVIDERS = [\n {\n provide: APP_INITIALIZER,\n useFactory: configureStyles,\n deps: [DomInsertionService, ReplaceableComponentsService],\n multi: true,\n },\n];\n\nexport function configureStyles(\n domInsertion: DomInsertionService,\n replaceableComponents: ReplaceableComponentsService,\n) {\n return () => {\n domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\n\n initLayouts(replaceableComponents);\n };\n}\n\nfunction initLayouts(replaceableComponents: ReplaceableComponentsService) {\n replaceableComponents.add({\n key: eThemeBasicComponents.ApplicationLayout,\n component: ApplicationLayoutComponent,\n });\n replaceableComponents.add({\n key: eThemeBasicComponents.AccountLayout,\n component: AccountLayoutComponent,\n });\n replaceableComponents.add({\n key: eThemeBasicComponents.EmptyLayout,\n component: EmptyLayoutComponent,\n });\n}\n","import { CoreModule, noop } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\nimport {\n NgxValidateCoreModule,\n VALIDATION_ERROR_TEMPLATE,\n VALIDATION_INVALID_CLASSES,\n VALIDATION_TARGET_SELECTOR,\n} from '@ngx-validate/core';\nimport { AccountLayoutComponent } from './components/account-layout/account-layout.component';\nimport { AuthWrapperComponent } from './components/account-layout/auth-wrapper/auth-wrapper.component';\nimport { TenantBoxComponent } from './components/account-layout/tenant-box/tenant-box.component';\nimport { ApplicationLayoutComponent } from './components/application-layout/application-layout.component';\nimport { EmptyLayoutComponent } from './components/empty-layout/empty-layout.component';\nimport { LogoComponent } from './components/logo/logo.component';\nimport { CurrentUserComponent } from './components/nav-items/current-user.component';\nimport { LanguagesComponent } from './components/nav-items/languages.component';\nimport { NavItemsComponent } from './components/nav-items/nav-items.component';\nimport { PageAlertContainerComponent } from './components/page-alert-container/page-alert-container.component';\nimport { RoutesComponent } from './components/routes/routes.component';\nimport { ValidationErrorComponent } from './components/validation-error/validation-error.component';\nimport { LazyStyleHandler } from './handlers/lazy-style.handler';\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './providers/nav-item.provider';\nimport { BASIC_THEME_STYLES_PROVIDERS } from './providers/styles.provider';\n\nexport const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];\n\n@NgModule({\n declarations: [\n ...LAYOUTS,\n ValidationErrorComponent,\n LogoComponent,\n NavItemsComponent,\n RoutesComponent,\n CurrentUserComponent,\n LanguagesComponent,\n PageAlertContainerComponent,\n TenantBoxComponent,\n AuthWrapperComponent,\n ],\n exports: [\n ...LAYOUTS,\n ValidationErrorComponent,\n LogoComponent,\n NavItemsComponent,\n RoutesComponent,\n CurrentUserComponent,\n LanguagesComponent,\n PageAlertContainerComponent,\n ],\n imports: [\n CoreModule,\n ThemeSharedModule,\n NgbCollapseModule,\n NgbDropdownModule,\n NgxValidateCoreModule,\n ],\n entryComponents: [...LAYOUTS, ValidationErrorComponent, CurrentUserComponent, LanguagesComponent],\n})\nexport class BaseThemeBasicModule {}\n\n@NgModule({\n exports: [BaseThemeBasicModule],\n imports: [BaseThemeBasicModule],\n})\nexport class ThemeBasicModule {\n static forRoot(): ModuleWithProviders<ThemeBasicModule> {\n return {\n ngModule: ThemeBasicModule,\n providers: [\n BASIC_THEME_NAV_ITEM_PROVIDERS,\n BASIC_THEME_STYLES_PROVIDERS,\n {\n provide: VALIDATION_ERROR_TEMPLATE,\n useValue: ValidationErrorComponent,\n },\n {\n provide: VALIDATION_TARGET_SELECTOR,\n useValue: '.form-group',\n },\n {\n provide: VALIDATION_INVALID_CLASSES,\n useValue: 'is-invalid',\n },\n LazyStyleHandler,\n {\n provide: APP_INITIALIZER,\n useFactory: noop,\n multi: true,\n deps: [LazyStyleHandler],\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of theme-basic\n */\n\nexport * from './lib/components';\nexport * from './lib/enums';\nexport * from './lib/handlers';\nexport * from './lib/models';\nexport * from './lib/providers';\nexport * from './lib/theme-basic.module';\nexport * from './lib/tokens';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromEvent","debounceTime","Injectable","Component","Input","ViewChildren","ViewEncapsulation","TenantBoxService","AuthWrapperService","SubscriptionService","slideFromBottom","collapseWithMargin","NAVIGATE_TO_MANAGE_PROFILE","Inject","map","ErrorComponent","ChangeDetectionStrategy","InjectionToken","DocumentDirHandlerService","LazyLoadService","LOADING_STRATEGY","APP_INITIALIZER","NavItemsService","DomInsertionService","ReplaceableComponentsService","CONTENT_STRATEGY","CoreModule","ThemeSharedModule","NgbCollapseModule","NgbDropdownModule","NgxValidateCoreModule","NgModule","VALIDATION_ERROR_TEMPLATE","VALIDATION_TARGET_SELECTOR","VALIDATION_INVALID_CLASSES","noop"],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { SubscriptionService } from '@abp/ng.core';
|
|
3
|
-
import { LayoutService } from '../../services/layout.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../services/layout.service";
|
|
6
|
-
import * as i2 from "../logo/logo.component";
|
|
7
|
-
import * as i3 from "../routes/routes.component";
|
|
8
|
-
import * as i4 from "../nav-items/nav-items.component";
|
|
9
|
-
import * as i5 from "../page-alert-container/page-alert-container.component";
|
|
10
|
-
import * as i6 from "./auth-wrapper/auth-wrapper.component";
|
|
11
|
-
import * as i7 from "@ng-bootstrap/ng-bootstrap";
|
|
12
|
-
import * as i8 from "@abp/ng.core";
|
|
13
|
-
import * as i9 from "@angular/common";
|
|
14
|
-
import * as i10 from "@angular/router";
|
|
15
|
-
export class AccountLayoutComponent {
|
|
16
|
-
constructor(service) {
|
|
17
|
-
this.service = service;
|
|
18
|
-
this.authWrapperKey = 'Account.AuthWrapperComponent';
|
|
19
|
-
}
|
|
20
|
-
ngAfterViewInit() {
|
|
21
|
-
this.service.subscribeWindowSize();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
// required for dynamic component
|
|
25
|
-
AccountLayoutComponent.type = "account" /* account */;
|
|
26
|
-
AccountLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AccountLayoutComponent, deps: [{ token: i1.LayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
AccountLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: AccountLayoutComponent, selector: "abp-layout-account", providers: [LayoutService, SubscriptionService], ngImport: i0, template: "<nav\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\n id=\"main-navbar\"\n style=\"min-height: 4rem\"\n>\n <div class=\"container\">\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n [attr.aria-expanded]=\"!service.isCollapsed\"\n (click)=\"service.isCollapsed = !service.isCollapsed\"\n >\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div\n class=\"navbar-collapse\"\n [class.overflow-hidden]=\"service.smallScreen\"\n id=\"main-navbar-collapse\"\n >\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\n\n <div\n *ngIf=\"service.smallScreen\"\n [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\n >\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\n </div>\n\n <ng-template #navigations>\n <abp-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: {\n smallScreen: { value: service.smallScreen }\n }\n }\"\n class=\"mx-auto\"\n [smallScreen]=\"service.smallScreen\"\n ></abp-routes>\n\n <abp-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></abp-nav-items>\n </ng-template>\n </div>\n </div>\n</nav>\n\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\n<div class=\"container\">\n <abp-page-alert-container></abp-page-alert-container>\n <abp-auth-wrapper\n *abpReplaceableTemplate=\"{\n componentKey: authWrapperKey\n }\"\n >\n <router-outlet #outlet=\"outlet\"></router-outlet>\n </abp-auth-wrapper>\n</div>\n", components: [{ type: i2.LogoComponent, selector: "abp-logo" }, { type: i3.RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { type: i4.NavItemsComponent, selector: "abp-nav-items" }, { type: i5.PageAlertContainerComponent, selector: "abp-page-alert-container" }, { type: i6.AuthWrapperComponent, selector: "abp-auth-wrapper" }], directives: [{ type: i7.NgbNavbar, selector: ".navbar" }, { type: i8.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AccountLayoutComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{
|
|
31
|
-
selector: 'abp-layout-account',
|
|
32
|
-
templateUrl: './account-layout.component.html',
|
|
33
|
-
providers: [LayoutService, SubscriptionService],
|
|
34
|
-
}]
|
|
35
|
-
}], ctorParameters: function () { return [{ type: i1.LayoutService }]; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1sYXlvdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUtYmFzaWMvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnQtbGF5b3V0L2FjY291bnQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50LWxheW91dC9hY2NvdW50LWxheW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPOUQsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUFtQixPQUFzQjtRQUF0QixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBRnpDLG1CQUFjLEdBQUcsOEJBQThCLENBQUM7SUFFSixDQUFDO0lBRTdDLGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckMsQ0FBQzs7QUFURCxpQ0FBaUM7QUFDMUIsMkJBQUksMkJBQXVCO29IQUZ2QixzQkFBc0I7d0dBQXRCLHNCQUFzQiw2Q0FGdEIsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsMEJDUGpELDhnRUE4REE7NEZEckRhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxTQUFTLEVBQUUsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUM7aUJBQ2hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBlTGF5b3V0VHlwZSwgU3Vic2NyaXB0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbGF5b3V0LWFjY291bnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWNjb3VudC1sYXlvdXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtMYXlvdXRTZXJ2aWNlLCBTdWJzY3JpcHRpb25TZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudExheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAvLyByZXF1aXJlZCBmb3IgZHluYW1pYyBjb21wb25lbnRcbiAgc3RhdGljIHR5cGUgPSBlTGF5b3V0VHlwZS5hY2NvdW50O1xuXG4gIGF1dGhXcmFwcGVyS2V5ID0gJ0FjY291bnQuQXV0aFdyYXBwZXJDb21wb25lbnQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnNlcnZpY2Uuc3Vic2NyaWJlV2luZG93U2l6ZSgpO1xuICB9XG59XG4iLCI8bmF2XG4gIGNsYXNzPVwibmF2YmFyIG5hdmJhci1leHBhbmQtbGcgbmF2YmFyLWRhcmsgYmctZGFyayBzaGFkb3ctc20gZmxleC1jb2x1bW4gZmxleC1tZC1yb3cgbWItNFwiXG4gIGlkPVwibWFpbi1uYXZiYXJcIlxuICBzdHlsZT1cIm1pbi1oZWlnaHQ6IDRyZW1cIlxuPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGFicC1sb2dvICphYnBSZXBsYWNlYWJsZVRlbXBsYXRlPVwieyBjb21wb25lbnRLZXk6IHNlcnZpY2UubG9nb0NvbXBvbmVudEtleSB9XCI+PC9hYnAtbG9nbz5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cIm5hdmJhci10b2dnbGVyXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCIhc2VydmljZS5pc0NvbGxhcHNlZFwiXG4gICAgICAoY2xpY2spPVwic2VydmljZS5pc0NvbGxhcHNlZCA9ICFzZXJ2aWNlLmlzQ29sbGFwc2VkXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cIm5hdmJhci10b2dnbGVyLWljb25cIj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJuYXZiYXItY29sbGFwc2VcIlxuICAgICAgW2NsYXNzLm92ZXJmbG93LWhpZGRlbl09XCJzZXJ2aWNlLnNtYWxsU2NyZWVuXCJcbiAgICAgIGlkPVwibWFpbi1uYXZiYXItY29sbGFwc2VcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCIhc2VydmljZS5zbWFsbFNjcmVlbiA/IG5hdmlnYXRpb25zIDogbnVsbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwic2VydmljZS5zbWFsbFNjcmVlblwiXG4gICAgICAgIFtAY29sbGFwc2VXaXRoTWFyZ2luXT1cInNlcnZpY2UuaXNDb2xsYXBzZWQgPyAnY29sbGFwc2VkJyA6ICdleHBhbmRlZCdcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmF2aWdhdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctdGVtcGxhdGUgI25hdmlnYXRpb25zPlxuICAgICAgICA8YWJwLXJvdXRlc1xuICAgICAgICAgICphYnBSZXBsYWNlYWJsZVRlbXBsYXRlPVwie1xuICAgICAgICAgICAgY29tcG9uZW50S2V5OiBzZXJ2aWNlLnJvdXRlc0NvbXBvbmVudEtleSxcbiAgICAgICAgICAgIGlucHV0czoge1xuICAgICAgICAgICAgICBzbWFsbFNjcmVlbjogeyB2YWx1ZTogc2VydmljZS5zbWFsbFNjcmVlbiB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVwiXG4gICAgICAgICAgY2xhc3M9XCJteC1hdXRvXCJcbiAgICAgICAgICBbc21hbGxTY3JlZW5dPVwic2VydmljZS5zbWFsbFNjcmVlblwiXG4gICAgICAgID48L2FicC1yb3V0ZXM+XG5cbiAgICAgICAgPGFicC1uYXYtaXRlbXNcbiAgICAgICAgICAqYWJwUmVwbGFjZWFibGVUZW1wbGF0ZT1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudEtleTogc2VydmljZS5uYXZJdGVtc0NvbXBvbmVudEtleVxuICAgICAgICAgIH1cIlxuICAgICAgICA+PC9hYnAtbmF2LWl0ZW1zPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25hdj5cblxuPCEtLSBbQHNsaWRlRnJvbUJvdHRvbV09XCJvdXRsZXQuaXNBY3RpdmF0ZWQgJiYgb3V0bGV0LmFjdGl2YXRlZFJvdXRlPy5yb3V0ZUNvbmZpZz8ucGF0aFwiIFRPRE86IHRocm93cyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2sgd2hlbiBhbmltYXRpb24gaXMgYWN0aXZlLiBJdCBzaG91bGQgYmUgZml4ZWQgLS0+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxhYnAtcGFnZS1hbGVydC1jb250YWluZXI+PC9hYnAtcGFnZS1hbGVydC1jb250YWluZXI+XG4gIDxhYnAtYXV0aC13cmFwcGVyXG4gICAgKmFicFJlcGxhY2VhYmxlVGVtcGxhdGU9XCJ7XG4gICAgICBjb21wb25lbnRLZXk6IGF1dGhXcmFwcGVyS2V5XG4gICAgfVwiXG4gID5cbiAgICA8cm91dGVyLW91dGxldCAjb3V0bGV0PVwib3V0bGV0XCI+PC9yb3V0ZXItb3V0bGV0PlxuICA8L2FicC1hdXRoLXdyYXBwZXI+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AuthWrapperService } from '@abp/ng.account.core';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@abp/ng.account.core";
|
|
5
|
-
import * as i2 from "../tenant-box/tenant-box.component";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "@abp/ng.core";
|
|
8
|
-
export class AuthWrapperComponent {
|
|
9
|
-
constructor(service) {
|
|
10
|
-
this.service = service;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
AuthWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AuthWrapperComponent, deps: [{ token: i1.AuthWrapperService }], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
-
AuthWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: AuthWrapperComponent, selector: "abp-auth-wrapper", providers: [AuthWrapperService], ngImport: i0, template: "<div class=\"row\">\n <div class=\"mx-auto col col-md-5\">\n <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\n <abp-tenant-box\n *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\n ></abp-tenant-box>\n </ng-container>\n\n <div class=\"abp-account-container\">\n <div\n *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\n class=\"card mt-3 shadow-sm rounded\"\n >\n <div class=\"card-body p-5\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #disableLocalLoginTemplate>\n <div class=\"alert alert-warning\">\n <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\n {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\n </div>\n</ng-template>\n", components: [{ type: i2.TenantBoxComponent, selector: "abp-tenant-box" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }], pipes: { "async": i3.AsyncPipe, "abpLocalization": i4.LocalizationPipe } });
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: AuthWrapperComponent, decorators: [{
|
|
16
|
-
type: Component,
|
|
17
|
-
args: [{
|
|
18
|
-
selector: 'abp-auth-wrapper',
|
|
19
|
-
templateUrl: './auth-wrapper.component.html',
|
|
20
|
-
providers: [AuthWrapperService],
|
|
21
|
-
}]
|
|
22
|
-
}], ctorParameters: function () { return [{ type: i1.AuthWrapperService }]; } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50LWxheW91dC9hdXRoLXdyYXBwZXIvYXV0aC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50LWxheW91dC9hdXRoLXdyYXBwZXIvYXV0aC13cmFwcGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQU8xQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW1CLE9BQTJCO1FBQTNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO0lBQUcsQ0FBQzs7a0hBRHZDLG9CQUFvQjtzR0FBcEIsb0JBQW9CLDJDQUZwQixDQUFDLGtCQUFrQixDQUFDLDBCQ05qQywwNUJBMkJBOzRGRG5CYSxvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsV0FBVyxFQUFFLCtCQUErQjtvQkFDNUMsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aFdyYXBwZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5hY2NvdW50LmNvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1hdXRoLXdyYXBwZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC13cmFwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbQXV0aFdyYXBwZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFdyYXBwZXJDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VydmljZTogQXV0aFdyYXBwZXJTZXJ2aWNlKSB7fVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwibXgtYXV0byBjb2wgY29sLW1kLTVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHNlcnZpY2UuaXNNdWx0aVRlbmFuY3lFbmFibGVkJCB8IGFzeW5jKSAmJiBzZXJ2aWNlLmlzVGVuYW50Qm94VmlzaWJsZVwiPlxuICAgICAgPGFicC10ZW5hbnQtYm94XG4gICAgICAgICphYnBSZXBsYWNlYWJsZVRlbXBsYXRlPVwieyBjb21wb25lbnRLZXk6IHNlcnZpY2UudGVuYW50Qm94S2V5IH1cIlxuICAgICAgPjwvYWJwLXRlbmFudC1ib3g+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWJwLWFjY291bnQtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwic2VydmljZS5lbmFibGVMb2NhbExvZ2luJCB8IGFzeW5jOyBlbHNlIGRpc2FibGVMb2NhbExvZ2luVGVtcGxhdGVcIlxuICAgICAgICBjbGFzcz1cImNhcmQgbXQtMyBzaGFkb3ctc20gcm91bmRlZFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC01XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGVMb2NhbExvZ2luVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nXCI+XG4gICAgPHN0cm9uZz57eyAnQWJwQWNjb3VudDo6SW52YWxpZExvZ2luUmVxdWVzdCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L3N0cm9uZz5cbiAgICB7eyAnQWJwQWNjb3VudDo6VGhlcmVBcmVOb0xvZ2luU2NoZW1lc0NvbmZpZ3VyZWRGb3JUaGlzQ2xpZW50JyB8IGFicExvY2FsaXphdGlvbiB9fVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { TenantBoxService } from '@abp/ng.account.core';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@abp/ng.account.core";
|
|
5
|
-
import * as i2 from "@abp/ng.theme.shared";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "@angular/forms";
|
|
8
|
-
import * as i5 from "@abp/ng.core";
|
|
9
|
-
export class TenantBoxComponent {
|
|
10
|
-
constructor(service) {
|
|
11
|
-
this.service = service;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
TenantBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TenantBoxComponent, deps: [{ token: i1.TenantBoxService }], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
-
TenantBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TenantBoxComponent, selector: "abp-tenant-box", providers: [TenantBoxService], ngImport: i0, template: "<ng-container *ngIf=\"(service.currentTenant$ | async) || { name: '' } as currentTenant\">\n <div class=\"card shadow-sm rounded mb-3\">\n <div class=\"card-body px-5\">\n <div class=\"row\">\n <div class=\"col\">\n <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\n 'AbpUiMultiTenancy::Tenant' | abpLocalization\n }}</span\n ><br />\n <h6 class=\"m-0 d-inline-block\">\n <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\n </h6>\n </div>\n <div class=\"col-auto\">\n <a\n id=\"AbpTenantSwitchLink\"\n href=\"javascript:void(0);\"\n class=\"btn btn-sm mt-3 btn-outline-primary\"\n (click)=\"service.onSwitch()\"\n >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\n >\n </div>\n </div>\n </div>\n </div>\n\n <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\n <ng-template #abpHeader>\n <h5>Switch Tenant</h5>\n </ng-template>\n <ng-template #abpBody>\n <form (ngSubmit)=\"service.save()\">\n <div class=\"mt-2\">\n <div class=\"mb-3 form-group\">\n <label for=\"name\" class=\"form-label\">{{\n 'AbpUiMultiTenancy::Name' | abpLocalization\n }}</label>\n <input\n [(ngModel)]=\"service.name\"\n type=\"text\"\n id=\"name\"\n name=\"tenant\"\n class=\"form-control\"\n autofocus\n />\n </div>\n <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\n </div>\n </form>\n </ng-template>\n <ng-template #abpFooter>\n <button abpClose type=\"button\" class=\"btn btn-secondary\">\n {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\n </button>\n <abp-button\n type=\"abp-button\"\n iconClass=\"fa fa-check\"\n (click)=\"service.save()\"\n [disabled]=\"currentTenant?.name === service.name\"\n >\n <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\n </abp-button>\n </ng-template>\n </abp-modal>\n</ng-container>\n", components: [{ type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.ModalCloseDirective, selector: "[abpClose]" }], pipes: { "async": i3.AsyncPipe, "abpLocalization": i5.LocalizationPipe } });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TenantBoxComponent, decorators: [{
|
|
17
|
-
type: Component,
|
|
18
|
-
args: [{
|
|
19
|
-
selector: 'abp-tenant-box',
|
|
20
|
-
templateUrl: './tenant-box.component.html',
|
|
21
|
-
providers: [TenantBoxService],
|
|
22
|
-
}]
|
|
23
|
-
}], ctorParameters: function () { return [{ type: i1.TenantBoxService }]; } });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90aGVtZS1iYXNpYy9zcmMvbGliL2NvbXBvbmVudHMvYWNjb3VudC1sYXlvdXQvdGVuYW50LWJveC90ZW5hbnQtYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50LWxheW91dC90ZW5hbnQtYm94L3RlbmFudC1ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQU8xQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQW1CLE9BQXlCO1FBQXpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO0lBQUcsQ0FBQzs7Z0hBRHJDLGtCQUFrQjtvR0FBbEIsa0JBQWtCLHlDQUZsQixDQUFDLGdCQUFnQixDQUFDLDBCQ04vQixpd0VBaUVBOzRGRHpEYSxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLDZCQUE2QjtvQkFDMUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVuYW50Qm94U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuYWNjb3VudC5jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtdGVuYW50LWJveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW5hbnQtYm94LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbVGVuYW50Qm94U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRlbmFudEJveENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBUZW5hbnRCb3hTZXJ2aWNlKSB7fVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIihzZXJ2aWNlLmN1cnJlbnRUZW5hbnQkIHwgYXN5bmMpIHx8IHsgbmFtZTogJycgfSBhcyBjdXJyZW50VGVuYW50XCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkIHNoYWRvdy1zbSByb3VuZGVkIG1iLTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB4LTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAwLjhlbVwiIGNsYXNzPVwidGV4dC11cHBlcmNhc2UgdGV4dC1tdXRlZFwiPnt7XG4gICAgICAgICAgICAnQWJwVWlNdWx0aVRlbmFuY3k6OlRlbmFudCcgfCBhYnBMb2NhbGl6YXRpb25cbiAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICA8aDYgY2xhc3M9XCJtLTAgZC1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgIDxpPnt7IGN1cnJlbnRUZW5hbnQubmFtZSB8fCAoJ0FicFVpTXVsdGlUZW5hbmN5OjpOb3RTZWxlY3RlZCcgfCBhYnBMb2NhbGl6YXRpb24pIH19PC9pPlxuICAgICAgICAgIDwvaDY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaWQ9XCJBYnBUZW5hbnRTd2l0Y2hMaW5rXCJcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBtdC0zIGJ0bi1vdXRsaW5lLXByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlcnZpY2Uub25Td2l0Y2goKVwiXG4gICAgICAgICAgICA+e3sgJ0FicFVpTXVsdGlUZW5hbmN5OjpTd2l0Y2gnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8YWJwLW1vZGFsIFsodmlzaWJsZSldPVwic2VydmljZS5pc01vZGFsVmlzaWJsZVwiIFtidXN5XT1cInNlcnZpY2UubW9kYWxCdXN5XCI+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XG4gICAgICA8aDU+U3dpdGNoIFRlbmFudDwvaDU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XG4gICAgICA8Zm9ybSAobmdTdWJtaXQpPVwic2VydmljZS5zYXZlKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyBmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwibmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7XG4gICAgICAgICAgICAgICdBYnBVaU11bHRpVGVuYW5jeTo6TmFtZScgfCBhYnBMb2NhbGl6YXRpb25cbiAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlcnZpY2UubmFtZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgaWQ9XCJuYW1lXCJcbiAgICAgICAgICAgICAgbmFtZT1cInRlbmFudFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgYXV0b2ZvY3VzXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwPnt7ICdBYnBVaU11bHRpVGVuYW5jeTo6U3dpdGNoVGVuYW50SGludCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XG4gICAgICA8YnV0dG9uIGFicENsb3NlIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCI+XG4gICAgICAgIHt7ICdBYnBUZW5hbnRNYW5hZ2VtZW50OjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxhYnAtYnV0dG9uXG4gICAgICAgIHR5cGU9XCJhYnAtYnV0dG9uXCJcbiAgICAgICAgaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIlxuICAgICAgICAoY2xpY2spPVwic2VydmljZS5zYXZlKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY3VycmVudFRlbmFudD8ubmFtZSA9PT0gc2VydmljZS5uYW1lXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgJ0FicFRlbmFudE1hbmFnZW1lbnQ6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9zcGFuPlxuICAgICAgPC9hYnAtYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvYWJwLW1vZGFsPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { SubscriptionService } from '@abp/ng.core';
|
|
2
|
-
import { collapseWithMargin, slideFromBottom } from '@abp/ng.theme.shared';
|
|
3
|
-
import { Component } from '@angular/core';
|
|
4
|
-
import { LayoutService } from '../../services/layout.service';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../services/layout.service";
|
|
7
|
-
import * as i2 from "../logo/logo.component";
|
|
8
|
-
import * as i3 from "../routes/routes.component";
|
|
9
|
-
import * as i4 from "../nav-items/nav-items.component";
|
|
10
|
-
import * as i5 from "../page-alert-container/page-alert-container.component";
|
|
11
|
-
import * as i6 from "@ng-bootstrap/ng-bootstrap";
|
|
12
|
-
import * as i7 from "@abp/ng.core";
|
|
13
|
-
import * as i8 from "@angular/common";
|
|
14
|
-
import * as i9 from "@angular/router";
|
|
15
|
-
export class ApplicationLayoutComponent {
|
|
16
|
-
constructor(service) {
|
|
17
|
-
this.service = service;
|
|
18
|
-
}
|
|
19
|
-
ngAfterViewInit() {
|
|
20
|
-
this.service.subscribeWindowSize();
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
// required for dynamic component
|
|
24
|
-
ApplicationLayoutComponent.type = "application" /* application */;
|
|
25
|
-
ApplicationLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ApplicationLayoutComponent, deps: [{ token: i1.LayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
ApplicationLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ApplicationLayoutComponent, selector: "abp-layout-application", providers: [LayoutService, SubscriptionService], ngImport: i0, template: "<nav\n class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\n id=\"main-navbar\"\n style=\"min-height: 4rem\"\n>\n <div class=\"container\">\n <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\n <button\n class=\"navbar-toggler\"\n type=\"button\"\n [attr.aria-expanded]=\"!service.isCollapsed\"\n (click)=\"service.isCollapsed = !service.isCollapsed\"\n >\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\n <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\n\n <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\n <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\n </div>\n\n <ng-template #navigations>\n <abp-routes\n *abpReplaceableTemplate=\"{\n componentKey: service.routesComponentKey,\n inputs: {\n smallScreen: { value: service.smallScreen }\n }\n }\"\n class=\"mx-auto\"\n [smallScreen]=\"service.smallScreen\"\n ></abp-routes>\n\n <abp-nav-items\n *abpReplaceableTemplate=\"{\n componentKey: service.navItemsComponentKey\n }\"\n ></abp-nav-items>\n </ng-template>\n </div>\n </div>\n</nav>\n\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\n<div class=\"container\">\n <abp-page-alert-container></abp-page-alert-container>\n\n <router-outlet #outlet=\"outlet\"></router-outlet>\n</div>\n", components: [{ type: i2.LogoComponent, selector: "abp-logo" }, { type: i3.RoutesComponent, selector: "abp-routes", inputs: ["smallScreen"] }, { type: i4.NavItemsComponent, selector: "abp-nav-items" }, { type: i5.PageAlertContainerComponent, selector: "abp-page-alert-container" }], directives: [{ type: i6.NgbNavbar, selector: ".navbar" }, { type: i7.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }], animations: [slideFromBottom, collapseWithMargin] });
|
|
27
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: ApplicationLayoutComponent, decorators: [{
|
|
28
|
-
type: Component,
|
|
29
|
-
args: [{
|
|
30
|
-
selector: 'abp-layout-application',
|
|
31
|
-
templateUrl: './application-layout.component.html',
|
|
32
|
-
animations: [slideFromBottom, collapseWithMargin],
|
|
33
|
-
providers: [LayoutService, SubscriptionService],
|
|
34
|
-
}]
|
|
35
|
-
}], ctorParameters: function () { return [{ type: i1.LayoutService }]; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9hcHBsaWNhdGlvbi1sYXlvdXQvYXBwbGljYXRpb24tbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9hcHBsaWNhdGlvbi1sYXlvdXQvYXBwbGljYXRpb24tbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQW1CLE9BQXNCO1FBQXRCLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFBRyxDQUFDO0lBRTdDLGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckMsQ0FBQzs7QUFQRCxpQ0FBaUM7QUFDMUIsK0JBQUksbUNBQTJCO3dIQUYzQiwwQkFBMEI7NEdBQTFCLDBCQUEwQixpREFGMUIsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLENBQUMsMEJDVGpELDAxREFrREEsa3hCRDFDYyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQzs0RkFHdEMsMEJBQTBCO2tCQU50QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFdBQVcsRUFBRSxxQ0FBcUM7b0JBQ2xELFVBQVUsRUFBRSxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQztvQkFDakQsU0FBUyxFQUFFLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVMYXlvdXRUeXBlLCBTdWJzY3JpcHRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IGNvbGxhcHNlV2l0aE1hcmdpbiwgc2xpZGVGcm9tQm90dG9tIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbGF5b3V0LWFwcGxpY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcGxpY2F0aW9uLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtzbGlkZUZyb21Cb3R0b20sIGNvbGxhcHNlV2l0aE1hcmdpbl0sXG4gIHByb3ZpZGVyczogW0xheW91dFNlcnZpY2UsIFN1YnNjcmlwdGlvblNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkxheW91dENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAvLyByZXF1aXJlZCBmb3IgZHluYW1pYyBjb21wb25lbnRcbiAgc3RhdGljIHR5cGUgPSBlTGF5b3V0VHlwZS5hcHBsaWNhdGlvbjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2VydmljZTogTGF5b3V0U2VydmljZSkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLnN1YnNjcmliZVdpbmRvd1NpemUoKTtcbiAgfVxufVxuIiwiPG5hdlxuICBjbGFzcz1cIm5hdmJhciBuYXZiYXItZXhwYW5kLWxnIG5hdmJhci1kYXJrIGJnLWRhcmsgc2hhZG93LXNtIGZsZXgtY29sdW1uIGZsZXgtbWQtcm93IG1iLTRcIlxuICBpZD1cIm1haW4tbmF2YmFyXCJcbiAgc3R5bGU9XCJtaW4taGVpZ2h0OiA0cmVtXCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgIDxhYnAtbG9nbyAqYWJwUmVwbGFjZWFibGVUZW1wbGF0ZT1cInsgY29tcG9uZW50S2V5OiBzZXJ2aWNlLmxvZ29Db21wb25lbnRLZXkgfVwiPjwvYWJwLWxvZ28+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJuYXZiYXItdG9nZ2xlclwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIXNlcnZpY2UuaXNDb2xsYXBzZWRcIlxuICAgICAgKGNsaWNrKT1cInNlcnZpY2UuaXNDb2xsYXBzZWQgPSAhc2VydmljZS5pc0NvbGxhcHNlZFwiXG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuYXZiYXItdG9nZ2xlci1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItY29sbGFwc2VcIiBbY2xhc3Mub3ZlcmZsb3ctaGlkZGVuXT1cInNlcnZpY2Uuc21hbGxTY3JlZW5cIiBpZD1cIm1haW4tbmF2YmFyLWNvbGxhcHNlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiIXNlcnZpY2Uuc21hbGxTY3JlZW4gPyBuYXZpZ2F0aW9ucyA6IG51bGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdiAqbmdJZj1cInNlcnZpY2Uuc21hbGxTY3JlZW5cIiBbQGNvbGxhcHNlV2l0aE1hcmdpbl09XCJzZXJ2aWNlLmlzQ29sbGFwc2VkID8gJ2NvbGxhcHNlZCcgOiAnZXhwYW5kZWQnXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJuYXZpZ2F0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbmF2aWdhdGlvbnM+XG4gICAgICAgIDxhYnAtcm91dGVzXG4gICAgICAgICAgKmFicFJlcGxhY2VhYmxlVGVtcGxhdGU9XCJ7XG4gICAgICAgICAgICBjb21wb25lbnRLZXk6IHNlcnZpY2Uucm91dGVzQ29tcG9uZW50S2V5LFxuICAgICAgICAgICAgaW5wdXRzOiB7XG4gICAgICAgICAgICAgIHNtYWxsU2NyZWVuOiB7IHZhbHVlOiBzZXJ2aWNlLnNtYWxsU2NyZWVuIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XCJcbiAgICAgICAgICBjbGFzcz1cIm14LWF1dG9cIlxuICAgICAgICAgIFtzbWFsbFNjcmVlbl09XCJzZXJ2aWNlLnNtYWxsU2NyZWVuXCJcbiAgICAgICAgPjwvYWJwLXJvdXRlcz5cblxuICAgICAgICA8YWJwLW5hdi1pdGVtc1xuICAgICAgICAgICphYnBSZXBsYWNlYWJsZVRlbXBsYXRlPVwie1xuICAgICAgICAgICAgY29tcG9uZW50S2V5OiBzZXJ2aWNlLm5hdkl0ZW1zQ29tcG9uZW50S2V5XG4gICAgICAgICAgfVwiXG4gICAgICAgID48L2FicC1uYXYtaXRlbXM+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmF2PlxuXG48IS0tIFtAc2xpZGVGcm9tQm90dG9tXT1cIm91dGxldC5pc0FjdGl2YXRlZCAmJiBvdXRsZXQuYWN0aXZhdGVkUm91dGU/LnJvdXRlQ29uZmlnPy5wYXRoXCIgVE9ETzogdGhyb3dzIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVjayB3aGVuIGFuaW1hdGlvbiBpcyBhY3RpdmUuIEl0IHNob3VsZCBiZSBmaXhlZCAtLT5cbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgPGFicC1wYWdlLWFsZXJ0LWNvbnRhaW5lcj48L2FicC1wYWdlLWFsZXJ0LWNvbnRhaW5lcj5cblxuICA8cm91dGVyLW91dGxldCAjb3V0bGV0PVwib3V0bGV0XCI+PC9yb3V0ZXItb3V0bGV0PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { AuthService, ConfigStateService, NAVIGATE_TO_MANAGE_PROFILE, SessionStateService, } from '@abp/ng.core';
|
|
2
|
-
import { Component, Inject } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@abp/ng.core";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
7
|
-
export class CurrentUserComponent {
|
|
8
|
-
constructor(navigateToManageProfile, authService, configState, sessionState) {
|
|
9
|
-
this.navigateToManageProfile = navigateToManageProfile;
|
|
10
|
-
this.authService = authService;
|
|
11
|
-
this.configState = configState;
|
|
12
|
-
this.sessionState = sessionState;
|
|
13
|
-
this.currentUser$ = this.configState.getOne$('currentUser');
|
|
14
|
-
this.selectedTenant$ = this.sessionState.getTenant$();
|
|
15
|
-
}
|
|
16
|
-
get smallScreen() {
|
|
17
|
-
return window.innerWidth < 992;
|
|
18
|
-
}
|
|
19
|
-
navigateToLogin() {
|
|
20
|
-
this.authService.navigateToLogin();
|
|
21
|
-
}
|
|
22
|
-
logout() {
|
|
23
|
-
this.authService.logout().subscribe();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
CurrentUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: CurrentUserComponent, deps: [{ token: NAVIGATE_TO_MANAGE_PROFILE }, { token: i1.AuthService }, { token: i1.ConfigStateService }, { token: i1.SessionStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
CurrentUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: CurrentUserComponent, selector: "abp-current-user", ngImport: i0, template: "<ng-template #loginBtn>\n <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\n 'AbpAccount::Login' | abpLocalization\n }}</a>\n</ng-template>\n<div\n *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\n ngbDropdown\n class=\"dropdown\"\n #currentUserDropdown=\"ngbDropdown\"\n display=\"static\"\n>\n <a\n ngbDropdownToggle\n class=\"nav-link\"\n href=\"javascript:void(0)\"\n role=\"button\"\n id=\"dropdownMenuLink\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\n ><i>{{ tenantName }}</i\n >\\</small\n >\n <strong>{{ (currentUser$ | async)?.userName }}</strong>\n </a>\n <div\n class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\n aria-labelledby=\"dropdownMenuLink\"\n [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\n >\n <a class=\"dropdown-item pointer\" (click)=\"navigateToManageProfile()\"\n ><i class=\"fa fa-cog me-1\"></i>{{ 'AbpAccount::MyAccount' | abpLocalization }}</a\n >\n <a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"logout()\"\n ><i class=\"fa fa-power-off me-1\"></i>{{ 'AbpUi::Logout' | abpLocalization }}</a\n >\n </div>\n</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }], pipes: { "abpLocalization": i1.LocalizationPipe, "async": i2.AsyncPipe } });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: CurrentUserComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{
|
|
31
|
-
selector: 'abp-current-user',
|
|
32
|
-
templateUrl: './current-user.component.html',
|
|
33
|
-
}]
|
|
34
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
35
|
-
type: Inject,
|
|
36
|
-
args: [NAVIGATE_TO_MANAGE_PROFILE]
|
|
37
|
-
}] }, { type: i1.AuthService }, { type: i1.ConfigStateService }, { type: i1.SessionStateService }]; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC11c2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9uYXYtaXRlbXMvY3VycmVudC11c2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9uYXYtaXRlbXMvY3VycmVudC11c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBRWxCLDBCQUEwQixFQUMxQixtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBT2xELE1BQU0sT0FBTyxvQkFBb0I7SUFRL0IsWUFDNkMsdUJBQW1DLEVBQ3RFLFdBQXdCLEVBQ3hCLFdBQStCLEVBQy9CLFlBQWlDO1FBSEUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFZO1FBQ3RFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFYM0MsaUJBQVksR0FBK0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkYsb0JBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBVzlDLENBQUM7SUFUSixJQUFJLFdBQVc7UUFDYixPQUFPLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFTRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7a0hBckJVLG9CQUFvQixrQkFTckIsMEJBQTBCO3NHQVR6QixvQkFBb0Isd0RDZGpDLHd6Q0F5Q0E7NEZEM0JhLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixXQUFXLEVBQUUsK0JBQStCO2lCQUM3Qzs7MEJBVUksTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRoU2VydmljZSxcbiAgQ29uZmlnU3RhdGVTZXJ2aWNlLFxuICBDdXJyZW50VXNlckR0byxcbiAgTkFWSUdBVEVfVE9fTUFOQUdFX1BST0ZJTEUsXG4gIFNlc3Npb25TdGF0ZVNlcnZpY2UsXG59IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtY3VycmVudC11c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1cnJlbnQtdXNlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEN1cnJlbnRVc2VyQ29tcG9uZW50IHtcbiAgY3VycmVudFVzZXIkOiBPYnNlcnZhYmxlPEN1cnJlbnRVc2VyRHRvPiA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0T25lJCgnY3VycmVudFVzZXInKTtcbiAgc2VsZWN0ZWRUZW5hbnQkID0gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0VGVuYW50JCgpO1xuXG4gIGdldCBzbWFsbFNjcmVlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPCA5OTI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE5BVklHQVRFX1RPX01BTkFHRV9QUk9GSUxFKSBwdWJsaWMgbmF2aWdhdGVUb01hbmFnZVByb2ZpbGU6ICgpID0+IHZvaWQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmF2aWdhdGVUb0xvZ2luKCkge1xuICAgIHRoaXMuYXV0aFNlcnZpY2UubmF2aWdhdGVUb0xvZ2luKCk7XG4gIH1cblxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNsb2dpbkJ0bj5cbiAgPGEgcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwibmF2LWxpbmsgcG9pbnRlclwiIChjbGljayk9XCJuYXZpZ2F0ZVRvTG9naW4oKVwiPnt7XG4gICAgJ0FicEFjY291bnQ6OkxvZ2luJyB8IGFicExvY2FsaXphdGlvblxuICB9fTwvYT5cbjwvbmctdGVtcGxhdGU+XG48ZGl2XG4gICpuZ0lmPVwiKGN1cnJlbnRVc2VyJCB8IGFzeW5jKT8uaXNBdXRoZW50aWNhdGVkOyBlbHNlIGxvZ2luQnRuXCJcbiAgbmdiRHJvcGRvd25cbiAgY2xhc3M9XCJkcm9wZG93blwiXG4gICNjdXJyZW50VXNlckRyb3Bkb3duPVwibmdiRHJvcGRvd25cIlxuICBkaXNwbGF5PVwic3RhdGljXCJcbj5cbiAgPGFcbiAgICBuZ2JEcm9wZG93blRvZ2dsZVxuICAgIGNsYXNzPVwibmF2LWxpbmtcIlxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgIHJvbGU9XCJidXR0b25cIlxuICAgIGlkPVwiZHJvcGRvd25NZW51TGlua1wiXG4gICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gID5cbiAgICA8c21hbGwgKm5nSWY9XCIoc2VsZWN0ZWRUZW5hbnQkIHwgYXN5bmMpPy5uYW1lIGFzIHRlbmFudE5hbWVcIlxuICAgICAgPjxpPnt7IHRlbmFudE5hbWUgfX08L2lcbiAgICAgID5cXDwvc21hbGxcbiAgICA+XG4gICAgPHN0cm9uZz57eyAoY3VycmVudFVzZXIkIHwgYXN5bmMpPy51c2VyTmFtZSB9fTwvc3Ryb25nPlxuICA8L2E+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1lbmQgYm9yZGVyLTAgc2hhZG93LXNtXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVMaW5rXCJcbiAgICBbY2xhc3MuZC1ibG9ja109XCJzbWFsbFNjcmVlbiAmJiBjdXJyZW50VXNlckRyb3Bkb3duLmlzT3BlbigpXCJcbiAgPlxuICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwb2ludGVyXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9NYW5hZ2VQcm9maWxlKClcIlxuICAgICAgPjxpIGNsYXNzPVwiZmEgZmEtY29nIG1lLTFcIj48L2k+e3sgJ0FicEFjY291bnQ6Ok15QWNjb3VudCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2FcbiAgICA+XG4gICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJsb2dvdXQoKVwiXG4gICAgICA+PGkgY2xhc3M9XCJmYSBmYS1wb3dlci1vZmYgbWUtMVwiPjwvaT57eyAnQWJwVWk6OkxvZ291dCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2FcbiAgICA+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ConfigStateService, SessionStateService } from '@abp/ng.core';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@abp/ng.core";
|
|
6
|
-
import * as i2 from "@angular/common";
|
|
7
|
-
import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
8
|
-
export class LanguagesComponent {
|
|
9
|
-
constructor(sessionState, configState) {
|
|
10
|
-
this.sessionState = sessionState;
|
|
11
|
-
this.configState = configState;
|
|
12
|
-
this.languages$ = this.configState.getDeep$('localization.languages');
|
|
13
|
-
}
|
|
14
|
-
get smallScreen() {
|
|
15
|
-
return window.innerWidth < 992;
|
|
16
|
-
}
|
|
17
|
-
get defaultLanguage$() {
|
|
18
|
-
return this.languages$.pipe(map(languages => { var _a; return ((_a = languages === null || languages === void 0 ? void 0 : languages.find(lang => lang.cultureName === this.selectedLangCulture)) === null || _a === void 0 ? void 0 : _a.displayName) || ''; }));
|
|
19
|
-
}
|
|
20
|
-
get dropdownLanguages$() {
|
|
21
|
-
return this.languages$.pipe(map(languages => (languages === null || languages === void 0 ? void 0 : languages.filter(lang => lang.cultureName !== this.selectedLangCulture)) || []));
|
|
22
|
-
}
|
|
23
|
-
get selectedLangCulture() {
|
|
24
|
-
return this.sessionState.getLanguage();
|
|
25
|
-
}
|
|
26
|
-
onChangeLang(cultureName) {
|
|
27
|
-
this.sessionState.setLanguage(cultureName);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
LanguagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LanguagesComponent, deps: [{ token: i1.SessionStateService }, { token: i1.ConfigStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
-
LanguagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: LanguagesComponent, selector: "abp-languages", ngImport: i0, template: `
|
|
32
|
-
<div
|
|
33
|
-
*ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
|
|
34
|
-
class="dropdown"
|
|
35
|
-
ngbDropdown
|
|
36
|
-
#languageDropdown="ngbDropdown"
|
|
37
|
-
display="static"
|
|
38
|
-
>
|
|
39
|
-
<a
|
|
40
|
-
ngbDropdownToggle
|
|
41
|
-
class="nav-link"
|
|
42
|
-
href="javascript:void(0)"
|
|
43
|
-
role="button"
|
|
44
|
-
id="dropdownMenuLink"
|
|
45
|
-
data-toggle="dropdown"
|
|
46
|
-
aria-haspopup="true"
|
|
47
|
-
aria-expanded="false"
|
|
48
|
-
>
|
|
49
|
-
{{ defaultLanguage$ | async }}
|
|
50
|
-
</a>
|
|
51
|
-
<div
|
|
52
|
-
class="dropdown-menu dropdown-menu-end border-0 shadow-sm"
|
|
53
|
-
aria-labelledby="dropdownMenuLink"
|
|
54
|
-
[class.d-block]="smallScreen && languageDropdown.isOpen()"
|
|
55
|
-
>
|
|
56
|
-
<a
|
|
57
|
-
*ngFor="let lang of dropdownLanguages$ | async"
|
|
58
|
-
href="javascript:void(0)"
|
|
59
|
-
class="dropdown-item"
|
|
60
|
-
(click)="onChangeLang(lang.cultureName || '')"
|
|
61
|
-
>{{ lang?.displayName }}</a
|
|
62
|
-
>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
`, isInline: true, directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgbDropdown, selector: "[ngbDropdown]", inputs: ["open", "placement", "container", "autoClose", "display", "dropdownClass"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i3.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe } });
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: LanguagesComponent, decorators: [{
|
|
67
|
-
type: Component,
|
|
68
|
-
args: [{
|
|
69
|
-
selector: 'abp-languages',
|
|
70
|
-
template: `
|
|
71
|
-
<div
|
|
72
|
-
*ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
|
|
73
|
-
class="dropdown"
|
|
74
|
-
ngbDropdown
|
|
75
|
-
#languageDropdown="ngbDropdown"
|
|
76
|
-
display="static"
|
|
77
|
-
>
|
|
78
|
-
<a
|
|
79
|
-
ngbDropdownToggle
|
|
80
|
-
class="nav-link"
|
|
81
|
-
href="javascript:void(0)"
|
|
82
|
-
role="button"
|
|
83
|
-
id="dropdownMenuLink"
|
|
84
|
-
data-toggle="dropdown"
|
|
85
|
-
aria-haspopup="true"
|
|
86
|
-
aria-expanded="false"
|
|
87
|
-
>
|
|
88
|
-
{{ defaultLanguage$ | async }}
|
|
89
|
-
</a>
|
|
90
|
-
<div
|
|
91
|
-
class="dropdown-menu dropdown-menu-end border-0 shadow-sm"
|
|
92
|
-
aria-labelledby="dropdownMenuLink"
|
|
93
|
-
[class.d-block]="smallScreen && languageDropdown.isOpen()"
|
|
94
|
-
>
|
|
95
|
-
<a
|
|
96
|
-
*ngFor="let lang of dropdownLanguages$ | async"
|
|
97
|
-
href="javascript:void(0)"
|
|
98
|
-
class="dropdown-item"
|
|
99
|
-
(click)="onChangeLang(lang.cultureName || '')"
|
|
100
|
-
>{{ lang?.displayName }}</a
|
|
101
|
-
>
|
|
102
|
-
</div>
|
|
103
|
-
</div>
|
|
104
|
-
`,
|
|
105
|
-
}]
|
|
106
|
-
}], ctorParameters: function () { return [{ type: i1.SessionStateService }, { type: i1.ConfigStateService }]; } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9uYXYtaXRlbXMvbGFuZ3VhZ2VzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQXdDckMsTUFBTSxPQUFPLGtCQUFrQjtJQTRCN0IsWUFBb0IsWUFBaUMsRUFBVSxXQUErQjtRQUExRSxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUF2QjlGLGVBQVUsR0FBK0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQXVCSSxDQUFDO0lBM0JsRyxJQUFJLFdBQVc7UUFDYixPQUFPLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ2pDLENBQUM7SUFJRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixHQUFHLENBQ0QsU0FBUyxDQUFDLEVBQUUsV0FDVixPQUFBLENBQUEsTUFBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsMENBQUUsV0FBVyxLQUFJLEVBQUUsQ0FBQSxFQUFBLENBQzVGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixHQUFHLENBQ0QsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFJLEVBQUUsQ0FDNUYsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBSUQsWUFBWSxDQUFDLFdBQW1CO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2dIQWhDVSxrQkFBa0I7b0dBQWxCLGtCQUFrQixxREFwQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NUOzRGQUVVLGtCQUFrQjtrQkF0QzlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ1N0YXRlU2VydmljZSwgTGFuZ3VhZ2VJbmZvLCBTZXNzaW9uU3RhdGVTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhYnAtbGFuZ3VhZ2VzJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIigoZHJvcGRvd25MYW5ndWFnZXMkIHwgYXN5bmMpPy5sZW5ndGggfHwgMCkgPiAwXCJcbiAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgbmdiRHJvcGRvd25cbiAgICAgICNsYW5ndWFnZURyb3Bkb3duPVwibmdiRHJvcGRvd25cIlxuICAgICAgZGlzcGxheT1cInN0YXRpY1wiXG4gICAgPlxuICAgICAgPGFcbiAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgaWQ9XCJkcm9wZG93bk1lbnVMaW5rXCJcbiAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAge3sgZGVmYXVsdExhbmd1YWdlJCB8IGFzeW5jIH19XG4gICAgICA8L2E+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LWVuZCBib3JkZXItMCBzaGFkb3ctc21cIlxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVMaW5rXCJcbiAgICAgICAgW2NsYXNzLmQtYmxvY2tdPVwic21hbGxTY3JlZW4gJiYgbGFuZ3VhZ2VEcm9wZG93bi5pc09wZW4oKVwiXG4gICAgICA+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmcgb2YgZHJvcGRvd25MYW5ndWFnZXMkIHwgYXN5bmNcIlxuICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2hhbmdlTGFuZyhsYW5nLmN1bHR1cmVOYW1lIHx8ICcnKVwiXG4gICAgICAgICAgPnt7IGxhbmc/LmRpc3BsYXlOYW1lIH19PC9hXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZXNDb21wb25lbnQge1xuICBnZXQgc21hbGxTY3JlZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDwgOTkyO1xuICB9XG5cbiAgbGFuZ3VhZ2VzJDogT2JzZXJ2YWJsZTxMYW5ndWFnZUluZm9bXT4gPSB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAkKCdsb2NhbGl6YXRpb24ubGFuZ3VhZ2VzJyk7XG5cbiAgZ2V0IGRlZmF1bHRMYW5ndWFnZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZXMkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIGxhbmd1YWdlcyA9PlxuICAgICAgICAgIGxhbmd1YWdlcz8uZmluZChsYW5nID0+IGxhbmcuY3VsdHVyZU5hbWUgPT09IHRoaXMuc2VsZWN0ZWRMYW5nQ3VsdHVyZSk/LmRpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGRyb3Bkb3duTGFuZ3VhZ2VzJCgpOiBPYnNlcnZhYmxlPExhbmd1YWdlSW5mb1tdPiB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VzJC5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICBsYW5ndWFnZXMgPT4gbGFuZ3VhZ2VzPy5maWx0ZXIobGFuZyA9PiBsYW5nLmN1bHR1cmVOYW1lICE9PSB0aGlzLnNlbGVjdGVkTGFuZ0N1bHR1cmUpIHx8IFtdLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkTGFuZ0N1bHR1cmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uU3RhdGUuZ2V0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2Vzc2lvblN0YXRlOiBTZXNzaW9uU3RhdGVTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UpIHt9XG5cbiAgb25DaGFuZ2VMYW5nKGN1bHR1cmVOYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlc3Npb25TdGF0ZS5zZXRMYW5ndWFnZShjdWx0dXJlTmFtZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { NavItemsService } from '@abp/ng.theme.shared';
|
|
2
|
-
import { Component } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@abp/ng.theme.shared";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "@abp/ng.core";
|
|
7
|
-
export class NavItemsComponent {
|
|
8
|
-
constructor(navItems) {
|
|
9
|
-
this.navItems = navItems;
|
|
10
|
-
this.trackByFn = (_, element) => element.id;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
NavItemsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NavItemsComponent, deps: [{ token: i1.NavItemsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
-
NavItemsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: NavItemsComponent, selector: "abp-nav-items", ngImport: i0, template: "<ul class=\"navbar-nav\">\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\n <ng-container *ngIf=\"item.visible && item.visible()\">\n <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\n <ng-container\n *ngIf=\"item.component; else htmlTemplate\"\n [ngComponentOutlet]=\"item.component\"\n ></ng-container>\n\n <ng-template #htmlTemplate>\n <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\n </ng-template>\n </li>\n </ng-container>\n </ng-container>\n</ul>\n", directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission"] }, { type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }], pipes: { "async": i2.AsyncPipe } });
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: NavItemsComponent, decorators: [{
|
|
16
|
-
type: Component,
|
|
17
|
-
args: [{
|
|
18
|
-
selector: 'abp-nav-items',
|
|
19
|
-
templateUrl: 'nav-items.component.html',
|
|
20
|
-
}]
|
|
21
|
-
}], ctorParameters: function () { return [{ type: i1.NavItemsService }]; } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9uYXYtaXRlbXMvbmF2LWl0ZW1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lLWJhc2ljL3NyYy9saWIvY29tcG9uZW50cy9uYXYtaXRlbXMvbmF2LWl0ZW1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUEwQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFNbEUsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUE0QixRQUF5QjtRQUF6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUZyRCxjQUFTLEdBQTZCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUVULENBQUM7OytHQUg5QyxpQkFBaUI7bUdBQWpCLGlCQUFpQixxRENQOUIsb29CQWdCQTs0RkRUYSxpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSwwQkFBMEI7aUJBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2SXRlbSwgTmF2SXRlbXNTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVHJhY2tCeUZ1bmN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FicC1uYXYtaXRlbXMnLFxuICB0ZW1wbGF0ZVVybDogJ25hdi1pdGVtcy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE5hdkl0ZW1zQ29tcG9uZW50IHtcbiAgdHJhY2tCeUZuOiBUcmFja0J5RnVuY3Rpb248TmF2SXRlbT4gPSAoXywgZWxlbWVudCkgPT4gZWxlbWVudC5pZDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbmF2SXRlbXM6IE5hdkl0ZW1zU2VydmljZSkge31cbn1cbiIsIjx1bCBjbGFzcz1cIm5hdmJhci1uYXZcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBuYXZJdGVtcy5pdGVtcyQgfCBhc3luYzsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmlzaWJsZSAmJiBpdGVtLnZpc2libGUoKVwiPlxuICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW0gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICphYnBQZXJtaXNzaW9uPVwiaXRlbS5yZXF1aXJlZFBvbGljeVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLmNvbXBvbmVudDsgZWxzZSBodG1sVGVtcGxhdGVcIlxuICAgICAgICAgIFtuZ0NvbXBvbmVudE91dGxldF09XCJpdGVtLmNvbXBvbmVudFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2h0bWxUZW1wbGF0ZT5cbiAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiaXRlbS5odG1sXCIgKGNsaWNrKT1cIml0ZW0uYWN0aW9uID8gaXRlbS5hY3Rpb24oKSA6IG51bGxcIj48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbGk+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC91bD5cbiJdfQ==
|