1
0

Move Search bar into its own component.

This commit is contained in:
Kevin Matsubara 2025-03-27 12:32:42 +01:00
parent 7cf251570c
commit bdfc834753
3 changed files with 48 additions and 22 deletions

View File

@ -0,0 +1,25 @@
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Search servers"
@bind-value="serverFilter"
@bind-value:event="oninput" />
<button class="btn btn-outline-secondary" type="button" id="button-search" @onclick="HandleSearch">Search</button>
</div>
@code {
private string _serverFilter = "";
private string serverFilter {
get => _serverFilter;
set
{
_serverFilter = value;
}
}
[Parameter]
public EventCallback<string> FilterSearchTerm { get; set; }
private void HandleSearch()
{
FilterSearchTerm.InvokeAsync(serverFilter);
}
}

View File

@ -8,12 +8,22 @@
}
@code {
private List<Server>? servers;
[Parameter]
public string? CityName { get; set; }
private List<Server>? servers;
[Parameter]
public string SearchFilter { get; set; } = "";
protected override void OnParametersSet()
{
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
if (string.IsNullOrWhiteSpace(this.SearchFilter))
{
servers = ServersRepository.GetServersByCity(CityName ?? "Eindhoven");
}
else
{
servers = ServersRepository.SearchServers(SearchFilter);
}
}
}

View File

@ -6,39 +6,30 @@
<br/>
<CityListComponent SelectCityCallBack="HandleCitySelection"></CityListComponent>
<br/>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Search servers"
@bind-value="serverFilter"
@bind-value:event="oninput" />
<button class="btn btn-outline-secondary" type="button" id="button-search" @onclick="HandleSearch">Search</button>
</div>
<SearchBarComponent FilterSearchTerm="HandleSearch"></SearchBarComponent>
<br/>
<a href="@($"/servers/add")" class="btn btn-primary">Add</a>
<br/>
<ServerListComponent CityName="@this.selectedCity"></ServerListComponent>
<ServerListComponent
CityName="@this.selectedCity"
SearchFilter="@this.searchFilter">
</ServerListComponent>
@code {
private string selectedCity = "Eindhoven";
private string _serverFilter = "";
private string serverFilter {
get => _serverFilter;
set
{
_serverFilter = value;
//this.servers = ServersRepository.SearchServers(_serverFilter);
//this.selectedCity = string.Empty;
}
}
private string searchFilter = "";
private void HandleCitySelection(string cityName)
{
this.searchFilter = string.Empty;
this.selectedCity = cityName;
}
private void HandleSearch()
private void HandleSearch(string searchFilter)
{
//this.servers = ServersRepository.SearchServers(serverFilter);
// this.selectedCity = string.Empty;
this.selectedCity = string.Empty;
this.searchFilter = searchFilter;
}
}