Giter VIP home page Giter VIP logo

blazor.confetti's Introduction

License: MIT GitHub issues GitHub forks GitHub stars NuGet Downloads (official NuGet)

Blazor.Confetti

A small service that can make confetti in your Blazor application. Works for both WASM and Server render mode.

Showcase

Demo

The sample project can be demoed at https://kristofferstrube.github.io/Blazor.Confetti/

On each page, you can find the corresponding code for the example in the top right corner.

Getting Started

Prerequisites

You need to install .NET 8.0 or newer to use the library.

Download .NET 8

Installation

You can install the package via NuGet with the Package Manager in your IDE or alternatively using the command line:

dotnet add package KristofferStrube.Blazor.Confetti

Usage

The package can be used in Blazor WebAssembly, Blazor Server, and Blazor WebApp projects both with interactive WASM and Server render modes.

Import

You need to reference the package in order to use it in your pages. This can be done in _Import.razor by adding the following.

@using KristofferStrube.Blazor.Confetti

Add to service collection

The library has one service which is the ConfettiService which can be used to start a confetti animation. An easy way to make the service available on all your pages is by registering it in the IServiceCollection so that it can be dependency injected in the pages that need it. This is done in Program.cs by using our extension AddConfettiService() before you build the host like we do in the following code block.

using KristofferStrube.Blazor.Confetti;

WebApplicationBuilder builder = WebApplication.CreateBuilder(args);

// Adding other services

// Adding our service
builder.Services.AddConfettiService();

WebApplication app = builder.Build();

// Configure middleware

app.Run();

Renderer

For the confetti to appear somewhere we also need to place a component at the root of our application which will work as the drawing space for the confetti animation. A good place to do this could be in MainLayout.razor after all other markup. If you are creating a Blazor WebApp you might need to add the attribute @rendermode="InteractiveServer" to the Confetti component to make it interactive.

@inherits LayoutComponentBase
<div class="page">
    <div class="sidebar">
        <NavMenu />
    </div>

    <main>
        <div class="top-row px-4">
            <a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
        </div>

        <article class="content px-4">
            @Body
        </article>
    </main>
</div>

<!-- This is the part that we add. -->
<Confetti />

Injecting and activating the confetti service

Now we are ready to inject the ConfettiService in one of our pages or components to make some confetti.

@inject ConfettiService ConfettiService

<button class="btn btn-primary" @onclick="Activate">Celebration ๐ŸŽ‰</button>

@code {
    private void Activate()
    {
        ConfettiService.Activate(new());
    }
}

With the above we create confetti from the bottom of the page with all the default settings. We can further customize the confetti colors, amount, origin, speed, and speed variation.

@inject ConfettiService ConfettiService

<button @ref=button class="btn btn-primary" @onclick="Activate">Celebration ๐ŸŽ‰</button>

@code {
    private ElementReference button;

    private void Activate()
    {
        ConfettiOptions options = new()
            {
                Colors = ["silver", "gold", "#B87333"],
                Pieces = 500,
                Mode = ConfettiOriginMode.FromElement,
                Origin = button,
                Milliseconds = 2000,
                VariationInMilliseconds = 500
            };

        ConfettiService.Activate(options);
    }
}

Related repositories

The library uses the following other packages to support its features:

Related articles

This repository was built with inspiration and help from the following series of articles:

blazor.confetti's People

Contributors

kristofferstrube avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.