Files
GameSlopReference/GSR/Web/Pages/Home.razor
T

65 lines
1.8 KiB
Plaintext

@page "/"
@inject GameService Service
<PageTitle>Game Slop Reference</PageTitle>
<h1>Game Slop Reference</h1>
@if (Service.OverviewHtml is { } html)
{
<div class="overview-content">@((MarkupString)html)</div>
}
<div class="game-cards">
@foreach (var game in Service.Games.Where(a=>a.IsVisible == true))
{
<div class="game-card" @onclick="() => ShowDetail(game)">
<h3>@game.Title</h3>
@if (!string.IsNullOrEmpty(game.Link) || !string.IsNullOrEmpty(game.Git))
{
<div class="links">
@if (!string.IsNullOrEmpty(game.Link))
{
<a href="@game.Link" target="_blank" @onclick:stopPropagation>
<span class="label">link</span> @game.Link
</a>
}
@if (!string.IsNullOrEmpty(game.Git))
{
<a href="@game.Git" target="_blank" @onclick:stopPropagation>
<span class="label">git</span> @game.Git
</a>
}
</div>
}
</div>
}
</div>
@if (_selected is not null)
{
<div class="dialog-overlay" @onclick="CloseDetail">
<div class="dialog" @onclick:stopPropagation>
<div class="dialog-header">
<h2>@_selected.Title</h2>
<button class="dialog-close" @onclick="CloseDetail">&times;</button>
</div>
<div class="dialog-body">
@((MarkupString)_selected.ContentHtml)
</div>
</div>
</div>
}
@code {
private GameDoc? _selected;
private void ShowDetail(GameDoc game) => _selected = game;
private void CloseDetail() => _selected = null;
}