{"version":3,"file":"abp-ng.theme.basic.mjs","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","../../../../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/providers/user-menu.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 {RouterEvents, SubscriptionService} from '@abp/ng.core';\r\nimport { ChangeDetectorRef, Injectable } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { eThemeBasicComponents } from '../enums';\r\n\r\n@Injectable()\r\nexport class LayoutService {\r\n  isCollapsed = true;\r\n\r\n  smallScreen!: boolean; // do not set true or false\r\n\r\n  logoComponentKey = eThemeBasicComponents.Logo;\r\n\r\n  routesComponentKey = eThemeBasicComponents.Routes;\r\n\r\n  navItemsComponentKey = eThemeBasicComponents.NavItems;\r\n\r\n  constructor(private subscription: SubscriptionService,\r\n              private cdRef: ChangeDetectorRef,\r\n              routerEvents:RouterEvents) {\r\n    subscription.addOne(routerEvents.getNavigationEvents(\"End\"),() => {\r\n      this.isCollapsed = true;\r\n    })\r\n  }\r\n\r\n  private checkWindowWidth() {\r\n    const isSmallScreen = window.innerWidth < 992;\r\n    if (isSmallScreen && this.smallScreen === false) {\r\n      this.isCollapsed = false;\r\n      setTimeout(() => {\r\n        this.isCollapsed = true;\r\n      }, 100);\r\n    }\r\n    this.smallScreen = isSmallScreen;\r\n    this.cdRef.detectChanges();\r\n  }\r\n\r\n  subscribeWindowSize() {\r\n    this.checkWindowWidth();\r\n\r\n    const resize$ = fromEvent(window, 'resize').pipe(debounceTime(150));\r\n    this.subscription.addOne(resize$, () => this.checkWindowWidth());\r\n  }\r\n}\r\n","import { ApplicationInfo, EnvironmentService } from '@abp/ng.core';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'abp-logo',\r\n  template: `\r\n    <a class=\"navbar-brand\" routerLink=\"/\">\r\n      <img\r\n        *ngIf=\"appInfo.logoUrl; else appName\"\r\n        [src]=\"appInfo.logoUrl\"\r\n        [alt]=\"appInfo.name\"\r\n        width=\"100%\"\r\n        height=\"auto\"\r\n      />\r\n    </a>\r\n\r\n    <ng-template #appName>\r\n      {{ appInfo.name }}\r\n    </ng-template>\r\n  `,\r\n})\r\nexport class LogoComponent {\r\n  get appInfo(): ApplicationInfo {\r\n    return this.environment.getEnvironment().application;\r\n  }\r\n\r\n  constructor(private environment: EnvironmentService) {}\r\n}\r\n","import { ABP, RoutesService, TreeNode } from '@abp/ng.core';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  QueryList,\r\n  Renderer2,\r\n  TrackByFunction,\r\n  ViewChildren,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'abp-routes',\r\n  templateUrl: 'routes.component.html',\r\n})\r\nexport class RoutesComponent {\r\n  @Input() smallScreen?: boolean;\r\n\r\n  @ViewChildren('childrenContainer') childrenContainers!: QueryList<ElementRef<HTMLDivElement>>;\r\n\r\n  rootDropdownExpand = {} as { [key: string]: boolean };\r\n\r\n  trackByFn: TrackByFunction<TreeNode<ABP.Route>> = (_, item) => item.name;\r\n\r\n  constructor(public readonly routesService: RoutesService, protected renderer: Renderer2) {}\r\n\r\n  isDropdown(node: TreeNode<ABP.Route>) {\r\n    return !node?.isLeaf || this.routesService.hasChildren(node.name);\r\n  }\r\n\r\n  closeDropdown() {\r\n    this.childrenContainers.forEach(({ nativeElement }) => {\r\n      this.renderer.addClass(nativeElement, 'd-none');\r\n      setTimeout(() => this.renderer.removeClass(nativeElement, 'd-none'), 0);\r\n    });\r\n  }\r\n}\r\n","<ul class=\"navbar-nav\">\r\n  <ng-container\r\n    *ngFor=\"let route of routesService.visible$ | async; trackBy: trackByFn\"\r\n    [ngTemplateOutlet]=\"isDropdown(route) ? dropdownLink : defaultLink\"\r\n    [ngTemplateOutletContext]=\"{ $implicit: route }\"\r\n  >\r\n  </ng-container>\r\n\r\n  <ng-template #defaultLink let-route>\r\n    <li class=\"nav-item\" *abpPermission=\"route.requiredPolicy\">\r\n      <a class=\"nav-link\" [routerLink]=\"[route.path]\"\r\n        ><i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n        {{ route.name | abpLocalization }}</a\r\n      >\r\n    </li>\r\n  </ng-template>\r\n\r\n  <ng-template #dropdownLink let-route>\r\n    <ng-container *ngIf=\"route.children?.length\">\r\n      <li\r\n        class=\"nav-item dropdown\"\r\n        display=\"static\"\r\n        *abpPermission=\"route.requiredPolicy\"\r\n        (click)=\"\r\n          rootDropdownExpand[route.name]\r\n            ? (rootDropdownExpand[route.name] = false)\r\n            : (rootDropdownExpand[route.name] = true)\r\n        \"\r\n      >\r\n        <a\r\n          class=\"nav-link dropdown-toggle\"\r\n          data-toggle=\"dropdown\"\r\n          aria-haspopup=\"true\"\r\n          aria-expanded=\"false\"\r\n          href=\"javascript:void(0)\"\r\n        >\r\n          <i *ngIf=\"route.iconClass\" [ngClass]=\"route.iconClass\"></i>\r\n          {{ route.name | abpLocalization }}\r\n        </a>\r\n        <div\r\n          #routeContainer\r\n          class=\"dropdown-menu border-0 shadow-sm\"\r\n          (click)=\"$event.preventDefault(); $event.stopPropagation()\"\r\n          [class.d-block]=\"smallScreen && rootDropdownExpand[route.name]\"\r\n        >\r\n          <ng-container\r\n            *ngTemplateOutlet=\"forTemplate; context: { $implicit: route }\"\r\n          ></ng-container>\r\n        </div>\r\n      </li>\r\n    </ng-container>\r\n  </ng-template>\r\n\r\n  <ng-template #forTemplate let-route>\r\n    <ng-container *ngFor=\"let child of route.children\">\r\n      <ng-template\r\n        [ngTemplateOutlet]=\"child.children?.length ? dropdownChild : defaultChild\"\r\n        [ngTemplateOutletContext]=\"{ $implicit: child }\"\r\n      ></ng-template>\r\n    </ng-container>\r\n  </ng-template>\r\n\r\n  <ng-template #defaultChild let-child>\r\n    <ng-container *ngIf=\"child.path\">\r\n      <div class=\"dropdown-submenu\" *abpPermission=\"child.requiredPolicy\">\r\n        <a class=\"dropdown-item\" [routerLink]=\"[child.path]\" (click)=\"closeDropdown()\">\r\n          <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n          {{ child.name | abpLocalization }}</a\r\n        >\r\n      </div>\r\n    </ng-container>\r\n  </ng-template>\r\n\r\n  <ng-template #dropdownChild let-child>\r\n    <div\r\n      class=\"dropdown-submenu\"\r\n      ngbDropdown\r\n      #dropdownSubmenu=\"ngbDropdown\"\r\n      placement=\"right-top\"\r\n      [autoClose]=\"true\"\r\n      *abpPermission=\"child.requiredPolicy\"\r\n    >\r\n      <div ngbDropdownToggle [class.dropdown-toggle]=\"false\">\r\n        <a\r\n          abpEllipsis=\"210px\"\r\n          [abpEllipsisEnabled]=\"!smallScreen\"\r\n          role=\"button\"\r\n          class=\"btn d-block text-start dropdown-toggle\"\r\n        >\r\n          <i *ngIf=\"child.iconClass\" [ngClass]=\"child.iconClass\"></i>\r\n          {{ child.name | abpLocalization }}\r\n        </a>\r\n      </div>\r\n      <div\r\n        #childrenContainer\r\n        class=\"dropdown-menu dropdown-menu-start border-0 shadow-sm\"\r\n        [class.d-block]=\"smallScreen && dropdownSubmenu.isOpen()\"\r\n      >\r\n        <ng-container *ngTemplateOutlet=\"forTemplate; context: { $implicit: child }\"></ng-container>\r\n      </div>\r\n    </div>\r\n  </ng-template>\r\n</ul>\r\n","import { NavItem, NavItemsService } from '@abp/ng.theme.shared';\r\nimport { Component, Input, TrackByFunction } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'abp-nav-items',\r\n  templateUrl: 'nav-items.component.html',\r\n})\r\nexport class NavItemsComponent {\r\n  trackByFn: TrackByFunction<NavItem> = (_, element) => element.id;\r\n\r\n  constructor(public readonly navItems: NavItemsService) {}\r\n}\r\n","<ul class=\"navbar-nav\">\r\n  <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\r\n    <ng-container *ngIf=\"item.visible && item.visible()\">\r\n      <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n        <ng-container\r\n          *ngIf=\"item.component; else htmlTemplate\"\r\n          [ngComponentOutlet]=\"item.component\"\r\n          [ngComponentOutletInjector]=\"item | toInjector\"\r\n        ></ng-container>\r\n\r\n        <ng-template #htmlTemplate>\r\n          <div [innerHTML]=\"item.html\" (click)=\"item.action ? item.action() : null\"></div>\r\n        </ng-template>\r\n      </li>\r\n    </ng-container>\r\n  </ng-container>\r\n</ul>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { PageAlertService } from '@abp/ng.theme.shared';\r\n\r\n@Component({\r\n  selector: 'abp-page-alert-container',\r\n  templateUrl: './page-alert-container.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PageAlertContainerComponent {\r\n  constructor(public service: PageAlertService) {}\r\n}\r\n","<ng-container *ngFor=\"let alert of service.alerts$ | async; let i = index\">\r\n  <div\r\n    class=\"alert alert-{{ alert.type }} fade show\"\r\n    [ngClass]=\"{ 'alert-dismissible fade show': alert.dismissible }\"\r\n    role=\"alert\"\r\n  >\r\n    <h4 class=\"alert-heading\" *ngIf=\"alert.title\">\r\n      {{ alert.title | abpLocalization: alert.titleLocalizationParams }}\r\n    </h4>\r\n    {{ alert.message | abpLocalization: alert.messageLocalizationParams }}\r\n    <button\r\n      *ngIf=\"alert.dismissible\"\r\n      type=\"button\"\r\n      class=\"btn-close\"\r\n      data-dismiss=\"alert\"\r\n      aria-label=\"Close\"\r\n      (click)=\"service.remove(i)\"\r\n    ></button>\r\n  </div>\r\n</ng-container>\r\n","import { TenantBoxService } from '@abp/ng.account.core';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'abp-tenant-box',\r\n  templateUrl: './tenant-box.component.html',\r\n  providers: [TenantBoxService],\r\n})\r\nexport class TenantBoxComponent {\r\n  constructor(public service: TenantBoxService) {}\r\n}\r\n","<ng-container *ngIf=\"(service.currentTenant$ | async) || { name: '' } as currentTenant\">\r\n  <div class=\"card shadow-sm rounded mb-3\">\r\n    <div class=\"card-body px-5\">\r\n      <div class=\"row\">\r\n        <div class=\"col\">\r\n          <span style=\"font-size: 0.8em\" class=\"text-uppercase text-muted\">{{\r\n            'AbpUiMultiTenancy::Tenant' | abpLocalization\r\n          }}</span\r\n          ><br />\r\n          <h6 class=\"m-0 d-inline-block\">\r\n            <i>{{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}</i>\r\n          </h6>\r\n        </div>\r\n        <div class=\"col-auto\">\r\n          <a\r\n            id=\"AbpTenantSwitchLink\"\r\n            href=\"javascript:void(0);\"\r\n            class=\"btn btn-sm mt-3 btn-outline-primary\"\r\n            (click)=\"service.onSwitch()\"\r\n            >{{ 'AbpUiMultiTenancy::Switch' | abpLocalization }}</a\r\n          >\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <abp-modal [(visible)]=\"service.isModalVisible\" [busy]=\"service.modalBusy\">\r\n    <ng-template #abpHeader>\r\n      <h5>Switch Tenant</h5>\r\n    </ng-template>\r\n    <ng-template #abpBody>\r\n      <form (ngSubmit)=\"service.save()\">\r\n        <div class=\"mt-2\">\r\n          <div class=\"mb-3 form-group\">\r\n            <label for=\"name\" class=\"form-label\">{{\r\n              'AbpUiMultiTenancy::Name' | abpLocalization\r\n            }}</label>\r\n            <input\r\n              [(ngModel)]=\"service.name\"\r\n              type=\"text\"\r\n              id=\"name\"\r\n              name=\"tenant\"\r\n              class=\"form-control\"\r\n              autofocus\r\n            />\r\n          </div>\r\n          <p>{{ 'AbpUiMultiTenancy::SwitchTenantHint' | abpLocalization }}</p>\r\n        </div>\r\n      </form>\r\n    </ng-template>\r\n    <ng-template #abpFooter>\r\n      <button abpClose type=\"button\" class=\"btn btn-secondary\">\r\n        {{ 'AbpTenantManagement::Cancel' | abpLocalization }}\r\n      </button>\r\n      <abp-button\r\n        type=\"abp-button\"\r\n        iconClass=\"fa fa-check\"\r\n        (click)=\"service.save()\"\r\n        [disabled]=\"currentTenant?.name === service.name\"\r\n      >\r\n        <span>{{ 'AbpTenantManagement::Save' | abpLocalization }}</span>\r\n      </abp-button>\r\n    </ng-template>\r\n  </abp-modal>\r\n</ng-container>\r\n","import { AuthWrapperService } from '@abp/ng.account.core';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'abp-auth-wrapper',\r\n  templateUrl: './auth-wrapper.component.html',\r\n  providers: [AuthWrapperService],\r\n})\r\nexport class AuthWrapperComponent {\r\n  constructor(public service: AuthWrapperService) {}\r\n}\r\n","<div class=\"row\">\r\n  <div class=\"mx-auto col col-md-5\">\r\n    <ng-container *ngIf=\"(service.isMultiTenancyEnabled$ | async) && service.isTenantBoxVisible\">\r\n      <abp-tenant-box\r\n        *abpReplaceableTemplate=\"{ componentKey: service.tenantBoxKey }\"\r\n      ></abp-tenant-box>\r\n    </ng-container>\r\n\r\n    <div class=\"abp-account-container\">\r\n      <div\r\n        *ngIf=\"service.enableLocalLogin$ | async; else disableLocalLoginTemplate\"\r\n        class=\"card mt-3 shadow-sm rounded\"\r\n      >\r\n        <div class=\"card-body p-5\">\r\n          <ng-content></ng-content>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #disableLocalLoginTemplate>\r\n  <div class=\"alert alert-warning\">\r\n    <strong>{{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}</strong>\r\n    {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}\r\n  </div>\r\n</ng-template>\r\n","import { AfterViewInit, Component } from '@angular/core';\r\nimport { eLayoutType, SubscriptionService } from '@abp/ng.core';\r\nimport { LayoutService } from '../../services/layout.service';\r\n\r\n@Component({\r\n  selector: 'abp-layout-account',\r\n  templateUrl: './account-layout.component.html',\r\n  providers: [LayoutService, SubscriptionService],\r\n})\r\nexport class AccountLayoutComponent implements AfterViewInit {\r\n  // required for dynamic component\r\n  static type = eLayoutType.account;\r\n\r\n  authWrapperKey = 'Account.AuthWrapperComponent';\r\n\r\n  constructor(public service: LayoutService) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.service.subscribeWindowSize();\r\n  }\r\n}\r\n","<nav\r\n  class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n  id=\"main-navbar\"\r\n  style=\"min-height: 4rem\"\r\n>\r\n  <div class=\"container\">\r\n    <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n    <button\r\n      class=\"navbar-toggler\"\r\n      type=\"button\"\r\n      [attr.aria-expanded]=\"!service.isCollapsed\"\r\n      (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n    >\r\n      <span class=\"navbar-toggler-icon\"></span>\r\n    </button>\r\n    <div\r\n      class=\"navbar-collapse\"\r\n      [class.overflow-hidden]=\"service.smallScreen\"\r\n      id=\"main-navbar-collapse\"\r\n    >\r\n      <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n      <div\r\n        *ngIf=\"service.smallScreen\"\r\n        [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\"\r\n      >\r\n        <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n      </div>\r\n\r\n      <ng-template #navigations>\r\n        <abp-routes\r\n          *abpReplaceableTemplate=\"{\r\n            componentKey: service.routesComponentKey,\r\n            inputs: {\r\n              smallScreen: { value: service.smallScreen }\r\n            }\r\n          }\"\r\n          class=\"mx-auto\"\r\n          [smallScreen]=\"service.smallScreen\"\r\n        ></abp-routes>\r\n\r\n        <abp-nav-items\r\n          *abpReplaceableTemplate=\"{\r\n            componentKey: service.navItemsComponentKey\r\n          }\"\r\n        ></abp-nav-items>\r\n      </ng-template>\r\n    </div>\r\n  </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n  <abp-page-alert-container></abp-page-alert-container>\r\n  <abp-auth-wrapper\r\n    *abpReplaceableTemplate=\"{\r\n      componentKey: authWrapperKey\r\n    }\"\r\n  >\r\n    <router-outlet #outlet=\"outlet\"></router-outlet>\r\n  </abp-auth-wrapper>\r\n</div>\r\n","import {eLayoutType, SubscriptionService} from '@abp/ng.core';\r\nimport { collapseWithMargin, slideFromBottom } from '@abp/ng.theme.shared';\r\nimport {AfterViewInit, Component} from '@angular/core';\r\nimport { LayoutService } from '../../services/layout.service';\r\n\r\n\r\n@Component({\r\n  selector: 'abp-layout-application',\r\n  templateUrl: './application-layout.component.html',\r\n  animations: [slideFromBottom, collapseWithMargin],\r\n  providers: [LayoutService, SubscriptionService],\r\n})\r\nexport class ApplicationLayoutComponent implements AfterViewInit {\r\n  // required for dynamic component\r\n  static type = eLayoutType.application;\r\n\r\n  constructor(public service: LayoutService) {}\r\n\r\n  ngAfterViewInit() {\r\n    this.service.subscribeWindowSize();\r\n  }\r\n}\r\n","<nav\r\n  class=\"navbar navbar-expand-lg navbar-dark bg-dark shadow-sm flex-column flex-md-row mb-4\"\r\n  id=\"main-navbar\"\r\n  style=\"min-height: 4rem\"\r\n>\r\n  <div class=\"container\">\r\n    <abp-logo *abpReplaceableTemplate=\"{ componentKey: service.logoComponentKey }\"></abp-logo>\r\n    <button\r\n      class=\"navbar-toggler\"\r\n      type=\"button\"\r\n      [attr.aria-expanded]=\"!service.isCollapsed\"\r\n      (click)=\"service.isCollapsed = !service.isCollapsed\"\r\n    >\r\n      <span class=\"navbar-toggler-icon\"></span>\r\n    </button>\r\n    <div class=\"navbar-collapse\" [class.overflow-hidden]=\"service.smallScreen\" id=\"main-navbar-collapse\">\r\n      <ng-container *ngTemplateOutlet=\"!service.smallScreen ? navigations : null\"></ng-container>\r\n\r\n      <div *ngIf=\"service.smallScreen\" [@collapseWithMargin]=\"service.isCollapsed ? 'collapsed' : 'expanded'\">\r\n        <ng-container *ngTemplateOutlet=\"navigations\"></ng-container>\r\n      </div>\r\n\r\n      <ng-template #navigations>\r\n        <abp-routes\r\n          *abpReplaceableTemplate=\"{\r\n            componentKey: service.routesComponentKey,\r\n            inputs: {\r\n              smallScreen: { value: service.smallScreen }\r\n            }\r\n          }\"\r\n          class=\"mx-auto\"\r\n          [smallScreen]=\"service.smallScreen\"\r\n        ></abp-routes>\r\n\r\n        <abp-nav-items\r\n          *abpReplaceableTemplate=\"{\r\n            componentKey: service.navItemsComponentKey\r\n          }\"\r\n        ></abp-nav-items>\r\n      </ng-template>\r\n    </div>\r\n  </div>\r\n</nav>\r\n\r\n<!-- [@slideFromBottom]=\"outlet.isActivated && outlet.activatedRoute?.routeConfig?.path\" TODO: throws ExpressionChangedAfterItHasBeenCheck when animation is active. It should be fixed -->\r\n<div class=\"container\">\r\n  <abp-page-alert-container></abp-page-alert-container>\r\n\r\n  <router-outlet #outlet=\"outlet\"></router-outlet>\r\n</div>\r\n","import { Component } from '@angular/core';\r\nimport { eLayoutType } from '@abp/ng.core';\r\n\r\n@Component({\r\n  selector: 'abp-layout-empty',\r\n  template: `\r\n    <router-outlet></router-outlet>\r\n    <abp-confirmation></abp-confirmation>\r\n  `,\r\n})\r\nexport class EmptyLayoutComponent {\r\n  static type = eLayoutType.empty;\r\n}\r\n","import {\r\n  AuthService,\r\n  ConfigStateService,\r\n  CurrentUserDto,\r\n  NAVIGATE_TO_MANAGE_PROFILE,\r\n  SessionStateService,\r\n} from '@abp/ng.core';\r\nimport { UserMenu, UserMenuService } from '@abp/ng.theme.shared';\r\nimport { Component, Inject, TrackByFunction } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'abp-current-user',\r\n  templateUrl: './current-user.component.html',\r\n})\r\nexport class CurrentUserComponent {\r\n  currentUser$: Observable<CurrentUserDto> = this.configState.getOne$('currentUser');\r\n  selectedTenant$ = this.sessionState.getTenant$();\r\n\r\n  trackByFn: TrackByFunction<UserMenu> = (_, element) => element.id;\r\n\r\n  get smallScreen(): boolean {\r\n    return window.innerWidth < 992;\r\n  }\r\n\r\n  constructor(\r\n    @Inject(NAVIGATE_TO_MANAGE_PROFILE) public readonly navigateToManageProfile: () => void,\r\n    public readonly userMenu: UserMenuService,\r\n    private authService: AuthService,\r\n    private configState: ConfigStateService,\r\n    private sessionState: SessionStateService,\r\n  ) {}\r\n\r\n  navigateToLogin() {\r\n    this.authService.navigateToLogin();\r\n  }\r\n\r\n  logout() {\r\n    this.authService.logout().subscribe();\r\n  }\r\n}\r\n","<ng-template #loginBtn>\r\n  <a role=\"button\" class=\"nav-link pointer\" (click)=\"navigateToLogin()\">{{\r\n    'AbpAccount::Login' | abpLocalization\r\n  }}</a>\r\n</ng-template>\r\n<div\r\n  *ngIf=\"(currentUser$ | async)?.isAuthenticated; else loginBtn\"\r\n  ngbDropdown\r\n  class=\"dropdown\"\r\n  #currentUserDropdown=\"ngbDropdown\"\r\n  display=\"static\"\r\n>\r\n  <a\r\n    ngbDropdownToggle\r\n    class=\"nav-link\"\r\n    href=\"javascript:void(0)\"\r\n    role=\"button\"\r\n    id=\"dropdownMenuLink\"\r\n    data-toggle=\"dropdown\"\r\n    aria-haspopup=\"true\"\r\n    aria-expanded=\"false\"\r\n  >\r\n    <small *ngIf=\"(selectedTenant$ | async)?.name as tenantName\"\r\n      ><i>{{ tenantName }}</i\r\n      >\\</small\r\n    >\r\n    <strong>{{ (currentUser$ | async)?.userName }}</strong>\r\n  </a>\r\n  <div\r\n    class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\r\n    aria-labelledby=\"dropdownMenuLink\"\r\n    [class.d-block]=\"smallScreen && currentUserDropdown.isOpen()\"\r\n  >\r\n    <ng-container *ngFor=\"let item of userMenu.items$ | async; trackBy: trackByFn\">\r\n      <ng-container *ngIf=\"item.visible && item.visible()\">\r\n        <li class=\"nav-item d-flex align-items-center\" *abpPermission=\"item.requiredPolicy\">\r\n          <ng-container\r\n            *ngIf=\"item.component; else htmlTemplate\"\r\n            [ngComponentOutlet]=\"item.component\"\r\n            [ngComponentOutletInjector]=\"item | toInjector\"\r\n          ></ng-container>\r\n\r\n          <ng-template #htmlTemplate>\r\n            <div\r\n              *ngIf=\"item.html; else textTemplate\"\r\n              [innerHTML]=\"item.html\"\r\n              (click)=\"item.action ? item.action() : null\"\r\n            ></div>\r\n          </ng-template>\r\n\r\n          <ng-template #textTemplate>\r\n            <a\r\n              *ngIf=\"item.textTemplate\"\r\n              (click)=\"item.action ? item.action() : null\"\r\n              class=\"dropdown-item pointer\"\r\n            >\r\n              <i *ngIf=\"item.textTemplate.icon\" class=\"me-1 {{ item.textTemplate.icon }}\"></i>\r\n              {{ item.textTemplate.text | abpLocalization }}</a\r\n            >\r\n          </ng-template>\r\n        </li>\r\n      </ng-container>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n","import { ConfigStateService, LanguageInfo, SessionStateService } from '@abp/ng.core';\r\nimport { Component } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'abp-languages',\r\n  template: `\r\n    <div\r\n      *ngIf=\"((dropdownLanguages$ | async)?.length || 0) > 0\"\r\n      class=\"dropdown\"\r\n      ngbDropdown\r\n      #languageDropdown=\"ngbDropdown\"\r\n      display=\"static\"\r\n    >\r\n      <a\r\n        ngbDropdownToggle\r\n        class=\"nav-link\"\r\n        href=\"javascript:void(0)\"\r\n        role=\"button\"\r\n        id=\"dropdownMenuLink\"\r\n        data-toggle=\"dropdown\"\r\n        aria-haspopup=\"true\"\r\n        aria-expanded=\"false\"\r\n      >\r\n        {{ defaultLanguage$ | async }}\r\n      </a>\r\n      <div\r\n        class=\"dropdown-menu dropdown-menu-end border-0 shadow-sm\"\r\n        aria-labelledby=\"dropdownMenuLink\"\r\n        [class.d-block]=\"smallScreen && languageDropdown.isOpen()\"\r\n      >\r\n        <a\r\n          *ngFor=\"let lang of dropdownLanguages$ | async\"\r\n          href=\"javascript:void(0)\"\r\n          class=\"dropdown-item\"\r\n          (click)=\"onChangeLang(lang.cultureName || '')\"\r\n          >{{ lang?.displayName }}</a\r\n        >\r\n      </div>\r\n    </div>\r\n  `,\r\n})\r\nexport class LanguagesComponent {\r\n  get smallScreen(): boolean {\r\n    return window.innerWidth < 992;\r\n  }\r\n\r\n  languages$: Observable<LanguageInfo[]> = this.configState.getDeep$('localization.languages');\r\n\r\n  get defaultLanguage$(): Observable<string> {\r\n    return this.languages$.pipe(\r\n      map(\r\n        languages =>\r\n          languages?.find(lang => lang.cultureName === this.selectedLangCulture)?.displayName || '',\r\n      ),\r\n    );\r\n  }\r\n\r\n  get dropdownLanguages$(): Observable<LanguageInfo[]> {\r\n    return this.languages$.pipe(\r\n      map(\r\n        languages => languages?.filter(lang => lang.cultureName !== this.selectedLangCulture) || [],\r\n      ),\r\n    );\r\n  }\r\n\r\n  get selectedLangCulture(): string {\r\n    return this.sessionState.getLanguage();\r\n  }\r\n\r\n  constructor(private sessionState: SessionStateService, private configState: ConfigStateService) {}\r\n\r\n  onChangeLang(cultureName: string) {\r\n    this.sessionState.setLanguage(cultureName);\r\n  }\r\n}\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core';\r\n\r\n@Component({\r\n  selector: 'abp-validation-error',\r\n  template: `\r\n    <div class=\"invalid-feedback\" *ngFor=\"let error of abpErrors; trackBy: trackByFn\">\r\n      {{ error.message | abpLocalization: error.interpoliteParams }}\r\n    </div>\r\n  `,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ValidationErrorComponent extends ErrorComponent {\r\n  get abpErrors(): (Validation.Error & { interpoliteParams?: string[] })[] {\r\n    if (!this.errors || !this.errors.length) return [];\r\n\r\n    return this.errors.map(error => {\r\n      if (!error.message) return error;\r\n\r\n      const index = error.message.indexOf('[');\r\n\r\n      if (index > -1) {\r\n        return {\r\n          ...error,\r\n          message: error.message.slice(0, index),\r\n          interpoliteParams: error.message.slice(index + 1, error.message.length - 1).split(','),\r\n        };\r\n      }\r\n\r\n      return error;\r\n    });\r\n  }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const LAZY_STYLES = new InjectionToken<string[]>('LAZY_STYLES');\r\n","import { LazyLoadService, LOADING_STRATEGY } from '@abp/ng.core';\r\nimport { DocumentDirHandlerService, LocaleDirection } from '@abp/ng.theme.shared';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { LAZY_STYLES } from '../tokens/lazy-styles.token';\r\nexport const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';\r\n\r\n@Injectable()\r\nexport class LazyStyleHandler {\r\n  private lazyLoad!: LazyLoadService;\r\n  private styles!: string[];\r\n  private _dir: LocaleDirection = 'ltr';\r\n\r\n  readonly loaded = new Map<string, HTMLLinkElement>();\r\n\r\n  set dir(dir: LocaleDirection) {\r\n    if (dir === this._dir) return;\r\n\r\n    this.switchCSS(dir);\r\n    this._dir = dir;\r\n  }\r\n\r\n  get dir(): LocaleDirection {\r\n    return this._dir;\r\n  }\r\n\r\n  constructor(injector: Injector) {\r\n    this.setStyles(injector);\r\n    this.setLazyLoad(injector);\r\n    this.listenToDirectionChanges(injector);\r\n  }\r\n\r\n  private getHrefFromLink(link: HTMLLinkElement | null | undefined): string {\r\n    if (!link) return '';\r\n\r\n    const a = document.createElement('a');\r\n    a.href = link.href;\r\n    return a.pathname.replace(/^\\//, '');\r\n  }\r\n\r\n  private getLoadedBootstrap(): LoadedStyle {\r\n    const href = createLazyStyleHref(BOOTSTRAP, this.dir);\r\n    const selector = `[href*=\"${href.replace(/\\.css$/, '')}\"]`;\r\n    const link = document.querySelector<HTMLLinkElement>(selector);\r\n    return { href, link };\r\n  }\r\n\r\n  private listenToDirectionChanges(injector: Injector) {\r\n    const docDirHandler = injector.get(DocumentDirHandlerService);\r\n\r\n    // will always listen, no need to unsubscribe\r\n    docDirHandler.dir$.subscribe(dir => {\r\n      this.dir = dir;\r\n    });\r\n  }\r\n\r\n  private setLazyLoad(injector: Injector) {\r\n    this.lazyLoad = injector.get(LazyLoadService);\r\n    const { href, link } = this.getLoadedBootstrap();\r\n    this.lazyLoad.loaded.set(href, link);\r\n  }\r\n\r\n  private setStyles(injector: Injector) {\r\n    this.styles = injector.get(LAZY_STYLES, [BOOTSTRAP]);\r\n  }\r\n\r\n  private switchCSS(dir: LocaleDirection) {\r\n    this.styles.forEach(style => {\r\n      const oldHref = createLazyStyleHref(style, this.dir);\r\n      const newHref = createLazyStyleHref(style, dir);\r\n      const link = this.loaded.get(newHref);\r\n      const href = this.getHrefFromLink(link) || newHref;\r\n\r\n      const strategy = LOADING_STRATEGY.PrependAnonymousStyleToHead(href);\r\n      this.lazyLoad.load(strategy).subscribe(() => {\r\n        const oldLink = this.lazyLoad.loaded.get(oldHref) as HTMLLinkElement;\r\n        this.loaded.delete(newHref);\r\n        this.loaded.set(oldHref, oldLink);\r\n        const newLink = this.lazyLoad.loaded.get(href) as HTMLLinkElement;\r\n        this.lazyLoad.loaded.delete(href);\r\n        this.lazyLoad.loaded.set(newHref, newLink);\r\n        this.lazyLoad.remove(oldHref);\r\n      });\r\n    });\r\n  }\r\n}\r\n\r\nexport function createLazyStyleHref(style: string, dir: string): string {\r\n  return style.replace(/{{\\s*dir\\s*}}/g, dir);\r\n}\r\n\r\nexport function initLazyStyleHandler(injector: Injector) {\r\n  return () => new LazyStyleHandler(injector);\r\n}\r\n\r\ninterface LoadedStyle {\r\n  href: string;\r\n  link: HTMLLinkElement | null;\r\n}\r\n","import { NavItemsService } from '@abp/ng.theme.shared';\r\nimport { APP_INITIALIZER } from '@angular/core';\r\nimport { CurrentUserComponent } from '../components/nav-items/current-user.component';\r\nimport { LanguagesComponent } from '../components/nav-items/languages.component';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\n\r\nexport const BASIC_THEME_NAV_ITEM_PROVIDERS = [\r\n  {\r\n    provide: APP_INITIALIZER,\r\n    useFactory: configureNavItems,\r\n    deps: [NavItemsService],\r\n    multi: true,\r\n  },\r\n];\r\n\r\nexport function configureNavItems(navItems: NavItemsService) {\r\n  return () => {\r\n    navItems.addItems([\r\n      {\r\n        id: eThemeBasicComponents.Languages,\r\n        order: 100,\r\n        component: LanguagesComponent,\r\n      },\r\n      {\r\n        id: eThemeBasicComponents.CurrentUser,\r\n        order: 100,\r\n        component: CurrentUserComponent,\r\n      },\r\n    ]);\r\n  };\r\n}\r\n","export default `\r\n.content-header-title {\r\n    font-size: 24px;\r\n}\r\n.entry-row {\r\n    margin-bottom: 15px;\r\n}\r\n#main-navbar-tools a.dropdown-toggle {\r\n    text-decoration: none;\r\n    color: #fff;\r\n}\r\n.navbar .dropdown-submenu {\r\n    position: relative;\r\n}\r\n.navbar .dropdown-menu {\r\n    margin: 0;\r\n    padding: 0;\r\n}\r\n.navbar .dropdown-menu a {\r\n    font-size: .9em;\r\n    padding: 10px 15px;\r\n    display: block;\r\n    min-width: 210px;\r\n    text-align: left;\r\n    border-radius: 0.25rem;\r\n    min-height: 44px;\r\n}\r\n[dir=rtl] .navbar .dropdown-menu a {\r\n    text-align: right!important;\r\n}\r\n.navbar .dropdown-submenu a::after {\r\n    transform: rotate(-90deg);\r\n    position: absolute;\r\n    right: 16px;\r\n    top: 18px;\r\n}\r\n[dir=rtl] .navbar .dropdown-submenu a::after {\r\n    transform: rotate(90deg);\r\n    left: 16px;\r\n    right: auto;\r\n    top: 20px;\r\n}\r\n.navbar .dropdown-submenu .dropdown-menu {\r\n    top: 0;\r\n    left: 100%;\r\n}\r\n/* work around for rtl. Track https://github.com/ng-bootstrap/ng-bootstrap/issues/4100 issue */\r\n[dir=rtl] .navbar .dropdown-submenu .dropdown-menu {\r\n    top: 0;\r\n    right: 100%;\r\n}\r\n.card-header .btn {\r\n    padding: 2px 6px;\r\n}\r\n.card-header h5 {\r\n    margin: 0;\r\n}\r\n.container > .card {\r\n    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\r\n}\r\n@media screen and (min-width: 992px) {\r\n    .navbar .dropdown:hover > .dropdown-menu {\r\n        display: block;\r\n    }\r\n\r\n    .navbar .dropdown-submenu:hover > .dropdown-menu {\r\n        display: block;\r\n    }\r\n}\r\n.input-validation-error {\r\n    border-color: #dc3545;\r\n}\r\n.field-validation-error {\r\n    font-size: 0.8em;\r\n}\r\n.ui-table .ui-table-tbody > tr.empty-row > div.empty-row-content {\r\n    border: 1px solid #c8c8c8;\r\n  }\r\n.abp-loading {\r\n    background: rgba(0, 0, 0, 0.05);\r\n}\r\n.modal-backdrop {\r\nbackground-color: rgba(0, 0, 0, 0.6);\r\n}\r\n\r\n.confirmation .confirmation-backdrop {\r\n\t background: rgba(0, 0, 0, 0.7) !important;\r\n}\r\n .confirmation .confirmation-dialog {\r\n\t border: none;\r\n\t border-radius: 10px;\r\n\t background-color: #fff;\r\n\t box-shadow: 0 0 10px -5px rgba(0, 0, 0, 0.5);\r\n}\r\n .confirmation .confirmation-dialog .icon-container .icon {\r\n\t stroke: #fff;\r\n\t color: #fff;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.info .icon {\r\n\t stroke: #2f96b4;\r\n\t color: #2f96b4;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.success .icon {\r\n\t stroke: #51a351;\r\n\t color: #51a351;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.warning .icon {\r\n\t stroke: #f89406;\r\n\t color: #f89406;\r\n}\r\n .confirmation .confirmation-dialog .icon-container.error .icon {\r\n\t stroke: #bd362f;\r\n\t color: #bd362f;\r\n}\r\n .confirmation .confirmation-dialog .content .title {\r\n\t color: #222;\r\n}\r\n .confirmation .confirmation-dialog .content .message {\r\n\t color: #777;\r\n}\r\n .confirmation .confirmation-dialog .footer {\r\n\t background: transparent;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button {\r\n\t background-color: #eee;\r\n\t color: #777;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button:hover, .confirmation .confirmation-dialog .footer .confirmation-button:focus, .confirmation .confirmation-dialog .footer .confirmation-button:active {\r\n\t background-color: #bbb;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm {\r\n\t background-color: #2f96b4;\r\n\t color: #fff;\r\n}\r\n .confirmation .confirmation-dialog .footer .confirmation-button--confirm:hover {\r\n\t background-color: #2e819b;\r\n}\r\n.ui-table .pagination-wrapper {\r\n    background-color: #f4f4f4;\r\n    border: 1px solid #c8c8c8;\r\n}\r\n.bordered .datatable-body-row {\r\n    border-top: 1px solid #eee;\r\n    margin-top: -1px;\r\n}\r\n.breadcrumb {\r\n    background-color: transparent;\r\n    padding: 0.27rem;\r\n}\r\n`;\r\n","import { CONTENT_STRATEGY, DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';\r\nimport { APP_INITIALIZER } from '@angular/core';\r\nimport { AccountLayoutComponent } from '../components/account-layout/account-layout.component';\r\nimport { ApplicationLayoutComponent } from '../components/application-layout/application-layout.component';\r\nimport { EmptyLayoutComponent } from '../components/empty-layout/empty-layout.component';\r\nimport styles from '../constants/styles';\r\nimport { eThemeBasicComponents } from '../enums/components';\r\n\r\nexport const BASIC_THEME_STYLES_PROVIDERS = [\r\n  {\r\n    provide: APP_INITIALIZER,\r\n    useFactory: configureStyles,\r\n    deps: [DomInsertionService, ReplaceableComponentsService],\r\n    multi: true,\r\n  },\r\n];\r\n\r\nexport function configureStyles(\r\n  domInsertion: DomInsertionService,\r\n  replaceableComponents: ReplaceableComponentsService,\r\n) {\r\n  return () => {\r\n    domInsertion.insertContent(CONTENT_STRATEGY.AppendStyleToHead(styles));\r\n\r\n    initLayouts(replaceableComponents);\r\n  };\r\n}\r\n\r\nfunction initLayouts(replaceableComponents: ReplaceableComponentsService) {\r\n  replaceableComponents.add({\r\n    key: eThemeBasicComponents.ApplicationLayout,\r\n    component: ApplicationLayoutComponent,\r\n  });\r\n  replaceableComponents.add({\r\n    key: eThemeBasicComponents.AccountLayout,\r\n    component: AccountLayoutComponent,\r\n  });\r\n  replaceableComponents.add({\r\n    key: eThemeBasicComponents.EmptyLayout,\r\n    component: EmptyLayoutComponent,\r\n  });\r\n}\r\n","import { AuthService, NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core';\r\nimport { UserMenuService } from '@abp/ng.theme.shared';\r\nimport { APP_INITIALIZER, Injector } from '@angular/core';\r\nimport { eUserMenuItems } from '../enums/user-menu-items';\r\n\r\nexport const BASIC_THEME_USER_MENU_PROVIDERS = [\r\n  {\r\n    provide: APP_INITIALIZER,\r\n    useFactory: configureUserMenu,\r\n    deps: [Injector],\r\n    multi: true,\r\n  },\r\n];\r\n\r\nexport function configureUserMenu(injector: Injector) {\r\n  const userMenu = injector.get(UserMenuService);\r\n  const authService = injector.get(AuthService);\r\n  const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);\r\n\r\n  return () => {\r\n    userMenu.addItems([\r\n      {\r\n        id: eUserMenuItems.MyAccount,\r\n        order: 100,\r\n        textTemplate: {\r\n          text: 'AbpAccount::MyAccount',\r\n          icon: 'fa fa-cog',\r\n        },\r\n        action: () => navigateToManageProfile(),\r\n      },\r\n      {\r\n        id: eUserMenuItems.Logout,\r\n        order: 101,\r\n        textTemplate: {\r\n          text: 'AbpUi::Logout',\r\n          icon: 'fa fa-power-off',\r\n        },\r\n        action: () => {\r\n          authService.logout().subscribe();\r\n        },\r\n      },\r\n    ]);\r\n  };\r\n}\r\n","import { CoreModule, noop } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { NgbCollapseModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport {\r\n  NgxValidateCoreModule,\r\n  VALIDATION_ERROR_TEMPLATE,\r\n  VALIDATION_INVALID_CLASSES,\r\n  VALIDATION_TARGET_SELECTOR,\r\n} from '@ngx-validate/core';\r\nimport { AccountLayoutComponent } from './components/account-layout/account-layout.component';\r\nimport { AuthWrapperComponent } from './components/account-layout/auth-wrapper/auth-wrapper.component';\r\nimport { TenantBoxComponent } from './components/account-layout/tenant-box/tenant-box.component';\r\nimport { ApplicationLayoutComponent } from './components/application-layout/application-layout.component';\r\nimport { EmptyLayoutComponent } from './components/empty-layout/empty-layout.component';\r\nimport { LogoComponent } from './components/logo/logo.component';\r\nimport { CurrentUserComponent } from './components/nav-items/current-user.component';\r\nimport { LanguagesComponent } from './components/nav-items/languages.component';\r\nimport { NavItemsComponent } from './components/nav-items/nav-items.component';\r\nimport { PageAlertContainerComponent } from './components/page-alert-container/page-alert-container.component';\r\nimport { RoutesComponent } from './components/routes/routes.component';\r\nimport { ValidationErrorComponent } from './components/validation-error/validation-error.component';\r\nimport { LazyStyleHandler } from './handlers/lazy-style.handler';\r\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './providers/nav-item.provider';\r\nimport { BASIC_THEME_STYLES_PROVIDERS } from './providers/styles.provider';\r\nimport { BASIC_THEME_USER_MENU_PROVIDERS } from './providers/user-menu.provider';\r\n\r\nexport const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ...LAYOUTS,\r\n        ValidationErrorComponent,\r\n        LogoComponent,\r\n        NavItemsComponent,\r\n        RoutesComponent,\r\n        CurrentUserComponent,\r\n        LanguagesComponent,\r\n        PageAlertContainerComponent,\r\n        TenantBoxComponent,\r\n        AuthWrapperComponent,\r\n    ],\r\n    exports: [\r\n        ...LAYOUTS,\r\n        ValidationErrorComponent,\r\n        LogoComponent,\r\n        NavItemsComponent,\r\n        RoutesComponent,\r\n        CurrentUserComponent,\r\n        LanguagesComponent,\r\n        PageAlertContainerComponent,\r\n    ],\r\n    imports: [\r\n        CoreModule,\r\n        ThemeSharedModule,\r\n        NgbCollapseModule,\r\n        NgbDropdownModule,\r\n        NgxValidateCoreModule,\r\n    ]\r\n})\r\nexport class BaseThemeBasicModule {}\r\n\r\n@NgModule({\r\n  exports: [BaseThemeBasicModule],\r\n  imports: [BaseThemeBasicModule],\r\n})\r\nexport class ThemeBasicModule {\r\n  static forRoot(): ModuleWithProviders<ThemeBasicModule> {\r\n    return {\r\n      ngModule: ThemeBasicModule,\r\n      providers: [\r\n        BASIC_THEME_NAV_ITEM_PROVIDERS,\r\n        BASIC_THEME_USER_MENU_PROVIDERS,\r\n        BASIC_THEME_STYLES_PROVIDERS,\r\n        {\r\n          provide: VALIDATION_ERROR_TEMPLATE,\r\n          useValue: ValidationErrorComponent,\r\n        },\r\n        {\r\n          provide: VALIDATION_TARGET_SELECTOR,\r\n          useValue: '.form-group',\r\n        },\r\n        {\r\n          provide: VALIDATION_INVALID_CLASSES,\r\n          useValue: 'is-invalid',\r\n        },\r\n        LazyStyleHandler,\r\n        {\r\n          provide: APP_INITIALIZER,\r\n          useFactory: noop,\r\n          multi: true,\r\n          deps: [LazyStyleHandler],\r\n        },\r\n      ],\r\n    };\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of theme-basic\r\n */\r\n\r\nexport * from './lib/components';\r\nexport * from './lib/enums';\r\nexport * from './lib/handlers';\r\nexport * from './lib/models';\r\nexport * from './lib/providers';\r\nexport * from './lib/theme-basic.module';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ErrorComponent"],"mappings":"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"}