Skip to content

Commit 08789f7

Browse files
committed
updates for side navigation component
1 parent 75c1ca1 commit 08789f7

File tree

2 files changed

+149
-14
lines changed

2 files changed

+149
-14
lines changed

LearningHub.Nhs.WebUI/Styles/nhsuk/layout.scss

Lines changed: 123 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,94 @@ button[data-toggle="modal"] {
254254
li.autosuggestion-option:last-of-type {
255255
border-bottom: none !important;
256256
}
257+
258+
259+
/* side navigation styles */
260+
.side-nav__list {
261+
list-style: none;
262+
margin: 0;
263+
padding: 0;
264+
border-right: 1px solid #d8dde0;
265+
}
266+
267+
.side-nav__item {
268+
padding: 12px 16px;
269+
border-bottom: 1px solid #d8dde0;
270+
}
271+
272+
.side-nav__item--active a {
273+
font-weight: bold;
274+
text-decoration: underline;
275+
}
276+
277+
.side-nav__toggle,
278+
.side-nav__close {
279+
display: none;
280+
background: #e8f0f7;
281+
color: #005eb8;
282+
border: none;
283+
font-size: 16px;
284+
padding: 10px 16px;
285+
border-radius: 25px;
286+
margin: 10px;
287+
cursor: pointer;
288+
}
289+
290+
.menu-icon {
291+
display: inline-flex;
292+
justify-content: center;
293+
align-items: center;
294+
width: 20px;
295+
height: 20px;
296+
box-sizing: border-box;
297+
padding: 0;
298+
border: 1px solid #d8dde0;
299+
border-radius: 50%;
300+
background-color: white;
301+
transition: background-color 0.3s ease;
302+
}
303+
304+
305+
.side-nav__container {
306+
position: fixed;
307+
top: 0;
308+
left: 0;
309+
width: 80%;
310+
max-width: 320px;
311+
height: 100%;
312+
background-color: #e8f0f7;
313+
border-right: 40px solid #005eb8;
314+
box-sizing: border-box;
315+
transform: translateX(-100%);
316+
transition: transform 0.3s ease-in-out;
317+
z-index: 1000;
318+
box-shadow: 4px 0 10px rgba(0, 0, 0, 0.1);
319+
display: flex;
320+
flex-direction: column;
321+
overflow: visible;
322+
}
323+
324+
325+
.side-nav__close {
326+
position: relative;
327+
right: -35px;
328+
z-index: 2;
329+
align-self: flex-end;
330+
text-align: right;
331+
}
332+
333+
334+
.nav-toggle:checked + label.side-nav__toggle + .side-nav__container {
335+
transform: translateX(0);
336+
}
337+
338+
339+
.nav-toggle:checked + label .menu-icon {
340+
transform: rotate(180deg);
341+
}
342+
343+
344+
257345
/* large desktop */
258346
@media (min-width: px2rem(990)) {
259347

@@ -271,6 +359,26 @@ li.autosuggestion-option:last-of-type {
271359
}
272360
}
273361

362+
@media (min-width: px2rem(768)) {
363+
.nav-toggle,
364+
.side-nav__toggle,
365+
.side-nav__close {
366+
display: none !important;
367+
}
368+
369+
.side-nav__container {
370+
position: static;
371+
transform: none !important;
372+
height: auto;
373+
box-shadow: none;
374+
display: block;
375+
width: auto;
376+
background-color: #ffffff;
377+
border-right: none;
378+
}
379+
}
380+
381+
274382
/* small desktop */
275383
@media (max-width: px2rem(989)) {
276384

@@ -495,6 +603,20 @@ li.autosuggestion-option:last-of-type {
495603
.nhsuk-width-container.nhsuk-header__container.app-width-container {
496604
padding-bottom: 0;
497605
}
606+
607+
608+
.side-nav__toggle, .side-nav__close {
609+
display: inline-block;
610+
}
611+
612+
.side-nav__close {
613+
background-color: transparent;
614+
}
615+
616+
.nav-toggle:checked + label.side-nav__toggle .menu-icon,
617+
.nav-toggle:checked + label.side-nav__toggle + .side-nav__container .side-nav__close .menu-icon {
618+
background-color: #e8f0f7;
619+
}
498620
}
499621

500622
/* mobile */
@@ -596,5 +718,5 @@ li.autosuggestion-option:last-of-type {
596718

597719
.autosuggestion-menu {
598720
top: 100%;
599-
}
721+
}
600722
}

LearningHub.Nhs.WebUI/Views/Shared/Components/SideNav/Default.cshtml

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,31 @@
33

44
@foreach (var group in Model.Groups)
55
{
6-
<ul class="nhsuk-list side-nav__list">
7-
@foreach (var item in group.Items)
8-
{
9-
var isActive = item.IsActive?.Invoke(Model.RouteData) ?? false;
10-
<li class="@(isActive ? "selected" : "")">
11-
<a asp-controller="@item.Controller" asp-action="@item.Action">
12-
@item.Text
13-
</a>
14-
</li>
15-
}
16-
</ul>
17-
}
6+
7+
<input type="checkbox" id="navToggle" class="nav-toggle" hidden />
8+
9+
<label for="navToggle" class="side-nav__toggle" aria-controls="sideNav">
10+
<span class="menu-icon">»</span> Open page menu
11+
</label>
1812

13+
<div id="sideNav" class="side-nav__container">
14+
<label for="navToggle" class="side-nav__close">
15+
Close page menu <span class="menu-icon">«</span>
16+
</label>
1917

20-
@* @await Component.InvokeAsync("SideNav", new { groupTitle = "Account" }) *@
18+
<nav class="side-nav" aria-label="@(group.GroupTitle) navigation">
19+
<ul class="nhsuk-list side-nav__list">
20+
@foreach (var item in group.Items)
21+
{
22+
var isActive = item.IsActive?.Invoke(Model.RouteData) ?? false;
23+
<li class="side-nav__item @(isActive ? "side-nav__item--active" : "")">
24+
<a class="nhsuk-link" asp-controller="@item.Controller" asp-action="@item.Action">
25+
@item.Text
26+
</a>
27+
</li>
28+
}
29+
</ul>
30+
</nav>
31+
</div>
32+
33+
}

0 commit comments

Comments
 (0)