diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/PreloadDocumentation.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/PreloadDocumentation.razor index 9df788f1b..dfca9f928 100644 --- a/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/PreloadDocumentation.razor +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/PreloadDocumentation.razor @@ -41,6 +41,12 @@ +
+
+ Here's a growing collection of sleek, animated preloaders including dual rings, bouncing dots, wave bars, and more. +
+ +
@code { private const string pageUrl = DemoRouteConstants.Demos_URL_Preload; private const string pageTitle = "Blazor Preload"; diff --git a/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/Preload_Demo_04_Animated_Loading_Spinners.razor b/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/Preload_Demo_04_Animated_Loading_Spinners.razor new file mode 100644 index 000000000..418036615 --- /dev/null +++ b/BlazorBootstrap.Demo.RCL/Components/Pages/Demos/Preload/Preload_Demo_04_Animated_Loading_Spinners.razor @@ -0,0 +1,27 @@ + + + +@code { + [Inject] protected PreloadService PreloadService { get; set; } = default!; + + private async Task ShowBarsProgressionLoader(SpinnerColor spinnerColor) + { + PreloadService.Show(spinnerColor, "Loading data...", StringConstants.BarsProgressionLoader); + await Task.Delay(3000); + PreloadService.Hide(); + } + + private async Task ShowBouncingDotsAnimationLoader(SpinnerColor spinnerColor) + { + PreloadService.Show(spinnerColor, "Loading data...", StringConstants.BouncingDots); + await Task.Delay(3000); + PreloadService.Hide(); + } + + private async Task ShowPulseRingLoader(SpinnerColor spinnerColor) + { + PreloadService.Show(spinnerColor, "Loading data...", StringConstants.PulseRingLoader); + await Task.Delay(3000); + PreloadService.Hide(); + } +} diff --git a/blazorbootstrap/Components/Preload/Preload.razor b/blazorbootstrap/Components/Preload/Preload.razor index 82363c7b0..0459c54f0 100644 --- a/blazorbootstrap/Components/Preload/Preload.razor +++ b/blazorbootstrap/Components/Preload/Preload.razor @@ -11,20 +11,72 @@ } else { -
-
- Loading... + @if (spinnerType == StringConstants.BouncingDots) + { +
+
+ @if (!string.IsNullOrWhiteSpace(loadingText)) + { +
@loadingText
+ } + else if (!string.IsNullOrWhiteSpace(LoadingText)) + { +
@LoadingText
+ }
- @if (!string.IsNullOrWhiteSpace(loadingText)) - { -
@loadingText
- } - else if (!string.IsNullOrWhiteSpace(LoadingText)) - { -
@LoadingText
- } -
+ } + + @if (spinnerType == StringConstants.BarsProgressionLoader) + { +
+
+ @if (!string.IsNullOrWhiteSpace(loadingText)) + { +
@loadingText
+ } + else if (!string.IsNullOrWhiteSpace(LoadingText)) + { +
@LoadingText
+ } +
+ } + + @if (spinnerType == StringConstants.PulseRingLoader) + { +
+
+ @if (!string.IsNullOrWhiteSpace(loadingText)) + { +
@loadingText
+ } + else if (!string.IsNullOrWhiteSpace(LoadingText)) + { +
@LoadingText
+ } +
+ } + + @if (string.IsNullOrEmpty(spinnerType) || (spinnerType == StringConstants.DefaultBootstrapSpinner)) + { +
+
+ Loading... +
+ @if (!string.IsNullOrWhiteSpace(loadingText)) + { +
@loadingText
+ } + else if (!string.IsNullOrWhiteSpace(LoadingText)) + { +
@LoadingText
+ } +
+ } + } + + +
@@ -34,3 +86,142 @@ { } + + + + \ No newline at end of file diff --git a/blazorbootstrap/Components/Preload/Preload.razor.cs b/blazorbootstrap/Components/Preload/Preload.razor.cs index 5617e143b..f8412a2be 100644 --- a/blazorbootstrap/Components/Preload/Preload.razor.cs +++ b/blazorbootstrap/Components/Preload/Preload.razor.cs @@ -9,7 +9,8 @@ public partial class Preload : BlazorBootstrapComponentBase private bool showBackdrop; private string? spinnerColor; - + private string? spinnerType; + private string? animatedLoaderPrimaryColor; #endregion #region Methods @@ -39,14 +40,15 @@ private void OnHide() StateHasChanged(); } - private void OnShow(SpinnerColor spinnerColor, string? loadingText) + private void OnShow(SpinnerColor spinnerColor, string? loadingText, string? spinnerType) { this.spinnerColor = spinnerColor.ToSpinnerColorClass(); + this.animatedLoaderPrimaryColor = spinnerColor.ToHexColorCode(); showBackdrop = true; this.loadingText = loadingText; - + this.spinnerType = spinnerType; StateHasChanged(); } @@ -96,5 +98,17 @@ private void OnShow(SpinnerColor spinnerColor, string? loadingText) [Inject] private PreloadService PageLoadingService { get; set; } = default!; + + /// + /// Gets or sets the spinner type. + /// + /// Default value is . + /// + /// + [AddedVersion("1.10.4")] + [DefaultValue(StringConstants.DefaultBootstrapSpinner)] + [Description("Gets or sets the spinner type.")] + [Parameter] + public string? SpinnerType { get; set; } #endregion } diff --git a/blazorbootstrap/Constants/StringConstants.cs b/blazorbootstrap/Constants/StringConstants.cs index e6d6cbee8..d5f18b15b 100644 --- a/blazorbootstrap/Constants/StringConstants.cs +++ b/blazorbootstrap/Constants/StringConstants.cs @@ -36,5 +36,9 @@ public static class StringConstants public const string PropertyTypeNameGuidCSharpTypeKeyword = "Guid"; public const string PropertyTypeNameObjectCSharpTypeKeyword = "object"; + public const string BouncingDots = "BouncingDots"; + public const string BarsProgressionLoader = "BarsProgressionLoader"; + public const string DefaultBootstrapSpinner = "DefaultBootstrapSpinner"; + public const string PulseRingLoader = "PulseRingLoader"; #endregion } diff --git a/blazorbootstrap/Extensions/EnumExtensions.cs b/blazorbootstrap/Extensions/EnumExtensions.cs index d36cfec3a..37d4f642f 100644 --- a/blazorbootstrap/Extensions/EnumExtensions.cs +++ b/blazorbootstrap/Extensions/EnumExtensions.cs @@ -627,5 +627,19 @@ or ToastType.Info _ => "" }; + public static string ToHexColorCode(this SpinnerColor spinnerColor) => + spinnerColor switch + { + SpinnerColor.Primary => "#0d6efd", + SpinnerColor.Secondary => "#6c757d", + SpinnerColor.Success => "#198754", + SpinnerColor.Danger => "#dc3545", + SpinnerColor.Warning => "#ffc107", + SpinnerColor.Info => "#0dcaf0", + SpinnerColor.Light => "#f8f9fa", + SpinnerColor.Dark => "#212529", + _ => "" + }; + #endregion } diff --git a/blazorbootstrap/Services/PreloadService.cs b/blazorbootstrap/Services/PreloadService.cs index 72fa3a598..32ecaf8bb 100644 --- a/blazorbootstrap/Services/PreloadService.cs +++ b/blazorbootstrap/Services/PreloadService.cs @@ -5,7 +5,7 @@ public class PreloadService #region Events internal event Action OnHide = default!; - internal event Action OnShow = default!; + internal event Action OnShow = default!; #endregion @@ -25,7 +25,7 @@ public class PreloadService /// [AddedVersion("1.1.0")] [Description("Shows the preload spinner.")] - public void Show(SpinnerColor spinnerColor = SpinnerColor.Light, string? loadingText = null) => OnShow?.Invoke(spinnerColor, loadingText); + public void Show(SpinnerColor spinnerColor = SpinnerColor.Light, string? loadingText = null, string? loadingSpinner = null) => OnShow?.Invoke(spinnerColor, loadingText, loadingSpinner); #endregion }