LoreSoft.Blazor.Controls 9.7.7

There is a newer version of this package available.
See the version list below for details.
dotnet add package LoreSoft.Blazor.Controls --version 9.7.7                
NuGet\Install-Package LoreSoft.Blazor.Controls -Version 9.7.7                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LoreSoft.Blazor.Controls" Version="9.7.7" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LoreSoft.Blazor.Controls --version 9.7.7                
#r "nuget: LoreSoft.Blazor.Controls, 9.7.7"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install LoreSoft.Blazor.Controls as a Cake Addin
#addin nuget:?package=LoreSoft.Blazor.Controls&version=9.7.7

// Install LoreSoft.Blazor.Controls as a Cake Tool
#tool nuget:?package=LoreSoft.Blazor.Controls&version=9.7.7                

Overview

The LoreSoft Blazor Controls project contains a collection of Blazor user controls.

Installing

The LoreSoft.Blazor.Controls library is available on nuget.org via package name LoreSoft.Blazor.Controls.

To install LoreSoft.Blazor.Controls, run the following command in the Package Manager Console

Install-Package LoreSoft.Blazor.Controls

Setup

To use, you need to include the following CSS and JS files in your index.html (Blazor WebAssembly) or _Host.cshtml (Blazor Server).

In the head tag add the following CSS.

<link rel="stylesheet" href="_content/LoreSoft.Blazor.Controls/BlazorControls.css" />

Typeahead Features

  • Searching data by supplying a search function
  • Template for search result, selected value, and footer
  • Debounce support for smoother search
  • Character limit before searching
  • Multiselect support
  • Built in form validation support

Typeahead Properties

Required

  • Value - Bind to Value in single selection mode. Mutually exclusive to Values property.
  • Values - Bind to Values in multiple selection mode. Mutually exclusive to Value property.
  • SearchMethod - The method used to return search result

Optional

  • AllowClear - Allow the selected value to be cleared
  • ConvertMethod - The method used to convert search result type to the value type
  • Debounce - Time to wait, in milliseconds, after last key press before starting a search
  • Items - The initial list of items to show when there isn't any search text
  • MinimumLength - Minimum number of characters before starting a search
  • Placeholder - The placeholder text to show when nothing is selected

Templates

  • ResultTemplate - User defined template for displaying a result in the results list
  • SelectedTemplate - User defined template for displaying the selected item(s)
  • NoRecordsTemplate - Template for when no items are found
  • FooterTemplate - Template displayed at the end of the results list
  • LoadingTemplate - Template displayed while searching

Typeahead Examples

Basic Example

State selection dropdown. Bind to Value property for single selection mode.

<Typeahead SearchMethod="@SearchState"
           Items="Data.StateList"
           @bind-Value="@SelectedState"
           Placeholder="State">
    <SelectedTemplate Context="state">
        @state.Name
    </SelectedTemplate>
    <ResultTemplate Context="state">
        @state.Name
    </ResultTemplate>
</Typeahead>
@code {
    public StateLocation SelectedState { get; set; }

    public Task<IEnumerable<StateLocation>> SearchState(string searchText)
    {
        var result = Data.StateList
            .Where(x => x.Name.ToLower().Contains(searchText.ToLower()))
            .ToList();

        return Task.FromResult<IEnumerable<StateLocation>>(result);
    }
}

Multiselect Example

When you want to be able to select multiple results. Bind to the Values property. The target property must be type IList<T>.

<Typeahead SearchMethod="@SearchPeople"
           Items="Data.PersonList"
           @bind-Values="@SelectedPeople"
           Placeholder="Owners">
    <SelectedTemplate Context="person">
        @person.FullName
    </SelectedTemplate>
    <ResultTemplate Context="person">
        @person.FullName
    </ResultTemplate>
</Typeahead>
@code {
    public IList<Person> SelectedPeople;

    public Task<IEnumerable<Person>> SearchPeople(string searchText)
    {
        var result = Data.PersonList
            .Where(x => x.FullName.ToLower().Contains(searchText.ToLower()))
            .ToList();

        return Task.FromResult<IEnumerable<Person>>(result);
    }
 }

Use Octokit to search for a GitHub repository.

<Typeahead SearchMethod="@SearchGithub"
           @bind-Value="@SelectedRepository"
           Placeholder="Repository"
           MinimumLength="3">
    <SelectedTemplate Context="repo">
        @repo.FullName
    </SelectedTemplate>
    <ResultTemplate Context="repo">
        <div class="github-repository clearfix">
            <div class="github-avatar"><img src="@repo.Owner.AvatarUrl"></div>
            <div class="github-meta">
                <div class="github-title">@repo.FullName</div>
                <div class="github-description">@repo.Description</div>
                <div class="github-statistics">
                    <div class="github-forks"><i class="fa fa-flash"></i> @repo.ForksCount Forks</div>
                    <div class="github-stargazers"><i class="fa fa-star"></i> @repo.StargazersCount Stars</div>
                    <div class="github-watchers"><i class="fa fa-eye"></i> @repo.SubscribersCount Watchers</div>
                </div>
            </div>
        </div>
    </ResultTemplate>
</Typeahead>
@inject IGitHubClient GitHubClient;

@code {
    public Repository SelectedRepository { get; set; }

    public async Task<IEnumerable<Repository>> SearchGithub(string searchText)
    {
        var request = new SearchRepositoriesRequest(searchText);
        var result = await GitHubClient.Search.SearchRepo(request);

        return result.Items;
    }
}
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
10.1.1 99 11/18/2024
10.1.0 71 11/18/2024
10.0.0 116 11/13/2024
9.9.0 246 10/27/2024
9.8.8 1,039 8/28/2024
9.8.7 147 8/20/2024
9.8.6 293 8/19/2024
9.8.5 111 8/19/2024
9.8.4 113 8/18/2024
9.8.3 112 8/18/2024
9.8.2 116 8/18/2024
9.8.1 124 8/16/2024
9.8.0 108 8/16/2024
9.7.9 105 8/15/2024
9.7.8 160 8/14/2024
9.7.7 124 8/13/2024
9.7.6 68 8/2/2024
9.7.5 76 8/1/2024
9.7.4 127 7/30/2024
9.7.3 745 6/10/2024
9.7.2 141 6/1/2024
9.7.1 103 6/1/2024
9.7.0 107 5/31/2024
9.6.1 115 5/25/2024
9.6.0 110 5/25/2024
9.5.0 287 4/26/2024
9.4.1 1,329 4/12/2024
9.4.0 115 4/12/2024
9.3.0 107 4/12/2024
9.2.0 686 3/2/2024
9.1.0 564 1/14/2024
9.0.2 1,059 12/4/2023
9.0.1 152 12/4/2023
9.0.0 119 12/4/2023
8.0.0 5,951 12/28/2022
7.0.0 10,118 11/10/2021
6.7.0 3,868 10/23/2021
6.6.3 329 10/21/2021
6.6.2 1,440 7/28/2021
6.6.1 1,046 5/15/2021
6.6.0 410 5/15/2021
6.5.0.156 978 4/9/2021
6.2.0.139 1,169 3/24/2021
6.1.0.137 407 3/24/2021
6.0.0.128 530 3/14/2021
5.0.0.116 491 2/25/2021
4.1.0.114 6,988 2/15/2021
4.0.0.84 8,998 11/16/2020
3.5.0.27 10,254 6/4/2020
3.0.0.61 5,647 1/24/2020
3.0.0.52 856 1/2/2020
3.0.0.51 513 1/2/2020
3.0.0.49 493 1/2/2020
2.1.0.40 618 12/20/2019
2.1.0.39 697 12/18/2019
2.1.0.38 3,360 12/5/2019
2.1.0.29 1,169 10/3/2019
2.0.0.28 527 9/23/2019
2.0.0.27 313 9/19/2019
2.0.0.21 302 9/17/2019
2.0.0.20 306 9/6/2019
2.0.0.14 331 8/23/2019
2.0.0.13 308 8/19/2019
2.0.0.9 314 8/16/2019
1.0.0.8 318 8/14/2019
1.0.0.6 312 8/7/2019
1.0.0.5 312 8/7/2019
1.0.0.4 338 8/6/2019