mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-04-19 13:59:22 -04:00
100 lines
2.8 KiB
Plaintext
100 lines
2.8 KiB
Plaintext
@using MenuProject.MenuUI.Components
|
|
@using MenuProject.MenuUI.Layout
|
|
@using Sandbox;
|
|
@using Sandbox.UI;
|
|
@using MenuProject.UI;
|
|
@page "/maps/all"
|
|
@inherits Panel
|
|
|
|
<root class="root">
|
|
<Page>
|
|
|
|
<Left>
|
|
|
|
<div class="flex-column flex-gap-32">
|
|
|
|
<div class="flex-column flex-gap-16">
|
|
<GamePackageSortOrder Value:bind="@filterOrder" ></GamePackageSortOrder>
|
|
</div>
|
|
|
|
<TextEntry @ref="SearchEntry" placeholder="Search games..."></TextEntry>
|
|
|
|
@if (Result?.Properties is not null && Result.Properties.Length > 0 )
|
|
{
|
|
<div class="flex-column flex-gap-16">
|
|
<h2><WithIcon Icon="filter_alt" Text="Filters"></WithIcon></h2>
|
|
<PackagePropertyFilter Result=@Result Selected="@SelectedTags"></PackagePropertyFilter>
|
|
</div>
|
|
}
|
|
|
|
@if ( Result?.Facets is not null)
|
|
{
|
|
foreach (var facet in Result.Facets)
|
|
{
|
|
<div class="flex-column flex-gap-16">
|
|
<h2><WithIcon Icon="@facet.Entries.FirstOrDefault()?.Icon" Text="@facet.Title"></WithIcon></h2>
|
|
<PackageCategoryFilter Result=@Result Selected="@SelectedCategory" Facet="@facet"></PackageCategoryFilter>
|
|
</div>
|
|
}
|
|
}
|
|
|
|
<div class="flex-column flex-gap-16">
|
|
<h2><WithIcon Icon="tag" Text="Tags"></WithIcon></h2>
|
|
<PackageTagFilter Result=@Result Selected="@SelectedTags"></PackageTagFilter>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Left>
|
|
|
|
<Body>
|
|
<PackageList @ref=PackageList ShowFilters="@false" Query=@($"type:map sort:{filterOrder} {GetQuery()}") OnSelected="@OnPackageSelected" Take=@(200)></PackageList>
|
|
</Body>
|
|
</Page>
|
|
</root>
|
|
|
|
@code {
|
|
string filterOrder = "trending";
|
|
TextEntry SearchEntry = default;
|
|
|
|
List<string> SelectedTags = new();
|
|
Dictionary<string, string> SelectedCategory = new();
|
|
|
|
PackageList PackageList = default;
|
|
|
|
Package.FindResult Result => PackageList?.Result;
|
|
|
|
void OnPackageSelected(Package package)
|
|
{
|
|
package.OpenModal();
|
|
}
|
|
|
|
void OnOrderChanged(string value)
|
|
{
|
|
filterOrder = value;
|
|
}
|
|
|
|
void OnMenu(Package package)
|
|
{
|
|
MenuHelpers.OpenPackageMenu(this, package);
|
|
}
|
|
|
|
string GetQuery()
|
|
{
|
|
string tagString = SearchEntry?.Text ?? "";
|
|
foreach (var tag in SelectedTags)
|
|
{
|
|
tagString += $" +{tag}";
|
|
}
|
|
|
|
foreach (var cat in SelectedCategory)
|
|
{
|
|
tagString += $" {cat.Key}:{cat.Value}";
|
|
}
|
|
|
|
return tagString;
|
|
}
|
|
|
|
protected override int BuildHash() => System.HashCode.Combine(Result, GetQuery(), filterOrder);
|
|
}
|