65 lines
1.8 KiB
Plaintext
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">×</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;
|
|
}
|