diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8f2d5027..2da8de9b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,31 @@
### [@coreui/angular](https://coreui.io/) changelog
+##### `v2.2.2`
+- refactor(app-header): new prop `navbarBrandText` = {icon: 'C', text: 'CoreUI'} render as innerHTML
+- refactor(app-header): new prop `navbarBrandHref` = ''
+- refactor(app-header): `navbarBrandImg`: Boolean
+- fix(app-sidebar): missing semicolon
+- fix(angular.json): missing css path
+- update: `@angular/animations` to `7.1.4`
+- update: `@angular/common` to `7.1.4`
+- update: `@angular/compiler` to `7.1.4`
+- update: `@angular/core` to `7.1.4`
+- update: `@angular/forms` to `7.1.4`
+- update: `@angular/http` to `7.1.4`
+- update: `@angular/platform-browser` to `7.1.4`
+- update: `@angular/platform-browser-dynamic` to `7.1.4`
+- update: `@angular/router` to `7.1.4`
+- update: `core-js` to `2.6.1`
+- update: `@angular-devkit/build-angular` to `0.11.3`
+- update: `@angular-devkit/build-ng-packagr` to `0.11.3`
+- update: `@angular/cli` to `7.1.3`
+- update: `@angular/compiler-cli` to `7.1.4`
+- update: `@angular/language-service` to `7.1.4`
+- update: `@types/jasmine` to `3.3.4`
+- update: `@types/node` to `10.12.17`
+- update: `karma` to `3.1.4`
+- update: `tslint` to `5.12.0`
+
##### `v2.2.1`
- fix: remove `-fixed` class on layout components destroy
- chore: commit `package-lock.json`
diff --git a/angular.json b/angular.json
index 9a211136..6b199969 100644
--- a/angular.json
+++ b/angular.json
@@ -72,7 +72,7 @@
"tsConfig": "src/tsconfig.spec.json",
"karmaConfig": "src/karma.conf.js",
"styles": [
- "styles.css"
+ "src/styles.css"
],
"scripts": [],
"assets": [
diff --git a/dist/@coreui/angular/bundles/coreui-angular.umd.js b/dist/@coreui/angular/bundles/coreui-angular.umd.js
index c585e09f..47863eaf 100644
--- a/dist/@coreui/angular/bundles/coreui-angular.umd.js
+++ b/dist/@coreui/angular/bundles/coreui-angular.umd.js
@@ -745,6 +745,8 @@
var AppHeaderComponent = /** @class */ (function () {
function AppHeaderComponent(el) {
this.el = el;
+ this.navbarBrandText = { icon: '🅲', text: '🅲 CoreUI' };
+ this.navbarBrandHref = '';
}
/**
* @return {?}
@@ -755,6 +757,7 @@
function () {
Replace(this.el);
this.isFixed(this.fixed);
+ this.navbarBrandImg = Boolean(this.navbarBrand || this.navbarBrandFull || this.navbarBrandMinimized);
};
/**
* @return {?}
@@ -837,7 +840,7 @@
AppHeaderComponent.decorators = [
{ type: core.Component, args: [{
selector: 'app-header',
- template: "\n \n "
+ template: "\n \n "
}] }
];
/** @nocollapse */
@@ -851,6 +854,8 @@
navbarBrand: [{ type: core.Input }],
navbarBrandFull: [{ type: core.Input }],
navbarBrandMinimized: [{ type: core.Input }],
+ navbarBrandText: [{ type: core.Input }],
+ navbarBrandHref: [{ type: core.Input }],
sidebarToggler: [{ type: core.Input }],
mobileSidebarToggler: [{ type: core.Input }],
asideMenuToggler: [{ type: core.Input }],
@@ -1107,7 +1112,7 @@
* @return {?}
*/
function (fixed) {
- console.warn('fixedPosition() is deprecated, use isFixed() instead');
+ console.warn('deprecated fixedPosition(), use isFixed() instead');
if (this.fixed) {
document.querySelector('body').classList.add('sidebar-fixed');
}
diff --git a/dist/@coreui/angular/bundles/coreui-angular.umd.js.map b/dist/@coreui/angular/bundles/coreui-angular.umd.js.map
index a07fbad6..fd75e723 100644
--- a/dist/@coreui/angular/bundles/coreui-angular.umd.js.map
+++ b/dist/@coreui/angular/bundles/coreui-angular.umd.js.map
@@ -1 +1 @@
-{"version":3,"file":"coreui-angular.umd.js.map","sources":["ng://@coreui/angular/lib/shared/classes.ts","ng://@coreui/angular/lib/shared/toggle-classes.ts","ng://@coreui/angular/lib/shared/layout/layout.directive.ts","ng://@coreui/angular/lib/shared/layout/layout.module.ts","ng://@coreui/angular/lib/shared/replace.ts","ng://@coreui/angular/lib/aside/app-aside.component.ts","ng://@coreui/angular/lib/aside/app-aside.module.ts","ng://@coreui/angular/lib/breadcrumb/app-breadcrumb.service.ts","ng://@coreui/angular/lib/breadcrumb/app-breadcrumb.component.ts","ng://@coreui/angular/lib/breadcrumb/app-breadcrumb.module.ts","ng://@coreui/angular/lib/footer/app-footer.component.ts","ng://@coreui/angular/lib/footer/app-footer.module.ts","ng://@coreui/angular/lib/header/app-header.component.ts","ng://@coreui/angular/lib/header/app-header.module.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-footer.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-form.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-header.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-minimizer.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar.module.ts"],"sourcesContent":["export const sidebarCssClasses: Array = [\r\n 'sidebar-show',\r\n 'sidebar-sm-show',\r\n 'sidebar-md-show',\r\n 'sidebar-lg-show',\r\n 'sidebar-xl-show'\r\n];\r\n\r\nexport const asideMenuCssClasses: Array = [\r\n 'aside-menu-show',\r\n 'aside-menu-sm-show',\r\n 'aside-menu-md-show',\r\n 'aside-menu-lg-show',\r\n 'aside-menu-xl-show'\r\n];\r\n","const RemoveClasses = (NewClassNames) => {\r\n const MatchClasses = NewClassNames.map((Class) => document.querySelector('body').classList.contains(Class));\r\n return MatchClasses.indexOf(true) !== -1;\r\n};\r\n\r\nexport const ToggleClasses = (Toggle, ClassNames) => {\r\n const Level = ClassNames.indexOf(Toggle);\r\n const NewClassNames = ClassNames.slice(0, Level + 1);\r\n\r\n if (RemoveClasses(NewClassNames)) {\r\n NewClassNames.map((Class) => document.querySelector('body').classList.remove(Class));\r\n } else {\r\n document.querySelector('body').classList.add(Toggle);\r\n }\r\n};\r\n","import { Directive, HostListener, Input, ElementRef, OnInit } from '@angular/core';\r\nimport { sidebarCssClasses, asideMenuCssClasses } from './../classes';\r\nimport { ToggleClasses } from './../toggle-classes';\r\n\r\n/**\r\n* Allows the sidebar to be toggled via click.\r\n*/\r\n@Directive({\r\n selector: '[appSidebarToggler]'\r\n})\r\nexport class SidebarToggleDirective implements OnInit {\r\n @Input('appSidebarToggler') breakpoint: string;\r\n public bp;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.bp = this.breakpoint;\r\n }\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n let cssClass;\r\n this.bp ? cssClass = `sidebar-${this.bp}-show` : cssClass = sidebarCssClasses[0];\r\n ToggleClasses(cssClass, sidebarCssClasses);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appSidebarMinimizer]'\r\n})\r\nexport class SidebarMinimizeDirective {\r\n constructor() { }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n document.querySelector('body').classList.toggle('sidebar-minimized');\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appMobileSidebarToggler]'\r\n})\r\nexport class MobileSidebarToggleDirective {\r\n constructor() { }\r\n\r\n // Check if element has class\r\n private hasClass(target: any, elementClassName: string) {\r\n return new RegExp('(\\\\s|^)' + elementClassName + '(\\\\s|$)').test(target.className);\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n document.querySelector('body').classList.toggle('sidebar-show');\r\n }\r\n}\r\n\r\n/**\r\n* Allows the off-canvas sidebar to be closed via click.\r\n*/\r\n@Directive({\r\n selector: '[appSidebarClose]'\r\n})\r\nexport class SidebarOffCanvasCloseDirective {\r\n constructor() { }\r\n\r\n // Check if element has class\r\n private hasClass(target: any, elementClassName: string) {\r\n return new RegExp('(\\\\s|^)' + elementClassName + '(\\\\s|$)').test(target.className);\r\n }\r\n\r\n // Toggle element class\r\n private toggleClass(elem: any, elementClassName: string) {\r\n let newClass = ' ' + elem.className.replace( /[\\t\\r\\n]/g, ' ' ) + ' ';\r\n if (this.hasClass(elem, elementClassName)) {\r\n while (newClass.indexOf(' ' + elementClassName + ' ') >= 0 ) {\r\n newClass = newClass.replace( ' ' + elementClassName + ' ' , ' ' );\r\n }\r\n elem.className = newClass.replace(/^\\s+|\\s+$/g, '');\r\n } else {\r\n elem.className += ' ' + elementClassName;\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n\r\n if (this.hasClass(document.querySelector('body'), 'sidebar-off-canvas')) {\r\n this.toggleClass(document.querySelector('body'), 'sidebar-opened');\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[appBrandMinimizer]'\r\n})\r\nexport class BrandMinimizeDirective {\r\n constructor() { }\r\n\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n document.querySelector('body').classList.toggle('brand-minimized');\r\n }\r\n}\r\n\r\n\r\n/**\r\n* Allows the aside to be toggled via click.\r\n*/\r\n@Directive({\r\n selector: '[appAsideMenuToggler]',\r\n})\r\nexport class AsideToggleDirective implements OnInit {\r\n @Input('appAsideMenuToggler') breakpoint: string;\r\n public bp;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.bp = this.breakpoint;\r\n }\r\n @HostListener('click', ['$event'])\r\n toggleOpen($event: any) {\r\n $event.preventDefault();\r\n let cssClass;\r\n this.bp ? cssClass = `aside-menu-${this.bp}-show` : cssClass = asideMenuCssClasses[0];\r\n ToggleClasses(cssClass, asideMenuCssClasses);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule} from '@angular/core';\r\nimport {\r\n AsideToggleDirective,\r\n BrandMinimizeDirective,\r\n MobileSidebarToggleDirective,\r\n SidebarToggleDirective,\r\n SidebarMinimizeDirective,\r\n SidebarOffCanvasCloseDirective\r\n} from './layout.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n AsideToggleDirective,\r\n BrandMinimizeDirective,\r\n MobileSidebarToggleDirective,\r\n SidebarToggleDirective,\r\n SidebarMinimizeDirective,\r\n SidebarOffCanvasCloseDirective\r\n ],\r\n declarations: [\r\n AsideToggleDirective,\r\n BrandMinimizeDirective,\r\n MobileSidebarToggleDirective,\r\n SidebarToggleDirective,\r\n SidebarMinimizeDirective,\r\n SidebarOffCanvasCloseDirective\r\n ]\r\n})\r\nexport class LayoutModule { }\r\n","export function Replace(el: any): any {\r\n const nativeElement: HTMLElement = el.nativeElement;\r\n const parentElement: HTMLElement = nativeElement.parentElement;\r\n // move all children out of the element\r\n while (nativeElement.firstChild) {\r\n parentElement.insertBefore(nativeElement.firstChild, nativeElement);\r\n }\r\n // remove the empty element(the host)\r\n parentElement.removeChild(nativeElement);\r\n}\r\n","import { Component, ElementRef, Input, OnInit, OnDestroy } from '@angular/core';\nimport { asideMenuCssClasses, Replace } from './../shared/index';\n\n@Component({\n selector: 'app-aside',\n template: `\n \n `\n})\nexport class AppAsideComponent implements OnInit, OnDestroy {\n @Input() display: any;\n @Input() fixed: boolean;\n @Input() offCanvas: boolean;\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n Replace(this.el);\n this.isFixed(this.fixed);\n this.isOffCanvas(this.offCanvas);\n this.displayBreakpoint(this.display);\n }\n\n ngOnDestroy(): void {\n document.body.classList.remove('aside-menu-fixed');\n }\n\n isFixed(fixed: boolean): void {\n if (this.fixed) { document.querySelector('body').classList.add('aside-menu-fixed'); }\n }\n\n isOffCanvas(offCanvas: boolean): void {\n if (this.offCanvas) { document.querySelector('body').classList.add('aside-menu-off-canvas'); }\n }\n\n displayBreakpoint(display: any): void {\n if (this.display !== false ) {\n let cssClass;\n this.display ? cssClass = `aside-menu-${this.display}-show` : cssClass = asideMenuCssClasses[0];\n document.querySelector('body').classList.add(cssClass);\n }\n }\n}\n","import { CommonModule} from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { LayoutModule } from './../shared/layout/layout.module';\r\n\r\nimport { AppAsideComponent } from './app-aside.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n LayoutModule\r\n ],\r\n exports: [\r\n AppAsideComponent,\r\n LayoutModule\r\n ],\r\n declarations: [\r\n AppAsideComponent\r\n ]\r\n})\r\nexport class AppAsideModule {}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd } from '@angular/router';\r\nimport { BehaviorSubject, Observable } from 'rxjs/index';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class AppBreadcrumbService {\r\n\r\n breadcrumbs: Observable>;\r\n\r\n private _breadcrumbs: BehaviorSubject>;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute) {\r\n\r\n this._breadcrumbs = new BehaviorSubject