Skip to content
This repository was archived by the owner on Sep 18, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions DotnetViewComponents/ViewComponents/TabsViewComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace DotnetViewComponents.ViewComponents
{
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using DotnetViewComponents.ViewModels;

public class TabsViewComponent : ViewComponent
{
public IViewComponentResult Invoke(
string title,
List<TabViewModel> tabsList)
{
var model = new TabsViewModel(title, tabsList);

return View(model);
}
}
}
38 changes: 38 additions & 0 deletions DotnetViewComponents/ViewModels/TabsViewModel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using Microsoft.AspNetCore.Html;

namespace DotnetViewComponents.ViewModels
{
public class TabsViewModel
{
public TabsViewModel(
string title,
List<TabViewModel> tabsList)
{
Title = title;
TabsList = tabsList;
}

public string Title { get; set; }
public List<TabViewModel> TabsList { get; set; }

}

public class TabViewModel
{
public TabViewModel(
string name,
Func<object, IHtmlContent> content,
bool isActive)
{
Name = name;
Content = content;
IsActive = isActive;
}

public string Name { get; set; }

public Func<object, IHtmlContent> Content { get; set; }

public bool IsActive { get; set; }
}
}
29 changes: 29 additions & 0 deletions DotnetViewComponents/Views/Shared/Components/Tabs/Default.cshtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
@using DotnetViewComponents.ViewModels
@model TabsViewModel

<div class="nhsuk-tabs js-enabled" data-module="nhsuk-tabs">
<h2 class="nhsuk-tabs__title">
@Model.Title
</h2>

<ul class="nhsuk-tabs__list">

@foreach (var tab in Model.TabsList)
{
<li class="nhsuk-tabs__list-item @(tab.IsActive ? "nhsuk-tabs__list-item--selected" : "")">
<a class="nhsuk-tabs__tab" href="#@tab.Name.ToLower().Replace(" ", "-")">
@tab.Name
</a>
</li>
}
</ul>

@foreach (var tab in Model.TabsList)
{
<div class="nhsuk-tabs__panel @(!tab.IsActive ? "nhsuk-tabs__panel--hidden" : "")" id="@tab.Name.ToLower().Replace(" ", "-")">
@tab.Content(null)
</div>
}


</div>