@abp/ng.theme.basic 4.4.0 → 5.0.0-beta.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.
Files changed (91) hide show
  1. package/abp-ng.theme.basic.d.ts +1 -15
  2. package/bundles/abp-ng.theme.basic-testing.umd.js +33 -7
  3. package/bundles/abp-ng.theme.basic-testing.umd.js.map +1 -1
  4. package/bundles/abp-ng.theme.basic.umd.js +305 -263
  5. package/bundles/abp-ng.theme.basic.umd.js.map +1 -1
  6. package/esm2015/abp-ng.theme.basic.js +1 -16
  7. package/esm2015/abp-ng.theme.basic.js.map +1 -0
  8. package/esm2015/lib/components/account-layout/account-layout.component.js +22 -11
  9. package/esm2015/lib/components/account-layout/account-layout.component.js.map +1 -0
  10. package/esm2015/lib/components/account-layout/auth-wrapper/auth-wrapper.component.js +17 -13
  11. package/esm2015/lib/components/account-layout/auth-wrapper/auth-wrapper.component.js.map +1 -0
  12. package/esm2015/lib/components/account-layout/tenant-box/tenant-box.component.js +18 -13
  13. package/esm2015/lib/components/account-layout/tenant-box/tenant-box.component.js.map +1 -0
  14. package/esm2015/lib/components/application-layout/application-layout.component.js +22 -12
  15. package/esm2015/lib/components/application-layout/application-layout.component.js.map +1 -0
  16. package/esm2015/lib/components/empty-layout/empty-layout.component.js +17 -8
  17. package/esm2015/lib/components/empty-layout/empty-layout.component.js.map +1 -0
  18. package/esm2015/lib/components/index.js +1 -1
  19. package/esm2015/lib/components/index.js.map +1 -0
  20. package/esm2015/lib/components/logo/logo.component.js +29 -11
  21. package/esm2015/lib/components/logo/logo.component.js.map +1 -0
  22. package/esm2015/lib/components/nav-items/current-user.component.js +17 -13
  23. package/esm2015/lib/components/nav-items/current-user.component.js.map +1 -0
  24. package/esm2015/lib/components/nav-items/languages.component.js +51 -16
  25. package/esm2015/lib/components/nav-items/languages.component.js.map +1 -0
  26. package/esm2015/lib/components/nav-items/nav-items.component.js +14 -10
  27. package/esm2015/lib/components/nav-items/nav-items.component.js.map +1 -0
  28. package/esm2015/lib/components/page-alert-container/page-alert-container.component.js +15 -11
  29. package/esm2015/lib/components/page-alert-container/page-alert-container.component.js.map +1 -0
  30. package/esm2015/lib/components/routes/routes.component.js +22 -16
  31. package/esm2015/lib/components/routes/routes.component.js.map +1 -0
  32. package/esm2015/lib/components/validation-error/validation-error.component.js +19 -9
  33. package/esm2015/lib/components/validation-error/validation-error.component.js.map +1 -0
  34. package/esm2015/lib/constants/styles.js +1 -1
  35. package/esm2015/lib/constants/styles.js.map +1 -0
  36. package/esm2015/lib/enums/components.js +1 -1
  37. package/esm2015/lib/enums/components.js.map +1 -0
  38. package/esm2015/lib/enums/index.js +1 -1
  39. package/esm2015/lib/enums/index.js.map +1 -0
  40. package/esm2015/lib/models/index.js +1 -1
  41. package/esm2015/lib/models/index.js.map +1 -0
  42. package/esm2015/lib/models/layout.js +1 -1
  43. package/esm2015/lib/models/layout.js.map +1 -0
  44. package/esm2015/lib/providers/index.js +1 -1
  45. package/esm2015/lib/providers/index.js.map +1 -0
  46. package/esm2015/lib/providers/nav-item.provider.js +1 -1
  47. package/esm2015/lib/providers/nav-item.provider.js.map +1 -0
  48. package/esm2015/lib/providers/styles.provider.js +2 -2
  49. package/esm2015/lib/providers/styles.provider.js.map +1 -0
  50. package/esm2015/lib/services/layout.service.js +8 -8
  51. package/esm2015/lib/services/layout.service.js.map +1 -0
  52. package/esm2015/lib/theme-basic.module.js +74 -41
  53. package/esm2015/lib/theme-basic.module.js.map +1 -0
  54. package/esm2015/public-api.js +1 -1
  55. package/esm2015/public-api.js.map +1 -0
  56. package/esm2015/testing/abp-ng.theme.basic-testing.js +1 -1
  57. package/esm2015/testing/abp-ng.theme.basic-testing.js.map +1 -0
  58. package/esm2015/testing/lib/theme-basic-testing.module.js +12 -7
  59. package/esm2015/testing/lib/theme-basic-testing.module.js.map +1 -0
  60. package/esm2015/testing/public-api.js +1 -1
  61. package/esm2015/testing/public-api.js.map +1 -0
  62. package/fesm2015/abp-ng.theme.basic-testing.js +11 -6
  63. package/fesm2015/abp-ng.theme.basic-testing.js.map +1 -1
  64. package/fesm2015/abp-ng.theme.basic.js +334 -240
  65. package/fesm2015/abp-ng.theme.basic.js.map +1 -1
  66. package/lib/components/account-layout/account-layout.component.d.ts +3 -0
  67. package/lib/components/account-layout/auth-wrapper/auth-wrapper.component.d.ts +4 -3
  68. package/lib/components/account-layout/tenant-box/tenant-box.component.d.ts +4 -3
  69. package/lib/components/application-layout/application-layout.component.d.ts +3 -0
  70. package/lib/components/empty-layout/empty-layout.component.d.ts +3 -0
  71. package/lib/components/logo/logo.component.d.ts +3 -0
  72. package/lib/components/nav-items/current-user.component.d.ts +3 -0
  73. package/lib/components/nav-items/languages.component.d.ts +3 -0
  74. package/lib/components/nav-items/nav-items.component.d.ts +3 -0
  75. package/lib/components/page-alert-container/page-alert-container.component.d.ts +3 -0
  76. package/lib/components/routes/routes.component.d.ts +3 -0
  77. package/lib/components/validation-error/validation-error.component.d.ts +3 -0
  78. package/lib/providers/nav-item.provider.d.ts +1 -1
  79. package/lib/providers/styles.provider.d.ts +2 -2
  80. package/lib/services/layout.service.d.ts +3 -0
  81. package/lib/theme-basic.module.d.ts +23 -0
  82. package/package.json +7 -5
  83. package/testing/abp-ng.theme.basic-testing.d.ts +1 -0
  84. package/testing/lib/theme-basic-testing.module.d.ts +5 -0
  85. package/testing/package.json +0 -1
  86. package/abp-ng.theme.basic.metadata.json +0 -1
  87. package/bundles/abp-ng.theme.basic-testing.umd.min.js +0 -2
  88. package/bundles/abp-ng.theme.basic-testing.umd.min.js.map +0 -1
  89. package/bundles/abp-ng.theme.basic.umd.min.js +0 -17
  90. package/bundles/abp-ng.theme.basic.umd.min.js.map +0 -1
  91. package/testing/abp-ng.theme.basic-testing.metadata.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"abp-ng.theme.basic.js","sources":["../../../packages/theme-basic/src/lib/services/layout.service.ts","../../../packages/theme-basic/src/lib/components/account-layout/account-layout.component.ts","../../../packages/theme-basic/src/lib/components/account-layout/auth-wrapper/auth-wrapper.component.ts","../../../packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.ts","../../../packages/theme-basic/src/lib/components/application-layout/application-layout.component.ts","../../../packages/theme-basic/src/lib/components/empty-layout/empty-layout.component.ts","../../../packages/theme-basic/src/lib/components/logo/logo.component.ts","../../../packages/theme-basic/src/lib/components/nav-items/current-user.component.ts","../../../packages/theme-basic/src/lib/components/nav-items/languages.component.ts","../../../packages/theme-basic/src/lib/components/nav-items/nav-items.component.ts","../../../packages/theme-basic/src/lib/components/routes/routes.component.ts","../../../packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts","../../../packages/theme-basic/src/lib/components/page-alert-container/page-alert-container.component.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 { ChangeDetectorRef, Injectable } from '@angular/core';\nimport { eThemeBasicComponents } from '../enums';\nimport { SubscriptionService } from '@abp/ng.core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\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 { 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","import { Component, OnInit } from '@angular/core';\nimport { AuthWrapperService } from '@abp/ng.account.core';\n\n@Component({\n selector: 'abp-auth-wrapper',\n templateUrl: './auth-wrapper.component.html',\n providers: [AuthWrapperService],\n})\nexport class AuthWrapperComponent implements OnInit {\n constructor(public service: AuthWrapperService) {}\n\n ngOnInit(): void {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TenantBoxService } from '@abp/ng.account.core';\n\n@Component({\n selector: 'abp-tenant-box',\n templateUrl: './tenant-box.component.html',\n providers: [TenantBoxService],\n})\nexport class TenantBoxComponent implements OnInit {\n constructor(public service: TenantBoxService) {}\n\n ngOnInit(): void {}\n}\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","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 { 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 {\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,\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","import { ConfigStateService, LanguageInfo, SessionStateService } from '@abp/ng.core';\nimport { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport snq from 'snq';\n\n@Component({\n selector: 'abp-languages',\n // tslint:disable-next-line: component-max-inline-declarations\n template: `\n <div\n *ngIf=\"(dropdownLanguages$ | async)?.length > 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-right 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 snq(\n () => languages.find(lang => lang.cultureName === this.selectedLangCulture).displayName,\n ),\n '',\n ),\n );\n }\n\n get dropdownLanguages$(): Observable<LanguageInfo[]> {\n return this.languages$.pipe(\n map(\n languages =>\n snq(() => languages.filter(lang => lang.cultureName !== this.selectedLangCulture)),\n [],\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","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","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 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","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 { 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","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.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 { ReplaceableComponentsService, CONTENT_STRATEGY, DomInsertionService } from '@abp/ng.core';\nimport { APP_INITIALIZER } from '@angular/core';\nimport { Store } from '@ngxs/store';\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 } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { 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 { 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 { RoutesComponent } from './components/routes/routes.component';\nimport { ValidationErrorComponent } from './components/validation-error/validation-error.component';\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './providers/nav-item.provider';\nimport { BASIC_THEME_STYLES_PROVIDERS } from './providers/styles.provider';\nimport { PageAlertContainerComponent } from './components/page-alert-container/page-alert-container.component';\nimport { TenantBoxComponent } from './components/account-layout/tenant-box/tenant-box.component';\nimport { AuthWrapperComponent } from './components/account-layout/auth-wrapper/auth-wrapper.component';\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 ],\n };\n }\n}\n","/*\n * Public API Surface of theme-basic\n */\n\nexport * from './lib/components';\nexport * from './lib/enums';\nexport * from './lib/models';\nexport * from './lib/providers';\nexport * from './lib/theme-basic.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AccountLayoutComponent as ɵc} from './lib/components/account-layout/account-layout.component';\nexport {AuthWrapperComponent as ɵm} from './lib/components/account-layout/auth-wrapper/auth-wrapper.component';\nexport {TenantBoxComponent as ɵl} from './lib/components/account-layout/tenant-box/tenant-box.component';\nexport {ApplicationLayoutComponent as ɵa} from './lib/components/application-layout/application-layout.component';\nexport {EmptyLayoutComponent as ɵd} from './lib/components/empty-layout/empty-layout.component';\nexport {LogoComponent as ɵf} from './lib/components/logo/logo.component';\nexport {CurrentUserComponent as ɵi} from './lib/components/nav-items/current-user.component';\nexport {LanguagesComponent as ɵj} from './lib/components/nav-items/languages.component';\nexport {NavItemsComponent as ɵg} from './lib/components/nav-items/nav-items.component';\nexport {PageAlertContainerComponent as ɵk} from './lib/components/page-alert-container/page-alert-container.component';\nexport {RoutesComponent as ɵh} from './lib/components/routes/routes.component';\nexport {ValidationErrorComponent as ɵe} from './lib/components/validation-error/validation-error.component';\nexport {BASIC_THEME_NAV_ITEM_PROVIDERS as ɵn,configureNavItems as ɵo} from './lib/providers/nav-item.provider';\nexport {BASIC_THEME_STYLES_PROVIDERS as ɵp,configureStyles as ɵq} from './lib/providers/styles.provider';\nexport {LayoutService as ɵb} from './lib/services/layout.service';"],"names":["ErrorComponent"],"mappings":"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"}
1
+ {"version":3,"file":"abp-ng.theme.basic.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","../../../../packages/theme-basic/src/lib/components/validation-error/validation-error.component.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 { ChangeDetectorRef, Injectable } from '@angular/core';\nimport { eThemeBasicComponents } from '../enums';\nimport { SubscriptionService } from '@abp/ng.core';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\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 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 #navbarRootDropdown\n class=\"nav-item dropdown\"\n display=\"static\"\n *abpPermission=\"route.requiredPolicy\"\n (click)=\"\n navbarRootDropdown.expand\n ? (navbarRootDropdown.expand = false)\n : (navbarRootDropdown.expand = 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 && navbarRootDropdown.expand\"\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-left 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 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()\">\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\">&times;</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) || {} 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=\"form-group\">\n <label for=\"name\">{{ 'AbpUiMultiTenancy::Name' | abpLocalization }}</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,\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-right 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 mr-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 mr-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\"\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-right 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","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 { 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.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 } from '@abp/ng.core';\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\nimport { 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 { 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 { RoutesComponent } from './components/routes/routes.component';\nimport { ValidationErrorComponent } from './components/validation-error/validation-error.component';\nimport { BASIC_THEME_NAV_ITEM_PROVIDERS } from './providers/nav-item.provider';\nimport { BASIC_THEME_STYLES_PROVIDERS } from './providers/styles.provider';\nimport { PageAlertContainerComponent } from './components/page-alert-container/page-alert-container.component';\nimport { TenantBoxComponent } from './components/account-layout/tenant-box/tenant-box.component';\nimport { AuthWrapperComponent } from './components/account-layout/auth-wrapper/auth-wrapper.component';\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 ],\n };\n }\n}\n","/*\n * Public API Surface of theme-basic\n */\n\nexport * from './lib/components';\nexport * from './lib/enums';\nexport * from './lib/models';\nexport * from './lib/providers';\nexport * from './lib/theme-basic.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ErrorComponent"],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  import { AfterViewInit } from '@angular/core';
2
2
  import { eLayoutType } from '@abp/ng.core';
3
3
  import { LayoutService } from '../../services/layout.service';
4
+ import * as i0 from "@angular/core";
4
5
  export declare class AccountLayoutComponent implements AfterViewInit {
5
6
  service: LayoutService;
6
7
  static type: eLayoutType;
7
8
  authWrapperKey: string;
8
9
  constructor(service: LayoutService);
9
10
  ngAfterViewInit(): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<AccountLayoutComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<AccountLayoutComponent, "abp-layout-account", never, {}, {}, never, never>;
10
13
  }
@@ -1,7 +1,8 @@
1
- import { OnInit } from '@angular/core';
2
1
  import { AuthWrapperService } from '@abp/ng.account.core';
3
- export declare class AuthWrapperComponent implements OnInit {
2
+ import * as i0 from "@angular/core";
3
+ export declare class AuthWrapperComponent {
4
4
  service: AuthWrapperService;
5
5
  constructor(service: AuthWrapperService);
6
- ngOnInit(): void;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthWrapperComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<AuthWrapperComponent, "abp-auth-wrapper", never, {}, {}, never, ["*"]>;
7
8
  }
@@ -1,7 +1,8 @@
1
- import { OnInit } from '@angular/core';
2
1
  import { TenantBoxService } from '@abp/ng.account.core';
3
- export declare class TenantBoxComponent implements OnInit {
2
+ import * as i0 from "@angular/core";
3
+ export declare class TenantBoxComponent {
4
4
  service: TenantBoxService;
5
5
  constructor(service: TenantBoxService);
6
- ngOnInit(): void;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<TenantBoxComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<TenantBoxComponent, "abp-tenant-box", never, {}, {}, never, never>;
7
8
  }
@@ -1,9 +1,12 @@
1
1
  import { eLayoutType } from '@abp/ng.core';
2
2
  import { AfterViewInit } from '@angular/core';
3
3
  import { LayoutService } from '../../services/layout.service';
4
+ import * as i0 from "@angular/core";
4
5
  export declare class ApplicationLayoutComponent implements AfterViewInit {
5
6
  service: LayoutService;
6
7
  static type: eLayoutType;
7
8
  constructor(service: LayoutService);
8
9
  ngAfterViewInit(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<ApplicationLayoutComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<ApplicationLayoutComponent, "abp-layout-application", never, {}, {}, never, never>;
9
12
  }
@@ -1,4 +1,7 @@
1
1
  import { eLayoutType } from '@abp/ng.core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class EmptyLayoutComponent {
3
4
  static type: eLayoutType;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<EmptyLayoutComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<EmptyLayoutComponent, "abp-layout-empty", never, {}, {}, never, never>;
4
7
  }
@@ -1,6 +1,9 @@
1
1
  import { ApplicationInfo, EnvironmentService } from '@abp/ng.core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class LogoComponent {
3
4
  private environment;
4
5
  get appInfo(): ApplicationInfo;
5
6
  constructor(environment: EnvironmentService);
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<LogoComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<LogoComponent, "abp-logo", never, {}, {}, never, never>;
6
9
  }
@@ -1,5 +1,6 @@
1
1
  import { AuthService, ConfigStateService, CurrentUserDto, SessionStateService } from '@abp/ng.core';
2
2
  import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class CurrentUserComponent {
4
5
  navigateToManageProfile: any;
5
6
  private authService;
@@ -11,4 +12,6 @@ export declare class CurrentUserComponent {
11
12
  constructor(navigateToManageProfile: any, authService: AuthService, configState: ConfigStateService, sessionState: SessionStateService);
12
13
  navigateToLogin(): void;
13
14
  logout(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<CurrentUserComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<CurrentUserComponent, "abp-current-user", never, {}, {}, never, never>;
14
17
  }
@@ -1,5 +1,6 @@
1
1
  import { ConfigStateService, LanguageInfo, SessionStateService } from '@abp/ng.core';
2
2
  import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class LanguagesComponent {
4
5
  private sessionState;
5
6
  private configState;
@@ -10,4 +11,6 @@ export declare class LanguagesComponent {
10
11
  get selectedLangCulture(): string;
11
12
  constructor(sessionState: SessionStateService, configState: ConfigStateService);
12
13
  onChangeLang(cultureName: string): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<LanguagesComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<LanguagesComponent, "abp-languages", never, {}, {}, never, never>;
13
16
  }
@@ -1,7 +1,10 @@
1
1
  import { NavItem, NavItemsService } from '@abp/ng.theme.shared';
2
2
  import { TrackByFunction } from '@angular/core';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class NavItemsComponent {
4
5
  readonly navItems: NavItemsService;
5
6
  trackByFn: TrackByFunction<NavItem>;
6
7
  constructor(navItems: NavItemsService);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavItemsComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavItemsComponent, "abp-nav-items", never, {}, {}, never, never>;
7
10
  }
@@ -1,5 +1,8 @@
1
1
  import { PageAlertService } from '@abp/ng.theme.shared';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class PageAlertContainerComponent {
3
4
  service: PageAlertService;
4
5
  constructor(service: PageAlertService);
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<PageAlertContainerComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<PageAlertContainerComponent, "abp-page-alert-container", never, {}, {}, never, never>;
5
8
  }
@@ -1,5 +1,6 @@
1
1
  import { ABP, RoutesService, TreeNode } from '@abp/ng.core';
2
2
  import { ElementRef, QueryList, Renderer2, TrackByFunction } from '@angular/core';
3
+ import * as i0 from "@angular/core";
3
4
  export declare class RoutesComponent {
4
5
  readonly routesService: RoutesService;
5
6
  protected renderer: Renderer2;
@@ -9,4 +10,6 @@ export declare class RoutesComponent {
9
10
  constructor(routesService: RoutesService, renderer: Renderer2);
10
11
  isDropdown(node: TreeNode<ABP.Route>): boolean;
11
12
  closeDropdown(): void;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<RoutesComponent, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<RoutesComponent, "abp-routes", never, { "smallScreen": "smallScreen"; }, {}, never, never>;
12
15
  }
@@ -1,6 +1,9 @@
1
1
  import { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-validate/core';
2
+ import * as i0 from "@angular/core";
2
3
  export declare class ValidationErrorComponent extends ErrorComponent {
3
4
  get abpErrors(): Validation.Error[] & {
4
5
  interpoliteParams?: string[];
5
6
  };
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<ValidationErrorComponent, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<ValidationErrorComponent, "abp-validation-error", never, {}, {}, never, never>;
6
9
  }
@@ -1,6 +1,6 @@
1
1
  import { NavItemsService } from '@abp/ng.theme.shared';
2
2
  export declare const BASIC_THEME_NAV_ITEM_PROVIDERS: {
3
- provide: import("@angular/core").InjectionToken<(() => void)[]>;
3
+ provide: import("@angular/core").InjectionToken<readonly (() => void | import("rxjs").Observable<unknown> | Promise<unknown>)[]>;
4
4
  useFactory: typeof configureNavItems;
5
5
  deps: (typeof NavItemsService)[];
6
6
  multi: boolean;
@@ -1,6 +1,6 @@
1
- import { ReplaceableComponentsService, DomInsertionService } from '@abp/ng.core';
1
+ import { DomInsertionService, ReplaceableComponentsService } from '@abp/ng.core';
2
2
  export declare const BASIC_THEME_STYLES_PROVIDERS: {
3
- provide: import("@angular/core").InjectionToken<(() => void)[]>;
3
+ provide: import("@angular/core").InjectionToken<readonly (() => void | import("rxjs").Observable<unknown> | Promise<unknown>)[]>;
4
4
  useFactory: typeof configureStyles;
5
5
  deps: (typeof ReplaceableComponentsService | typeof DomInsertionService)[];
6
6
  multi: boolean;
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectorRef } from '@angular/core';
2
2
  import { eThemeBasicComponents } from '../enums';
3
3
  import { SubscriptionService } from '@abp/ng.core';
4
+ import * as i0 from "@angular/core";
4
5
  export declare class LayoutService {
5
6
  private subscription;
6
7
  private cdRef;
@@ -12,4 +13,6 @@ export declare class LayoutService {
12
13
  constructor(subscription: SubscriptionService, cdRef: ChangeDetectorRef);
13
14
  private checkWindowWidth;
14
15
  subscribeWindowSize(): void;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<LayoutService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<LayoutService>;
15
18
  }
@@ -1,9 +1,32 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
2
  import { ApplicationLayoutComponent } from './components/application-layout/application-layout.component';
3
3
  import { EmptyLayoutComponent } from './components/empty-layout/empty-layout.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./components/application-layout/application-layout.component";
6
+ import * as i2 from "./components/account-layout/account-layout.component";
7
+ import * as i3 from "./components/empty-layout/empty-layout.component";
8
+ import * as i4 from "./components/validation-error/validation-error.component";
9
+ import * as i5 from "./components/logo/logo.component";
10
+ import * as i6 from "./components/nav-items/nav-items.component";
11
+ import * as i7 from "./components/routes/routes.component";
12
+ import * as i8 from "./components/nav-items/current-user.component";
13
+ import * as i9 from "./components/nav-items/languages.component";
14
+ import * as i10 from "./components/page-alert-container/page-alert-container.component";
15
+ import * as i11 from "./components/account-layout/tenant-box/tenant-box.component";
16
+ import * as i12 from "./components/account-layout/auth-wrapper/auth-wrapper.component";
17
+ import * as i13 from "@abp/ng.core";
18
+ import * as i14 from "@abp/ng.theme.shared";
19
+ import * as i15 from "@ng-bootstrap/ng-bootstrap";
20
+ import * as i16 from "@ngx-validate/core";
4
21
  export declare const LAYOUTS: (typeof ApplicationLayoutComponent | typeof EmptyLayoutComponent)[];
5
22
  export declare class BaseThemeBasicModule {
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseThemeBasicModule, never>;
24
+ static ɵmod: i0.ɵɵNgModuleDeclaration<BaseThemeBasicModule, [typeof i1.ApplicationLayoutComponent, typeof i2.AccountLayoutComponent, typeof i3.EmptyLayoutComponent, typeof i4.ValidationErrorComponent, typeof i5.LogoComponent, typeof i6.NavItemsComponent, typeof i7.RoutesComponent, typeof i8.CurrentUserComponent, typeof i9.LanguagesComponent, typeof i10.PageAlertContainerComponent, typeof i11.TenantBoxComponent, typeof i12.AuthWrapperComponent], [typeof i13.CoreModule, typeof i14.ThemeSharedModule, typeof i15.NgbCollapseModule, typeof i15.NgbDropdownModule, typeof i16.NgxValidateCoreModule], [typeof i1.ApplicationLayoutComponent, typeof i2.AccountLayoutComponent, typeof i3.EmptyLayoutComponent, typeof i4.ValidationErrorComponent, typeof i5.LogoComponent, typeof i6.NavItemsComponent, typeof i7.RoutesComponent, typeof i8.CurrentUserComponent, typeof i9.LanguagesComponent, typeof i10.PageAlertContainerComponent]>;
25
+ static ɵinj: i0.ɵɵInjectorDeclaration<BaseThemeBasicModule>;
6
26
  }
7
27
  export declare class ThemeBasicModule {
8
28
  static forRoot(): ModuleWithProviders<ThemeBasicModule>;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<ThemeBasicModule, never>;
30
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ThemeBasicModule, never, [typeof BaseThemeBasicModule], [typeof BaseThemeBasicModule]>;
31
+ static ɵinj: i0.ɵɵInjectorDeclaration<ThemeBasicModule>;
9
32
  }
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@abp/ng.theme.basic",
3
- "version": "4.4.0",
3
+ "version": "5.0.0-beta.1",
4
4
  "homepage": "https://abp.io",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/abpframework/abp.git"
8
8
  },
9
9
  "dependencies": {
10
- "@abp/ng.account.core": "~4.4.0",
11
- "@abp/ng.theme.shared": "~4.4.0",
10
+ "@abp/ng.account.core": "~4.4.3",
11
+ "@abp/ng.theme.shared": "~4.4.3",
12
12
  "tslib": "^2.0.0"
13
13
  },
14
14
  "publishConfig": {
@@ -20,6 +20,8 @@
20
20
  "esm2015": "esm2015/abp-ng.theme.basic.js",
21
21
  "fesm2015": "fesm2015/abp-ng.theme.basic.js",
22
22
  "typings": "abp-ng.theme.basic.d.ts",
23
- "metadata": "abp-ng.theme.basic.metadata.json",
24
- "sideEffects": false
23
+ "sideEffects": false,
24
+ "peerDependencies": {
25
+ "@abp/ng.core": "5.0.0-beta.1"
26
+ }
25
27
  }
@@ -1,4 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
+ /// <amd-module name="@abp/ng.theme.basic/testing" />
4
5
  export * from './public-api';
@@ -1,4 +1,9 @@
1
1
  import { ModuleWithProviders } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@abp/ng.theme.basic";
2
4
  export declare class ThemeBasicTestingModule {
3
5
  static withConfig(): ModuleWithProviders<ThemeBasicTestingModule>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<ThemeBasicTestingModule, never>;
7
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ThemeBasicTestingModule, never, [typeof i1.BaseThemeBasicModule], [typeof i1.BaseThemeBasicModule]>;
8
+ static ɵinj: i0.ɵɵInjectorDeclaration<ThemeBasicTestingModule>;
4
9
  }
@@ -5,7 +5,6 @@
5
5
  "esm2015": "../esm2015/testing/abp-ng.theme.basic-testing.js",
6
6
  "fesm2015": "../fesm2015/abp-ng.theme.basic-testing.js",
7
7
  "typings": "abp-ng.theme.basic-testing.d.ts",
8
- "metadata": "abp-ng.theme.basic-testing.metadata.json",
9
8
  "sideEffects": false,
10
9
  "name": "@abp/ng.theme.basic/testing"
11
10
  }
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":4,"exports":[{"from":"./lib/nav-item.provider"},{"from":"./lib/styles.provider"},{"from":"./lib/account-layout/tenant-box/tenant-box.component"},{"from":"./lib/application-layout/application-layout.component"},{"from":"./lib/empty-layout/empty-layout.component"},{"from":"./lib/logo/logo.component"},{"from":"./lib/nav-items/current-user.component"},{"from":"./lib/nav-items/languages.component"},{"from":"./lib/nav-items/nav-items.component"},{"from":"./lib/routes/routes.component"},{"from":"./lib/validation-error/validation-error.component"},{"from":"./lib/page-alert-container/page-alert-container.component"}],"metadata":{"LAYOUTS":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵd"}],"BaseThemeBasicModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":27,"character":1},"arguments":[{"declarations":[{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"LAYOUTS"}},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵm"}],"exports":[{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"LAYOUTS"}},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵf"},{"__symbolic":"reference","name":"ɵg"},{"__symbolic":"reference","name":"ɵh"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"},{"__symbolic":"reference","name":"ɵk"}],"imports":[{"__symbolic":"reference","module":"@abp/ng.core","name":"CoreModule","line":51,"character":4},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"ThemeSharedModule","line":52,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbCollapseModule","line":53,"character":4},{"__symbolic":"reference","module":"@ng-bootstrap/ng-bootstrap","name":"NgbDropdownModule","line":54,"character":4},{"__symbolic":"reference","module":"@ngx-validate/core","name":"NgxValidateCoreModule","line":55,"character":4}],"entryComponents":[{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"LAYOUTS"}},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵi"},{"__symbolic":"reference","name":"ɵj"}]}]}],"members":{}},"ThemeBasicModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":61,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","name":"BaseThemeBasicModule"}],"imports":[{"__symbolic":"reference","name":"BaseThemeBasicModule"}]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":[],"value":{"ngModule":{"__symbolic":"reference","name":"ThemeBasicModule"},"providers":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵp"},{"provide":{"__symbolic":"reference","module":"@ngx-validate/core","name":"VALIDATION_ERROR_TEMPLATE","line":73,"character":19},"useValue":{"__symbolic":"reference","name":"ɵe"}},{"provide":{"__symbolic":"reference","module":"@ngx-validate/core","name":"VALIDATION_TARGET_SELECTOR","line":77,"character":19},"useValue":".form-group"},{"provide":{"__symbolic":"reference","module":"@ngx-validate/core","name":"VALIDATION_INVALID_CLASSES","line":81,"character":19},"useValue":"is-invalid"}]}}}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"abp-layout-application","animations":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"slideFromBottom","line":8,"character":15},{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"collapseWithMargin","line":8,"character":32}],"providers":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"@abp/ng.core","name":"SubscriptionService","line":9,"character":29}],"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"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"ngAfterViewInit":[{"__symbolic":"method"}]},"statics":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":13,"character":16},"member":"application"}}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"SubscriptionService","line":18,"character":36},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":18,"character":72}]}],"checkWindowWidth":[{"__symbolic":"method"}],"subscribeWindowSize":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"abp-layout-account","providers":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"@abp/ng.core","name":"SubscriptionService","line":7,"character":29}],"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"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"}]}],"ngAfterViewInit":[{"__symbolic":"method"}]},"statics":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":11,"character":16},"member":"account"}}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-layout-empty","template":"\n <router-outlet></router-outlet>\n <abp-confirmation></abp-confirmation>\n "}]}],"members":{},"statics":{"type":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@abp/ng.core","name":"eLayoutType","line":11,"character":16},"member":"empty"}}},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ngx-validate/core","name":"ValidationErrorComponent","line":13,"character":46},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-validation-error","template":"\n <div class=\"invalid-feedback\" *ngFor=\"let error of abpErrors; trackBy: trackByFn\">\n {{ error.message | abpLocalization: error.interpoliteParams }}\n </div>\n ","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":10,"character":19},"member":"OnPush"},"encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":11,"character":17},"member":"None"}}]}],"members":{}},"ɵf":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-logo","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 "}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"EnvironmentService","line":26,"character":35}]}]}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-nav-items","template":"<ul class=\"navbar-nav\">\n <ng-container *ngFor=\"let item of navItems.items$ | async; trackBy: trackByFn\">\n <ng-container *ngIf=\"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"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"NavItemsService","line":10,"character":40}]}]}},"ɵh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"abp-routes","template":"<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 #navbarRootDropdown\n class=\"nav-item dropdown\"\n display=\"static\"\n *abpPermission=\"route.requiredPolicy\"\n (click)=\"\n navbarRootDropdown.expand\n ? (navbarRootDropdown.expand = false)\n : (navbarRootDropdown.expand = 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 && navbarRootDropdown.expand\"\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-left 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 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"}]}],"members":{"smallScreen":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"childrenContainers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":18,"character":3},"arguments":["childrenContainer"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"RoutesService","line":22,"character":45},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":22,"character":80}]}],"isDropdown":[{"__symbolic":"method"}],"closeDropdown":[{"__symbolic":"method"}]}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"abp-current-user","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-right 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 mr-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 mr-1\"></i>{{ 'AbpUi::Logout' | abpLocalization }}</a\n >\n </div>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":23,"character":5},"arguments":[{"__symbolic":"reference","module":"@abp/ng.core","name":"NAVIGATE_TO_MANAGE_PROFILE","line":23,"character":12}]}],null,null,null],"parameters":[null,{"__symbolic":"reference","module":"@abp/ng.core","name":"AuthService","line":24,"character":25},{"__symbolic":"reference","module":"@abp/ng.core","name":"ConfigStateService","line":25,"character":25},{"__symbolic":"reference","module":"@abp/ng.core","name":"SessionStateService","line":26,"character":26}]}],"navigateToLogin":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}]}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"abp-languages","template":"\n <div\n *ngIf=\"(dropdownLanguages$ | async)?.length > 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-right 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 "}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.core","name":"SessionStateService","line":78,"character":36},{"__symbolic":"reference","module":"@abp/ng.core","name":"ConfigStateService","line":78,"character":78}]}],"onChangeLang":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-page-alert-container","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":6,"character":17},"member":"None"},"template":"<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\">&times;</span>\n </button>\n </div>\n</ng-container>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"PageAlertService","line":9,"character":30}]}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-tenant-box","providers":[{"__symbolic":"reference","module":"@abp/ng.account.core","name":"TenantBoxService","line":6,"character":14}],"template":"<ng-container *ngIf=\"(service.currentTenant$ | async) || {} 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 size=\"md\" [(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=\"form-group\">\n <label for=\"name\">{{ 'AbpUiMultiTenancy::Name' | abpLocalization }}</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"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.account.core","name":"TenantBoxService","line":9,"character":30}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"abp-auth-wrapper","providers":[{"__symbolic":"reference","module":"@abp/ng.account.core","name":"AuthWrapperService","line":6,"character":14}],"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"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@abp/ng.account.core","name":"AuthWrapperService","line":9,"character":30}]}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵn":[{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_INITIALIZER","line":8,"character":13},"useFactory":{"__symbolic":"reference","name":"ɵo"},"deps":[{"__symbolic":"reference","module":"@abp/ng.theme.shared","name":"NavItemsService","line":10,"character":11}],"multi":true}],"ɵo":{"__symbolic":"function","parameters":["navItems"],"value":{"__symbolic":"error","message":"Lambda not supported","line":16,"character":9,"module":"./lib/providers/nav-item.provider"}},"ɵp":[{"provide":{"__symbolic":"reference","module":"@angular/core","name":"APP_INITIALIZER","line":11,"character":13},"useFactory":{"__symbolic":"reference","name":"ɵq"},"deps":[{"__symbolic":"reference","module":"@abp/ng.core","name":"DomInsertionService","line":13,"character":11},{"__symbolic":"reference","module":"@abp/ng.core","name":"ReplaceableComponentsService","line":13,"character":32}],"multi":true}],"ɵq":{"__symbolic":"function","parameters":["domInsertion","replaceableComponents"],"value":{"__symbolic":"error","message":"Lambda not supported","line":22,"character":9,"module":"./lib/providers/styles.provider"}}},"origins":{"LAYOUTS":"./lib/theme-basic.module","BaseThemeBasicModule":"./lib/theme-basic.module","ThemeBasicModule":"./lib/theme-basic.module","ɵa":"./lib/components/application-layout/application-layout.component","ɵb":"./lib/services/layout.service","ɵc":"./lib/components/account-layout/account-layout.component","ɵd":"./lib/components/empty-layout/empty-layout.component","ɵe":"./lib/components/validation-error/validation-error.component","ɵf":"./lib/components/logo/logo.component","ɵg":"./lib/components/nav-items/nav-items.component","ɵh":"./lib/components/routes/routes.component","ɵi":"./lib/components/nav-items/current-user.component","ɵj":"./lib/components/nav-items/languages.component","ɵk":"./lib/components/page-alert-container/page-alert-container.component","ɵl":"./lib/components/account-layout/tenant-box/tenant-box.component","ɵm":"./lib/components/account-layout/auth-wrapper/auth-wrapper.component","ɵn":"./lib/providers/nav-item.provider","ɵo":"./lib/providers/nav-item.provider","ɵp":"./lib/providers/styles.provider","ɵq":"./lib/providers/styles.provider"},"importAs":"@abp/ng.theme.basic"}
@@ -1,2 +0,0 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@abp/ng.theme.basic"),require("@angular/core"),require("@ngx-validate/core")):"function"==typeof define&&define.amd?define("@abp/ng.theme.basic/testing",["exports","@abp/ng.theme.basic","@angular/core","@ngx-validate/core"],n):n(((e="undefined"!=typeof globalThis?globalThis:e||self).abp=e.abp||{},e.abp.ng=e.abp.ng||{},e.abp.ng.theme=e.abp.ng.theme||{},e.abp.ng.theme.basic=e.abp.ng.theme.basic||{},e.abp.ng.theme.basic.testing={}),e.abp.ng.theme.basic,e.ng.core,e.core)}(this,(function(e,n,a,i){"use strict";var o=function(){function e(){}return e.withConfig=function(){return{ngModule:e,providers:[n.BASIC_THEME_NAV_ITEM_PROVIDERS,n.BASIC_THEME_STYLES_PROVIDERS,{provide:i.VALIDATION_ERROR_TEMPLATE,useValue:n.ValidationErrorComponent},{provide:i.VALIDATION_TARGET_SELECTOR,useValue:".form-group"},{provide:i.VALIDATION_INVALID_CLASSES,useValue:"is-invalid"}]}},e}();o.decorators=[{type:a.NgModule,args:[{exports:[n.BaseThemeBasicModule],imports:[n.BaseThemeBasicModule]}]}],e.ThemeBasicTestingModule=o,Object.defineProperty(e,"__esModule",{value:!0})}));
2
- //# sourceMappingURL=abp-ng.theme.basic-testing.umd.min.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../packages/theme-basic/testing/src/lib/theme-basic-testing.module.ts"],"names":["ThemeBasicTestingModule","withConfig","ngModule","providers","BASIC_THEME_NAV_ITEM_PROVIDERS","BASIC_THEME_STYLES_PROVIDERS","provide","VALIDATION_ERROR_TEMPLATE","useValue","ValidationErrorComponent","VALIDATION_TARGET_SELECTOR","VALIDATION_INVALID_CLASSES","NgModule","args","exports","BaseThemeBasicModule","imports"],"mappings":"smBAiBA,SAAAA,YACSA,EAAAC,WAAP,WACE,MAAO,CACLC,SAAUF,EACVG,UAAW,CACTC,EAAAA,+BACAC,EAAAA,6BACA,CACEC,QAASC,EAAAA,0BACTC,SAAUC,EAAAA,0BAEZ,CACEH,QAASI,EAAAA,2BACTF,SAAU,eAEZ,CACEF,QAASK,EAAAA,2BACTH,SAAU,0CArBnBI,EAAAA,SAAQC,KAAA,CAAC,CACRC,QAAS,CAACC,EAAAA,sBACVC,QAAS,CAACD,EAAAA","sourcesContent":["import {\n BaseThemeBasicModule,\n BASIC_THEME_NAV_ITEM_PROVIDERS,\n BASIC_THEME_STYLES_PROVIDERS,\n ValidationErrorComponent,\n} from '@abp/ng.theme.basic';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n VALIDATION_ERROR_TEMPLATE,\n VALIDATION_INVALID_CLASSES,\n VALIDATION_TARGET_SELECTOR,\n} from '@ngx-validate/core';\n\n@NgModule({\n exports: [BaseThemeBasicModule],\n imports: [BaseThemeBasicModule],\n})\nexport class ThemeBasicTestingModule {\n static withConfig(): ModuleWithProviders<ThemeBasicTestingModule> {\n return {\n ngModule: ThemeBasicTestingModule,\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 ],\n };\n }\n}\n"]}