diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 7f3fb26b..78d8832d 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -7,7 +7,6 @@ import {RouteConfig, Router} from 'angular2/router'; import {Home} from './home'; import {Pages} from './pages'; import {AppState} from './app.service'; -import {RouterActive} from './router-active'; /* * App Component @@ -17,7 +16,6 @@ import {RouterActive} from './router-active'; selector: 'app', pipes: [ ], providers: [ ], - directives: [ RouterActive ], encapsulation: ViewEncapsulation.None, styles: [ require('normalize.css'), require('./app.scss') ], template: ` diff --git a/src/app/pages/pages.component.ts b/src/app/pages/pages.component.ts index aa779746..662c28a1 100644 --- a/src/app/pages/pages.component.ts +++ b/src/app/pages/pages.component.ts @@ -2,6 +2,7 @@ import {Component, ViewEncapsulation} from 'angular2/core'; import {RouteConfig, Router} from 'angular2/router'; import {Dashboard} from './dashboard'; +import {PageTop} from '../theme'; /* * App Component @@ -11,7 +12,8 @@ import {Dashboard} from './dashboard'; selector: 'pages', encapsulation: ViewEncapsulation.None, styles: [], - template: `` + directives: [PageTop], + template: `` }) @RouteConfig([ { path: '/dashboard', name: 'Dashboard', component: Dashboard, useAsDefault: true }, diff --git a/src/app/router-active/index.ts b/src/app/router-active/index.ts deleted file mode 100644 index aff99a09..00000000 --- a/src/app/router-active/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Application level directive -export * from './router-active.directive'; diff --git a/src/app/router-active/router-active.directive.ts b/src/app/router-active/router-active.directive.ts deleted file mode 100644 index 2d0f9ba8..00000000 --- a/src/app/router-active/router-active.directive.ts +++ /dev/null @@ -1,73 +0,0 @@ -import {Router} from 'angular2/router'; -import {isPresent} from 'angular2/src/facade/lang'; -import { - Directive, - Query, - QueryList, - Attribute, - ElementRef, - Renderer, - Optional, - Input -} from 'angular2/core'; -import {Instruction, RouterLink} from 'angular2/router'; - -/** - * RouterActive dynamically finds the first element with routerLink and toggles the active class - * - * ## Use - * - * ``` - *
  • Home
  • - *
  • Home
  • - * ``` - */ -@Directive({ - selector: '[router-active]' -}) -export class RouterActive { - @Input() routerActive: string = undefined; - routerActiveAttr: string = 'active'; - - constructor( - public router: Router, - public element: ElementRef, - public renderer: Renderer, - @Query(RouterLink) public routerLink: QueryList, - @Optional() @Attribute('router-active') routerActiveAttr?: string) { - - this.routerActiveAttr = this._defaultAttrValue(routerActiveAttr); - } - - ngOnInit() { - this.routerLink.changes.subscribe(() => { - if (this.routerLink.first) { - this._updateClass(); - this._findRootRouter().subscribe(() => { - this._updateClass(); - }); - } - }); - } - - private _findRootRouter(): Router { - let router: Router = this.router; - while (isPresent(router.parent)) { - router = router.parent; - } - return router; - } - - private _updateClass() { - let active = this.routerLink.first.isRouteActive; - this.renderer.setElementClass(this.element.nativeElement, this._attrOrProp(), active); - } - - private _defaultAttrValue(attr?: string) { - return this.routerActiveAttr = attr || this.routerActiveAttr; - } - - private _attrOrProp() { - return isPresent(this.routerActive) ? this.routerActive : this.routerActiveAttr; - } -} diff --git a/src/app/theme/index.ts b/src/app/theme/index.ts index 12b54c23..9b4e4295 100644 --- a/src/app/theme/index.ts +++ b/src/app/theme/index.ts @@ -1,3 +1 @@ -/** - * Created by Andrey_Grabowsky on 20.04.16. - */ +export * from './pageTop'; diff --git a/src/app/theme/pageTop/index.ts b/src/app/theme/pageTop/index.ts new file mode 100644 index 00000000..7d37b3af --- /dev/null +++ b/src/app/theme/pageTop/index.ts @@ -0,0 +1 @@ +export * from './pageTop.component'; \ No newline at end of file diff --git a/src/app/theme/pageTop/pageTop.component.ts b/src/app/theme/pageTop/pageTop.component.ts new file mode 100644 index 00000000..b9af4100 --- /dev/null +++ b/src/app/theme/pageTop/pageTop.component.ts @@ -0,0 +1,8 @@ +import {Component, ViewEncapsulation} from 'angular2/core'; + +@Component({ + selector: 'page-top', + styles: [ require('./pageTop.scss') ], + template: require('./pageTop.html') +}) +export class PageTop {} diff --git a/src/app/theme/pageTop/pageTop.html b/src/app/theme/pageTop/pageTop.html new file mode 100644 index 00000000..8e4014f5 --- /dev/null +++ b/src/app/theme/pageTop/pageTop.html @@ -0,0 +1,24 @@ +
    + + + + + + +
    \ No newline at end of file diff --git a/src/app/theme/pageTop/pageTop.scss b/src/app/theme/pageTop/pageTop.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/theme/theme.component.ts b/src/app/theme/theme.component.ts deleted file mode 100644 index 12b54c23..00000000 --- a/src/app/theme/theme.component.ts +++ /dev/null @@ -1,3 +0,0 @@ -/** - * Created by Andrey_Grabowsky on 20.04.16. - */