< Summary

Information
Class: Chronicis.Client.Components.SearchBox
Assembly: Chronicis.Client
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Client/Components/SearchBox.razor
Line coverage
0%
Covered lines: 0
Uncovered lines: 19
Coverable lines: 19
Total lines: 70
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor()100%210%
get__hasText()100%210%
OnInitialized()100%210%
OnAdornmentClick()0%620%
OnKeyDown()0%2040%
ExecuteSearch()100%210%
Dispose()100%210%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Client/Components/SearchBox.razor

#LineLine coverage
 1<style>
 2    .search-input {
 3        background: var(--mud-palette-primary);
 4    }
 5</style>
 6@using Chronicis.Client.Services
 7@inject ITreeStateService TreeState
 8
 9<div class="search-box">
 10    <MudTextField @bind-Value="_searchText"
 11                  Placeholder="Search entries..."
 12                  Variant="Variant.Outlined"
 13                  Margin="Margin.Dense"
 14                  Adornment="Adornment.End"
 15                  AdornmentIcon="@(_hasText ? Icons.Material.Filled.Close : Icons.Material.Filled.Search)"
 16                  OnAdornmentClick="OnAdornmentClick"
 17                  @onkeydown="OnKeyDown"
 18                  Immediate="true"
 19                  Class="search-input"
 20                  tabindex="1" />
 21</div>
 22
 23@code {
 024    private string _searchText = string.Empty;
 025    private bool _hasText => !string.IsNullOrWhiteSpace(_searchText);
 26
 27    protected override void OnInitialized()
 28    {
 029        TreeState.OnStateChanged += StateHasChanged;
 030    }
 31
 32    private async Task OnAdornmentClick()
 33    {
 034        if (_hasText)
 35        {
 36            // Clear button clicked
 037            _searchText = string.Empty;
 038            TreeState.ClearSearch();
 39        }
 40        else
 41        {
 42            // Search button clicked
 043            await ExecuteSearch();
 44        }
 045    }
 46
 47    private async Task OnKeyDown(KeyboardEventArgs e)
 48    {
 049        if (e.Key == "Enter")
 50        {
 051            await ExecuteSearch();
 52        }
 053        else if (e.Key == "Escape")
 54        {
 055            _searchText = string.Empty;
 056            TreeState.ClearSearch();
 57        }
 058    }
 59
 60    private Task ExecuteSearch()
 61    {
 062        TreeState.SetSearchQuery(_searchText);
 063        return Task.CompletedTask;
 64    }
 65
 66    public void Dispose()
 67    {
 068        TreeState.OnStateChanged -= StateHasChanged;
 069    }
 70}