Skip to content
This repository was archived by the owner on Dec 18, 2024. It is now read-only.

Commit b5a5b30

Browse files
committed
feat(nav): add nav toggling
1 parent f9206e2 commit b5a5b30

File tree

8 files changed

+72
-33
lines changed

8 files changed

+72
-33
lines changed

scss/include/_layout.scss

+2-4
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,8 @@ aside {
1616
z-index: 1020;
1717
}
1818

19-
@include media-breakpoint-down(lg) {
20-
aside {
21-
display: none;
22-
}
19+
.sidebar-nav-hidden {
20+
display: none;
2321
}
2422

2523
navigation-side {

scss/include/_top_navigation.scss

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ header {
33
border-bottom: 1px solid $top-navigation-border-color;
44
}
55

6+
.navbar-brand {
7+
float: none;
8+
}
9+
610
.bg-faded {
711
background-color: $top-navigation-bg-color;
812
}
9-
}
13+
}

src/app.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<navigation-top router.bind="router"></navigation-top>
1111
</header>
1212

13-
<aside class="sidebar-nav">
13+
<aside class="sidebar-nav ${uiState.sideNavigationVisibility ? '' : 'sidebar-nav-hidden'}">
1414
<navigation-side></navigation-side>
1515
</aside>
1616

src/app.js

+19-2
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,36 @@
11
import {Endpoint} from 'aurelia-api';
22
import {inject} from 'aurelia-framework';
33
import {Router} from 'aurelia-router';
4+
import {DOM} from 'aurelia-pal';
5+
46
import AppRouterConfig from './configuration/router-config';
7+
import {UIState} from './services/UIState';
58
import 'jquery';
69
import 'bootstrap';
710

8-
@inject(Router, Endpoint.of(), AppRouterConfig)
11+
@inject(Router, Endpoint.of(), AppRouterConfig, UIState)
912
export class App {
10-
constructor(router, api, appRouterConfig) {
13+
showNavigationEvent = () => {
14+
if (window.innerWidth < 1200) {
15+
this.uiState.hideSideNavigation();
16+
} else {
17+
this.uiState.showSideNavigation();
18+
}
19+
};
20+
21+
constructor(router, api, appRouterConfig, uiState) {
1122
this.router = router;
1223
this.api = api;
1324
this.appRouterConfig = appRouterConfig;
25+
this.uiState = uiState;
1426
}
1527

1628
activate() {
1729
this.appRouterConfig.configure();
30+
window.addEventListener('resize', this.showNavigationEvent);
31+
}
32+
33+
deactivate() {
34+
window.removeEventListener('resize', this.showNavigationEvent);
1835
}
1936
}

src/resources/view-elements/navigation-side.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<ul class="nav-container">
33
<li>
44
<a href="#/news" class="nav-item-toggle">
5-
<i class="nav-item-icon fa fa-bars fa-fw"></i> News
5+
<i class="nav-item-icon fa fa-newspaper-o fa-fw"></i> News
66
</a>
77
</li>
88
<li>
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
<template>
22
<nav class="navbar navbar-fixed-top navbar-light bg-faded">
3-
<button class="navbar-toggler hidden-sm-up" type="button" data-toggle="collapse" data-target="#navigation-top-collapse">
4-
&#9776;
3+
<button class="navbar-toggler" type="button" click.delegate="toggleSideNavigation()">
4+
<i class="fa fa-bars fa-fw"></i>
55
</button>
6-
<div class="collapse navbar-toggleable-xs" id="navigation-top-collapse">
7-
<a class="navbar-brand" href="#">${router.title}</a>
8-
<ul class="nav navbar-nav pull-right">
9-
<li class="nav-item" if.bind="!isAuthenticated">
10-
<a class="nav-link" href="#/users/signup">
11-
<i class="fa fa-user fa-fw"></i> Sign Up
12-
</a>
13-
</li>
14-
<li class="nav-item dropdown" if.bind="!isAuthenticated">
15-
<a class="nav-link" href="#/auth/signin">
16-
<i class="fa fa-sign-in fa-fw"></i> Sign In
17-
</a>
18-
</li>
19-
<li class="nav-item" if.bind="isAuthenticated">
20-
<a class="nav-link" href="#/auth/signout">
21-
<i class="fa fa-sign-out fa-fw"></i> Sign Out
22-
</a>
23-
</li>
24-
</ul>
25-
</div>
6+
<a class="navbar-brand" href="#">${router.title}</a>
7+
<ul class="nav navbar-nav pull-right">
8+
<li class="nav-item" if.bind="!isAuthenticated">
9+
<a class="nav-link" href="#/users/signup">
10+
<i class="fa fa-user fa-fw"></i> <span class="hidden-xs-down">Sign Up</span>
11+
</a>
12+
</li>
13+
<li class="nav-item" if.bind="!isAuthenticated">
14+
<a class="nav-link" href="#/auth/signin">
15+
<i class="fa fa-sign-in fa-fw"></i> <span class="hidden-xs-down">Sign In</span>
16+
</a>
17+
</li>
18+
<li class="nav-item" if.bind="isAuthenticated">
19+
<a class="nav-link" href="#/auth/signout">
20+
<i class="fa fa-sign-out fa-fw"></i> <span class="hidden-xs-down">Sign Out</span>
21+
</a>
22+
</li>
23+
</ul>
2624
</nav>
2725
</template>

src/resources/view-elements/navigation-top.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import {bindable, inject} from 'aurelia-framework';
22
import {AuthService} from 'aurelia-authentication';
33

4-
@inject(AuthService)
4+
import {UIState} from '../../services/UIState';
5+
6+
@inject(AuthService, UIState)
57
export class NavigationTop {
68
@bindable router = null;
79

8-
constructor(auth) {
10+
constructor(auth, uiState) {
911
this.auth = auth;
12+
this.uiState = uiState;
13+
}
14+
15+
toggleSideNavigation() {
16+
this.uiState.toggleSideNavigation();
1017
}
1118

1219
get isAuthenticated() {

src/services/UIState.js

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export class UIState {
2+
sideNavigationVisibility = true;
3+
4+
toggleSideNavigation() {
5+
this.sideNavigationVisibility = !this.sideNavigationVisibility;
6+
}
7+
8+
showSideNavigation() {
9+
this.sideNavigationVisibility = true;
10+
}
11+
12+
hideSideNavigation() {
13+
this.sideNavigationVisibility = false;
14+
}
15+
}

0 commit comments

Comments
 (0)