diff --git a/resources/i18n/en.json b/resources/i18n/en.json index 169ff0efe9..73cf536496 100644 --- a/resources/i18n/en.json +++ b/resources/i18n/en.json @@ -46,7 +46,15 @@ } }, "nav": { - "home": "Home", + "browse": { + "header": "All of DSpace" + }, + "community-browse": { + "header": "By Community" + }, + "statistics": { + "header": "Statistics" + }, "login": "Log In", "logout": "Log Out" }, diff --git a/src/app/app.component.html b/src/app/app.component.html index 24ce6dc843..41171d3081 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,7 +1,6 @@
- - + diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 1b2a21b0c6..8e5031d0ba 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -34,6 +34,6 @@ body { margin-bottom: $content-spacing; } -ds-navbar { +ds-header-navbar-wrapper { z-index: $nav-z-index; } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 987ce77dd1..0aceaf2ef6 100755 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -32,6 +32,7 @@ import { NotificationsBoardComponent } from './shared/notifications/notification import { NotificationComponent } from './shared/notifications/notification/notification.component'; import { SharedModule } from './shared/shared.module'; import { NavbarComponent } from './navbar/navbar.component'; +import { HeaderNavbarWrapperComponent } from './header-nav-wrapper/header-navbar-wrapper.component'; export function getConfig() { return ENV_CONFIG; @@ -89,6 +90,7 @@ if (!ENV_CONFIG.production) { AppComponent, HeaderComponent, NavbarComponent, + HeaderNavbarWrapperComponent, FooterComponent, PageNotFoundComponent, NotificationComponent, diff --git a/src/app/header-nav-wrapper/header-navbar-wrapper.component.html b/src/app/header-nav-wrapper/header-navbar-wrapper.component.html new file mode 100644 index 0000000000..1eab1d9ffd --- /dev/null +++ b/src/app/header-nav-wrapper/header-navbar-wrapper.component.html @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/src/app/header-nav-wrapper/header-navbar-wrapper.component.scss b/src/app/header-nav-wrapper/header-navbar-wrapper.component.scss new file mode 100644 index 0000000000..f514508385 --- /dev/null +++ b/src/app/header-nav-wrapper/header-navbar-wrapper.component.scss @@ -0,0 +1,9 @@ +@import '../../styles/variables.scss'; + +@media screen and (max-width: map-get($grid-breakpoints, md)) { + :host.open { + background-color: $white; + top: 0; + position: sticky; + } +} \ No newline at end of file diff --git a/src/app/header-nav-wrapper/header-navbar-wrapper.component.ts b/src/app/header-nav-wrapper/header-navbar-wrapper.component.ts new file mode 100644 index 0000000000..1480758ee3 --- /dev/null +++ b/src/app/header-nav-wrapper/header-navbar-wrapper.component.ts @@ -0,0 +1,36 @@ +import { Component, HostBinding, OnDestroy, OnInit } from '@angular/core'; +import { createSelector, Store } from '@ngrx/store'; +import { AppState } from '../app.reducer'; +import { Observable } from 'rxjs/Observable'; +import { NavbarState } from '../navbar/navbar.reducer'; +import { Subscription } from 'rxjs/Subscription'; +import { hasValue } from '../shared/empty.util'; + +const navbarStateSelector = (state: AppState) => state.navbar; +const navCollapsedSelector = createSelector(navbarStateSelector, (navbar: NavbarState) => navbar.navCollapsed); +@Component({ + selector: 'ds-header-navbar-wrapper', + styleUrls: ['header-navbar-wrapper.component.scss'], + templateUrl: 'header-navbar-wrapper.component.html', +}) +export class HeaderNavbarWrapperComponent implements OnInit, OnDestroy { + @HostBinding('class.open') isOpen = false; + private sub: Subscription; + public isNavBarCollapsed: Observable; + + constructor( + private store: Store + ) { + } + + ngOnInit(): void { + this.isNavBarCollapsed = this.store.select(navCollapsedSelector); + this.sub = this.isNavBarCollapsed.subscribe((isCollapsed) => this.isOpen = !isCollapsed) + } + + ngOnDestroy() { + if (hasValue(this.sub)) { + this.sub.unsubscribe(); + } + } +} diff --git a/src/app/header/header.component.html b/src/app/header/header.component.html index 22e2a307a5..3a24f0e075 100644 --- a/src/app/header/header.component.html +++ b/src/app/header/header.component.html @@ -3,8 +3,16 @@ -
diff --git a/src/app/header/header.component.scss b/src/app/header/header.component.scss index 627ce93c6c..7834cfbaaa 100644 --- a/src/app/header/header.component.scss +++ b/src/app/header/header.component.scss @@ -2,4 +2,8 @@ .navbar-brand img { height: $header-logo-height; -} \ No newline at end of file +} +.navbar-toggler .navbar-toggler-icon { + background-image: none !important; + line-height: 1.5; +} diff --git a/src/app/header/header.component.ts b/src/app/header/header.component.ts index 8ccc779873..6877f196aa 100644 --- a/src/app/header/header.component.ts +++ b/src/app/header/header.component.ts @@ -1,5 +1,8 @@ import { Component } from '@angular/core'; import { Observable } from 'rxjs/Observable'; +import { NavbarToggleAction } from '../navbar/navbar.actions'; +import { Store } from '@ngrx/store'; +import { AppState } from '../app.reducer'; @Component({ selector: 'ds-header', @@ -13,4 +16,13 @@ export class HeaderComponent { */ public isAuthenticated: Observable; public showAuth = false; + + constructor( + private store: Store, + ) { + } + + public toggle(): void { + this.store.dispatch(new NavbarToggleAction()); + } } diff --git a/src/app/navbar/navbar.component.html b/src/app/navbar/navbar.component.html index 7c4de41098..cf8ff5166c 100644 --- a/src/app/navbar/navbar.component.html +++ b/src/app/navbar/navbar.component.html @@ -1,43 +1,43 @@ -