Toolbelt.Blazor.LoadingBar 13.1.2

Install-Package Toolbelt.Blazor.LoadingBar -Version 13.1.2
dotnet add package Toolbelt.Blazor.LoadingBar --version 13.1.2
<PackageReference Include="Toolbelt.Blazor.LoadingBar" Version="13.1.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Toolbelt.Blazor.LoadingBar --version 13.1.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Toolbelt.Blazor.LoadingBar, 13.1.2"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Toolbelt.Blazor.LoadingBar as a Cake Addin
#addin nuget:?package=Toolbelt.Blazor.LoadingBar&version=13.1.2

// Install Toolbelt.Blazor.LoadingBar as a Cake Tool
#tool nuget:?package=Toolbelt.Blazor.LoadingBar&version=13.1.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Blazor WebAssembly (client-side) LoadingBar NuGet Package

Summary

This is a class library that inserts loading bar UI automatically into a client side Blazor WebAssembly application.

movie.1

This is a porting from angular-loading-bar (except spinner UI).

Any HTTP requests to servers from HttpClient will cause appearing loading bar effect if the request takes over 100 msec.

The live demo site is here:

Supported Blazor versions

"Blazor WebAssembly App (client-side) LoadingBar" ver.12.x or later supports Blazor WebAssembly App versions below.

  • .NET Core 3.1 / Blazor Wasm 3.2
  • .NET 5.0
  • .NET 6.0

How to install and use?

Step.1 Install the library via NuGet package, like this.

> dotnet add package Toolbelt.Blazor.LoadingBar

Step.2 Register "LoadingBar" service into the DI container, and declare construct loading bar UI, at Main() method in the Program class of your Blazor application.

using Toolbelt.Blazor.Extensions.DependencyInjection; // 👈 Open namespace, and...
...
public class Program
{
  public static async Task Main(string[] args)
  {
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    builder.RootComponents.Add<App>("app");
    builder.Services.AddLoadingBar(); // 👈 register the service, and...
    ...
    builder.UseLoadingBar(); // 👈 declare construct loading bar UI.
    ...
    await builder.Build().RunAsync();
    ...

Step.3 Add invoking EnableIntercept(IServiceProvider) extension method at the registration of HttpClient to DI container.

public class Program
{
  public static async Task Main(string[] args)
  {
    ...
    builder.Services.AddScoped(sp => new HttpClient { 
      BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) 
    }.EnableIntercept(sp)); // 👈 Add this!
    ...

That's all.

After doing those 3 step, you can see a loading bar effect on your Blazor application UI, during HttpClient request going on.

Configuration

Configure the color of the loading bar

If you want to customize the color of the loading bar, please call AddLoadingBar() with configuration action like this:

builder.Services.AddLoadingBar(options =>
{
  // Specify the color of the loading bar
  // by CSS color descriptor.
  options.LoadingBarColor = "yellow";
});

And also, the color of the loading bar is defined as a CSS variable, and the variable name is --toolbelt-loadingbar-color.

So you can change the color of the loading bar anytime by using JavaScript like this:

document.documentElement.style.setProperty('--toolbelt-loadingbar-color', '#ff00dc')
Configure injection of CSS and JavaScript

The calling of AddLoadingBar() and UseLoadingBar() injects the references of JavaScript file (.js) and style sheet file (.css) - which are bundled with this package - into your page automatically.

If you don't want this behavior, you can disable these automatic injections, please call AddLoadingBar() with configuration action like this:

builder.Services.AddLoadingBar(options =>
{
  // If you don't want automatic injection of js file, add below;
  options.DisableClientScriptAutoInjection = true;

  // If you don't want automatic injection of css file, add bllow;
  options.DisableStyleSheetAutoInjection = true;
});

You can inject those helper files manually. The URLs are below:

  • .js file - _content/Toolbelt.Blazor.LoadingBar/script.min.js
  • .css file - _content/Toolbelt.Blazor.LoadingBar/style.min.css
Configure the container element what the loading bar contents inject into

By default, the "Loading bar" injects its DOM contents to the inside of the body element.

If you want to specify the element where the "Loading Bar" 's contents are injected, you can do that by setting a query selector to the ContainerSelector option, like this.

builder.Services.AddLoadingBar(options =>
{
  options.ContainerSelector = "#selector-of-container";
});

Credits

Credit goes to chieffancypants for his great works angular-loading-bar.

This library includes many codes, style sheet definition, and algorithms derived from angular-loading-bar.

Release Notes

Release notes is here.

License

Mozilla Public License Version 2.0

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on Toolbelt.Blazor.LoadingBar:

Repository Stars
enkodellc/blazorboilerplate
Blazor Boilerplate / Starter Template with MudBlazor
jsakamoto/Toolbelt.Blazor.LoadingBar
Loading bar UI for Client-Side Blazor application.
Version Downloads Last updated
13.1.2 1,096 11/19/2021
13.1.1 2,705 9/17/2021
13.1.0-preview.1.0 147 9/12/2021
13.0.0 851 9/8/2021
12.1.0 17,609 11/27/2020
12.0.1 8,904 7/22/2020
12.0.0 8,124 4/25/2020
11.0.0.1 2,221 3/12/2020
10.0.0 8,697 1/29/2020
9.0.0.3 1,212 1/12/2020
8.0.0 2,130 11/20/2019
7.0.0 2,286 9/5/2019
6.0.0 1,253 6/14/2019
5.0.0 468 4/26/2019
4.0.0 387 3/9/2019
3.0.0 386 2/8/2019
2.1.0 1,082 10/3/2018
2.0.0 447 9/21/2018
1.0.0 489 9/15/2018

v.13.1.2
- Fix: The loading bar doesn't appear in some cases.