diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb28592a..1cc01946 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
### [@coreui/angular](https://coreui.io/) changelog
+##### `v2.4.1`
+- fix(sidebar-nav): ie issues
+
##### `v2.4.0`
`dist` is the same as `v2.4.0-beta.1`
- update: `@angular/animations` to `^7.2.5`
diff --git a/dist/@coreui/angular/bundles/coreui-angular.umd.js b/dist/@coreui/angular/bundles/coreui-angular.umd.js
index 5d34c332..1b5836b7 100644
--- a/dist/@coreui/angular/bundles/coreui-angular.umd.js
+++ b/dist/@coreui/angular/bundles/coreui-angular.umd.js
@@ -831,7 +831,7 @@
CuiBreadcrumbComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cui-breadcrumb',
- template: "
\n \n - \n {{breadcrumb.label.title}}\n {{breadcrumb.label.title}}\n
\n \n \n
\n"
+ template: "\r\n \r\n - \r\n {{breadcrumb.label.title}}\r\n {{breadcrumb.label.title}}\r\n
\r\n \r\n \r\n
\r\n"
}] }
];
/** @nocollapse */
@@ -1028,7 +1028,7 @@
AppHeaderComponent.decorators = [
{ type: core.Component, args: [{
selector: 'app-header, cui-header',
- template: "\n \n\n\n \n \n \n \n \n \n \n \n \n\n\n \n\n\n\n \n\n\n \n\n"
+ template: "\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n\r\n\r\n \r\n\r\n"
}] }
];
/** @nocollapse */
@@ -1473,7 +1473,7 @@
AppSidebarNavComponent.decorators = [
{ type: core.Component, args: [{
selector: 'app-sidebar-nav',
- template: "\n\n"
+ template: "\r\n\r\n"
}] }
];
/** @nocollapse */
@@ -1762,7 +1762,7 @@
* @return {?}
*/
function () {
- return !!(this.item.attributes && this.item.attributes.disabled);
+ return (this.item.attributes && this.item.attributes.disabled) ? true : null;
};
/**
* @return {?}
@@ -1787,7 +1787,7 @@
AppSidebarNavLinkComponent.decorators = [
{ type: core.Component, args: [{
selector: 'app-sidebar-nav-link',
- template: "\n \n \n {{item.name}}\n {{ item.badge.text }}\n \n \n \n {{item.name}}\n {{ item.badge.text }}\n \n\n",
+ template: "\r\n \r\n \r\n {{item.name}}\r\n {{ item.badge.text }}\r\n \r\n \r\n \r\n {{item.name}}\r\n {{ item.badge.text }}\r\n \r\n\r\n",
providers: [SidebarNavHelper]
}] }
];
@@ -2000,7 +2000,7 @@
AppSidebarNavLabelComponent.decorators = [
{ type: core.Component, args: [{
selector: 'app-sidebar-nav-label',
- template: "\n \n {{item.name}}\n {{ item.badge.text }}\n\n"
+ template: "\r\n \r\n {{item.name}}\r\n {{ item.badge.text }}\r\n\r\n"
}] }
];
/** @nocollapse */
diff --git a/dist/@coreui/angular/bundles/coreui-angular.umd.js.map b/dist/@coreui/angular/bundles/coreui-angular.umd.js.map
index 7f980594..c38c867e 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/cui-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.component.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-nav.directive.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-divider.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav.service.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-dropdown.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-items.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-link.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-title.component.ts","ng://@coreui/angular/lib/sidebar/app-sidebar-nav/app-sidebar-nav-label.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","import {Inject, Injectable, Renderer2} from '@angular/core';\r\nimport {DOCUMENT} from '@angular/common';\r\n\r\nconst RemoveClasses = (NewClassNames) => {\r\n const MatchClasses = NewClassNames.map((Class) => document.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.body.classList.remove(Class));\r\n } else {\r\n document.body.classList.add(Toggle);\r\n }\r\n};\r\n\r\n@Injectable()\r\nexport class ClassToggler {\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: any,\r\n private renderer: Renderer2,\r\n ) {}\r\n\r\n removeClasses(NewClassNames) {\r\n const MatchClasses = NewClassNames.map((Class) => this.document.body.classList.contains(Class));\r\n return MatchClasses.indexOf(true) !== -1;\r\n }\r\n\r\n toggleClasses(Toggle, ClassNames) {\r\n const Level = ClassNames.indexOf(Toggle);\r\n const NewClassNames = ClassNames.slice(0, Level + 1);\r\n\r\n if (this.removeClasses(NewClassNames)) {\r\n NewClassNames.map((Class) => this.renderer.removeClass(this.document.body, Class));\r\n } else {\r\n this.renderer.addClass(this.document.body, Toggle);\r\n }\r\n }\r\n}\r\n","import {Directive, ElementRef, HostListener, Inject, Input, OnInit, Renderer2} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\nimport { asideMenuCssClasses, sidebarCssClasses } from '../classes';\nimport { ClassToggler } from '../toggle-classes';\n\n/**\n* Allows the sidebar to be toggled via click.\n*/\n@Directive({\n selector: '[appSidebarToggler]',\n providers: [ClassToggler]\n})\nexport class SidebarToggleDirective implements OnInit {\n @Input('appSidebarToggler') breakpoint: string;\n public bp;\n constructor(private classToggler: ClassToggler) {}\n ngOnInit(): void {\n this.bp = this.breakpoint;\n }\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n const cssClass = this.bp ? `sidebar-${this.bp}-show` : sidebarCssClasses[0];\n this.classToggler.toggleClasses(cssClass, sidebarCssClasses);\n }\n}\n\n@Directive({\n selector: '[appSidebarMinimizer]'\n})\nexport class SidebarMinimizeDirective {\n constructor(\n @Inject(DOCUMENT) private document: any,\n private renderer: Renderer2,\n ) { }\n\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n const body = this.document.body;\n body.classList.contains('sidebar-minimized') ?\n this.renderer.removeClass(body, 'sidebar-minimized') :\n this.renderer.addClass(body, 'sidebar-minimized');\n }\n}\n\n@Directive({\n selector: '[appMobileSidebarToggler]'\n})\nexport class MobileSidebarToggleDirective {\n constructor(\n @Inject(DOCUMENT) private document: any,\n private renderer: Renderer2,\n ) { }\n\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n const body = this.document.body;\n body.classList.contains('sidebar-show') ?\n this.renderer.removeClass(body, 'sidebar-show') :\n this.renderer.addClass(body, 'sidebar-show');\n }\n}\n\n/**\n* Allows the off-canvas sidebar to be closed via click.\n*/\n@Directive({\n selector: '[appSidebarClose]'\n})\nexport class SidebarOffCanvasCloseDirective {\n constructor(\n @Inject(DOCUMENT) private document: any,\n private renderer: Renderer2,\n ) { }\n\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n\n const body = this.document.body;\n if (body.classList.contains('sidebar-off-canvas')) {\n body.classList.contains('sidebar-show') ?\n this.renderer.removeClass(body, 'sidebar-show') :\n this.renderer.addClass(body, 'sidebar-show');\n }\n }\n}\n\n@Directive({\n selector: '[appBrandMinimizer]'\n})\nexport class BrandMinimizeDirective {\n constructor(\n @Inject(DOCUMENT) private document: any,\n private renderer: Renderer2,\n ) { }\n\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n const body = this.document.body;\n body.classList.contains('brand-minimized') ?\n this.renderer.removeClass(body, 'brand-minimized') :\n this.renderer.addClass(body, 'brand-minimized');\n }\n}\n\n\n/**\n* Allows the aside to be toggled via click.\n*/\n@Directive({\n selector: '[appAsideMenuToggler]',\n providers: [ClassToggler]\n})\nexport class AsideToggleDirective implements OnInit {\n @Input('appAsideMenuToggler') breakpoint: string;\n public bp;\n constructor(private classToggler: ClassToggler) {}\n ngOnInit(): void {\n this.bp = this.breakpoint;\n }\n @HostListener('click', ['$event'])\n toggleOpen($event: any) {\n $event.preventDefault();\n const cssClass = this.bp ? `aside-menu-${this.bp}-show` : asideMenuCssClasses[0];\n this.classToggler.toggleClasses(cssClass, asideMenuCssClasses);\n }\n}\n\n@Directive({\n selector: '[appHtmlAttr]'\n})\nexport class HtmlAttributesDirective implements OnInit {\n @Input() appHtmlAttr: {[key: string]: string };\n\n constructor(\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n ngOnInit() {\n const attribs = this.appHtmlAttr;\n for (const attr in attribs) {\n if (attr === 'style' && typeof(attribs[attr]) === 'object' ) {\n this.setStyle(attribs[attr]);\n } else if (attr === 'class') {\n this.addClass(attribs[attr]);\n } else {\n this.setAttrib(attr, attribs[attr]);\n }\n }\n }\n\n private setStyle(styles) {\n for (const style in styles) {\n this.renderer.setStyle(this.el.nativeElement, style, styles[style] );\n }\n }\n\n private addClass(classes) {\n const classArray = (Array.isArray(classes) ? classes : classes.split(' '));\n classArray.filter((element) => element.length > 0).forEach(element => {\n this.renderer.addClass(this.el.nativeElement, element );\n });\n }\n\n private setAttrib(key, value) {\n this.renderer.setAttribute(this.el.nativeElement, key, value );\n }\n}\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 HtmlAttributesDirective\r\n} from './layout.directive';\r\nimport { ClassToggler } from '../toggle-classes';\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 HtmlAttributesDirective\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 HtmlAttributesDirective\r\n ],\r\n providers: [\r\n ClassToggler\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, Inject, Renderer2} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\nimport { asideMenuCssClasses } from '../shared';\n\n@Component({\n selector: 'app-aside, cui-aside',\n template: ``\n})\nexport class AppAsideComponent implements OnInit, OnDestroy {\n @Input() display: any;\n @Input() fixed: boolean;\n @Input() offCanvas: boolean;\n\n private readonly fixedClass = 'aside-menu-fixed';\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private renderer: Renderer2,\n private hostElement: ElementRef\n ) {\n renderer.addClass(hostElement.nativeElement, 'aside-menu');\n }\n\n ngOnInit(): void {\n this.isFixed(this.fixed);\n this.isOffCanvas(this.offCanvas);\n this.displayBreakpoint(this.display);\n }\n\n ngOnDestroy(): void {\n this.renderer.removeClass(this.document.body, this.fixedClass);\n }\n\n isFixed(fixed: boolean = this.fixed): void {\n if (fixed) {\n this.renderer.addClass(this.document.body, this.fixedClass);\n }\n }\n\n isOffCanvas(offCanvas: boolean = this.offCanvas): void {\n if (offCanvas) {\n this.renderer.addClass(this.document.body, 'aside-menu-off-canvas');\n }\n }\n\n displayBreakpoint(display: any = this.display): void {\n if (display !== false ) {\n const cssClass = this.display ? `aside-menu-${this.display}-show` : asideMenuCssClasses[0];\n this.renderer.addClass(this.document.body, 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 } 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