CurrieTechnologies.Razor.SweetAlert2 5.0.0-preview.1

This is a prerelease version of CurrieTechnologies.Razor.SweetAlert2.
There is a newer version of this package available.
See the version list below for details.
dotnet add package CurrieTechnologies.Razor.SweetAlert2 --version 5.0.0-preview.1                
NuGet\Install-Package CurrieTechnologies.Razor.SweetAlert2 -Version 5.0.0-preview.1                
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="CurrieTechnologies.Razor.SweetAlert2" Version="5.0.0-preview.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CurrieTechnologies.Razor.SweetAlert2 --version 5.0.0-preview.1                
#r "nuget: CurrieTechnologies.Razor.SweetAlert2, 5.0.0-preview.1"                
#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 CurrieTechnologies.Razor.SweetAlert2 as a Cake Addin
#addin nuget:?package=CurrieTechnologies.Razor.SweetAlert2&version=5.0.0-preview.1&prerelease

// Install CurrieTechnologies.Razor.SweetAlert2 as a Cake Tool
#tool nuget:?package=CurrieTechnologies.Razor.SweetAlert2&version=5.0.0-preview.1&prerelease                

<p align="center"> <a href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor"> <img src="BrandBlazor_nohalo_140x.png" alt="Blazor"> </a> </p> <p align="center"> Blazor </p> <p align="center"> + </p> <p align="center"> <a href="https://sweetalert2.github.io/"> <img src="https://raw.github.com/sweetalert2/sweetalert2/master/assets/swal2-logo.png" alt="SweetAlert2"> </a> </p> <p align="center"> A beautiful, responsive, customizable, accessible (WAI-ARIA) replacement for JavaScript's popup boxes. </p> <p align="center"> <a href="https://sweetalert2.github.io/"> <img src="https://raw.github.com/sweetalert2/sweetalert2/master/assets/sweetalert2.gif" width="562"><br> See SweetAlert2 in action ↗ </a> </p>


Master Develop Version Downloads Dependabot Mergify
Build Status Build Status Nuget Nuget Dependabot Status mergify-status

👉 Upgrading from v1.x to v2.x? Read the release notes!

👉 Upgrading from v2.x to v3.x? Read the release notes!

👉 Upgrading from v3.x to v4.x? Read the release notes!

This package is for both Blazor Server Apps and Blazor WebAssembly Apps. It should be used instead of CurrieTechnologies.Blazor.SweetAlert2 which is now deprecated.

🙌 Includes themes from the Official SweetAlert2 Themes project 🙌

Installation

Install-Package CurrieTechnologies.Razor.SweetAlert2

Or install from the NuGet Package Manager

Usage

Register the service in your Startup file.

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
 services.AddSweetAlert2();
...
}

OR

If you want to use one of the Official SweetAlert2 themes

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
 services.AddSweetAlert2(options => {
   options.Theme = SweetAlertTheme.Dark;
 });
...
}

See Configuration for more information.

Add this script tag in your root html file (Likely _Host.cshtml for Blazor Server or index.html for Blazor WebAssembly), right under the framework script tag. (i.e <script src="_framework/blazor.server.js"></script> for Blazor Server or <script src="_framework/blazor.webassembly.js"></script> for Blazor WebAssembly)

<script src="_content/CurrieTechnologies.Razor.SweetAlert2/sweetAlert2.min.js"></script>

If you need to support IE11, this script tag is different. See IE Compatibility.

Inject the SweetAlertService into any Blazor component.

// Sample.razor
@inject SweetAlertService Swal;
<button class="btn btn-primary"
   @onclick="(async () => await Swal.FireAsync("Any fool can use a computer"))">
 Try me!
</button>

Examples

The most basic message:

await Swal.FireAsync("Hello world!");

A message signaling an error:

await Swal.FireAsync("Oops...", "Something went wrong!", "error");

Handling the result of SweetAlert2 modal:

// async/await
SweetAlertResult result = await Swal.FireAsync(new SweetAlertOptions
 {
   Title = "Are you sure?",
   Text = "You will not be able to recover this imaginary file!",
   Icon = SweetAlertIcon.Warning,
   ShowCancelButton = true,
   ConfirmButtonText = "Yes, delete it!",
   CancelButtonText = "No, keep it"
 });

if (!string.IsNullOrEmpty(result.Value))
{
 await Swal.FireAsync(
   "Deleted",
   "Your imaginary file has been deleted.",
   SweetAlertIcon.Success
   );
}
else if (result.Dismiss == DismissReason.Cancel)
{
 await Swal.FireAsync(
   "Cancelled",
   "Your imaginary file is safe :)",
   SweetAlertIcon.Error
   );
}

// Promise/Task based
Swal.FireAsync(new SweetAlertOptions
 {
   Title = "Are you sure?",
   Text = "You will not be able to recover this imaginary file!",
   Icon = SweetAlertIcon.Warning,
   ShowCancelButton = true,
   ConfirmButtonText = "Yes, delete it!",
   CancelButtonText = "No, keep it"
 }).ContinueWith(swalTask =>
 {
   SweetAlertResult result = swalTask.Result;
   if (!string.IsNullOrEmpty(result.Value))
   {
     Swal.FireAsync(
       "Deleted",
       "Your imaginary file has been deleted.",
       SweetAlertIcon.Success
       );
   }
   else if (result.Dismiss == DismissReason.Cancel)
   {
     Swal.FireAsync(
       "Cancelled",
       "Your imaginary file is safe :)",
       SweetAlertIcon.Error
       );
   }
 });

More examples can be found on the SweetAlert2 project site

Configuration

In Startup.cs you have the opportunity to configure how sweetalert2 will behave in your application.

Theme

With SweetAlertServiceOptions.Theme you can specify one of the official sweetalert2 themes to apply to your modal throughout your application.

SetThemeForColorSchemePreference()

With the SweetAlertServiceOptions.SetThemeForColorSchemePreference() method, you can specify which theme the user uses, based on the result of their prefers-color-scheme CSS media query. Most commonly this can be used to help create a dark version of your application, based on user preference. Browsers that do not support the prefers-color-scheme media query will fall back to the theme specified in SweetAlertServiceOptions.Theme

Theme Examples

If you want the default theme by default, and the dark theme if the user prefers a dark color scheme:

services.AddSweetAlert2(options => {
 options.SetThemeForColorSchemePreference(ColorScheme.Dark, SweetAlertTheme.Dark);
});

A dark theme by default, and a lighter theme if the user prefers a light color scheme:

services.AddSweetAlert2(options => {
 options.Theme = SweetAlertTheme.Dark;
 options.SetThemeForColorSchemePreference(ColorScheme.Light, SweetAlertTheme.Bootstrap4);
});

A minimal theme as a fallback, and a dark/light theme to match user preference:

services.AddSweetAlert2(options => {
 options.Theme = SweetAlertTheme.Minimal;
 options.SetThemeForColorSchemePreference(ColorScheme.Light, SweetAlertTheme.Default);
 options.SetThemeForColorSchemePreference(ColorScheme.Dark, SweetAlertTheme.Dark);
});

See prefers-color-scheme for more information.

Notable differences from the JavaScript library

  • No methods that return an HTMLElement are included (e. g. Swal.getContainer())
  • The value of a SweetAlertResult (result.Value) can only be a string. Numbers and booleans must be converted. Object must be parsed to/from JSON in your code.
  • DidOpenAsync(), WillCloseAsync(), WillOpenAsync(), and DidCloseAsync() can all take asynchronous callbacks. 🎉 (none will return an HTMLElement though.)
  • No support for <optgroup> in the select input type.
  • No async option for InputOptions or InputValue
  • Callbacks must be passed inside of objects specifically designed for the given callback property. e.g. the InputValidator property takes an InputValidatorCallback created like so:
new SweetAlertOptions {
 ...
 InputValidator = new InputValidatorCallback((string input) => input.Length == 0 ? "Please provide a value" : null, this),
 ...
}

this is passed in so that the Blazor EventCallback used behind the scenes can trigger a re-render if the state of the calling component was changed in the callback. If the callback does not require the calling component to re-render, passing in this is optional. These callbacks are necessary because there is currently no way to create an EventCallback in Blazor that isn't a component parameter without using the EventCallbackFactory which is clunky. It also allows the callback to return a value that can be used by the SweetAlert2 library. (e.g. A validation message to show if input validation fails.) Native Blazor EventCallbacks only return generic Tasks.

Browser compatibility

IE11* Edge Chrome Firefox Safari Opera UC Browser
⚠️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

IE Compatibility*

If you need to support IE11, use this script tag instead. (file size is about 35% larger)

<script src="_content/CurrieTechnologies.Razor.SweetAlert2/sweetAlert2.ieCompat.min.js"></script>

You will also likely need to utilize the Blazor.Polyfill library, for general Blazor functionality in IE.

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (7)

Showing the top 5 NuGet packages that depend on CurrieTechnologies.Razor.SweetAlert2:

Package Downloads
OneLine.Blazor

OneLine.Blazor is a set of components and utilities to be used in blazor context.

Necnat.Abp.NnLibCommon.Blazor

Package Description

Tuic

Web front-end components package for use in Blazor WASM. The components utilize Bootstrap 5.0 and based on Tabler.

TucComponents

Web front-end components package for use in Blazor WASM. The components utilize Bootstrap 5.0.

Zoy.Core.App.Web

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
5.6.0 48,188 3/19/2024
5.5.0 80,760 3/29/2023
5.4.0 26,480 12/14/2022
5.3.0 9,671 10/11/2022
5.2.1 45,910 4/13/2022
5.2.0 10,113 3/16/2022
5.1.0 67,233 11/8/2021
5.0.3 7,790 10/6/2021
5.0.2 2,816 9/10/2021
5.0.1 8,201 6/23/2021
5.0.0 4,066 6/16/2021
5.0.0-preview.1 165 6/16/2021
4.5.0 7,961 5/7/2021
4.4.0 4,289 4/7/2021
4.3.1 22,816 11/20/2020
4.3.0 8,284 11/5/2020
4.2.0 8,428 11/2/2020
4.1.0 2,018 10/22/2020
4.0.0 5,883 10/14/2020
3.0.0 2,841 9/17/2020
2.10.1 5,792 8/10/2020
2.10.0 5,607 7/14/2020
2.9.1 1,874 7/14/2020
2.9.0 2,698 6/26/2020
2.8.2 2,559 6/16/2020
2.8.1 2,994 6/8/2020
2.8.0 1,983 6/5/2020
2.7.0 4,349 5/21/2020
2.6.7 2,157 5/13/2020
2.6.6 30,762 4/20/2020
2.6.5 3,610 4/6/2020
2.6.4 2,179 4/1/2020
2.6.3 2,007 3/25/2020
2.6.2 1,994 3/23/2020
2.6.1 1,899 3/19/2020
2.6.0 3,567 3/9/2020
2.5.4 2,529 2/24/2020
2.5.3 2,004 2/19/2020
2.5.2 2,467 2/7/2020
2.5.1 2,084 1/30/2020
2.5.0 1,995 1/22/2020
2.4.1 2,003 1/21/2020
2.4.0 2,063 1/15/2020
2.3.2 1,989 1/15/2020
2.3.1 1,998 12/31/2019
2.3.0 4,591 12/12/2019
2.2.2 1,959 12/10/2019
2.2.1 2,170 12/6/2019
2.2.0 2,087 12/3/2019
2.1.14 1,898 12/3/2019
2.1.13 1,982 12/3/2019
2.1.12 1,913 12/2/2019
2.1.11 2,002 11/25/2019
2.1.10 1,875 11/21/2019
2.1.9 1,908 11/19/2019
2.1.8 1,926 11/19/2019
2.1.7 1,915 11/18/2019
2.1.6 1,883 11/15/2019
2.1.5 1,910 11/15/2019
2.1.4 1,847 11/15/2019
2.1.3 1,917 11/14/2019
2.1.2 1,896 11/13/2019
2.1.1 2,205 11/12/2019
2.1.0 1,949 11/11/2019
2.0.2 1,973 11/8/2019
2.0.1 1,959 11/6/2019
2.0.0 2,041 11/5/2019
1.2.4 2,017 11/4/2019
1.2.3 1,958 11/1/2019
1.2.2 1,960 10/23/2019
1.2.1 1,975 10/18/2019
1.2.0 1,931 10/17/2019
1.1.1 1,936 10/16/2019
1.1.0 1,975 10/11/2019
1.0.4 1,914 10/10/2019
1.0.3 1,865 10/9/2019
1.0.2 1,947 10/7/2019
1.0.1 2,011 9/30/2019
1.0.0 1,977 9/23/2019
0.10.2 333 9/19/2019
0.10.1 355 9/17/2019
0.10.0 318 9/16/2019
0.9.1 312 9/16/2019
0.9.0 331 9/4/2019
0.8.5 315 9/4/2019
0.8.0 314 9/3/2019
0.7.1 339 8/22/2019
0.7.0 327 8/19/2019
0.6.1 324 8/16/2019
0.6.0 322 8/13/2019
0.5.0 318 8/12/2019
0.4.5 335 8/9/2019
0.4.4 333 8/5/2019
0.4.3 331 8/2/2019
0.4.2 331 8/2/2019
0.4.1 324 7/29/2019
0.4.0 335 7/23/2019
0.3.1 1,966 7/18/2019
0.3.0 2,027 7/18/2019
0.2.9 2,019 7/17/2019
0.2.2 1,931 7/15/2019
0.2.1 2,016 7/9/2019
0.2.0 2,001 6/17/2019
0.1.3 2,036 6/14/2019
0.1.2 1,991 6/14/2019
0.1.0 2,047 6/14/2019

bump sweetalert2
     remove queueing functionality
     default color adjustments