mirror of https://github.com/abpframework/abp.git
committed by
GitHub
15 changed files with 193 additions and 285 deletions
@ -1,131 +0,0 @@ |
|||
# Rules in this file were initially inferred by Visual Studio IntelliCode from the D:\Projects\Volosoft\abp\framework codebase based on best match to current usage at 2.10.2020. |
|||
# You can modify the rules from these initially generated values to suit your own policies |
|||
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference |
|||
[*.cs] |
|||
|
|||
|
|||
#Core editorconfig formatting - indentation |
|||
|
|||
#use soft tabs (spaces) for indentation |
|||
indent_style = space |
|||
|
|||
#Formatting - indentation options |
|||
|
|||
#indent switch case contents. |
|||
csharp_indent_case_contents = true |
|||
#indent switch labels |
|||
csharp_indent_switch_labels = true |
|||
|
|||
#Formatting - new line options |
|||
|
|||
#place catch statements on a new line |
|||
csharp_new_line_before_catch = true |
|||
#place else statements on a new line |
|||
csharp_new_line_before_else = true |
|||
#require members of object intializers to be on separate lines |
|||
csharp_new_line_before_members_in_object_initializers = true |
|||
#require braces to be on a new line for accessors, methods, lambdas, object_collection_array_initializers, control_blocks, types, and properties (also known as "Allman" style) |
|||
csharp_new_line_before_open_brace = accessors, methods, lambdas, object_collection_array_initializers, control_blocks, types, properties |
|||
|
|||
#Formatting - organize using options |
|||
|
|||
#sort System.* using directives alphabetically, and place them before other usings |
|||
dotnet_sort_system_directives_first = true |
|||
|
|||
#Formatting - spacing options |
|||
|
|||
csharp_space_after_cast = false |
|||
csharp_space_after_colon_in_inheritance_clause = true |
|||
csharp_space_after_comma = true |
|||
csharp_space_after_dot = false |
|||
csharp_space_after_keywords_in_control_flow_statements = true |
|||
csharp_space_after_semicolon_in_for_statement = true |
|||
csharp_space_around_binary_operators = before_and_after |
|||
csharp_space_around_declaration_statements = false |
|||
csharp_space_before_colon_in_inheritance_clause = true |
|||
csharp_space_before_comma = false |
|||
csharp_space_before_dot = false |
|||
csharp_space_before_open_square_brackets = false |
|||
csharp_space_before_semicolon_in_for_statement = false |
|||
csharp_space_between_empty_square_brackets = false |
|||
csharp_space_between_method_call_empty_parameter_list_parentheses = false |
|||
csharp_space_between_method_call_name_and_opening_parenthesis = false |
|||
csharp_space_between_method_call_parameter_list_parentheses = false |
|||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false |
|||
csharp_space_between_method_declaration_name_and_open_parenthesis = false |
|||
csharp_space_between_method_declaration_parameter_list_parentheses = false |
|||
csharp_space_between_parentheses = false |
|||
csharp_space_between_square_brackets = false |
|||
|
|||
#Formatting - wrapping options |
|||
|
|||
#leave code block on single line |
|||
csharp_preserve_single_line_blocks = true |
|||
|
|||
#Style - Code block preferences |
|||
|
|||
#prefer curly braces even for one line of code |
|||
csharp_prefer_braces = true:suggestion |
|||
|
|||
#Style - expression bodied member options |
|||
|
|||
#prefer block bodies for constructors |
|||
csharp_style_expression_bodied_constructors = false:suggestion |
|||
#prefer block bodies for methods |
|||
csharp_style_expression_bodied_methods = false:suggestion |
|||
#prefer expression-bodied members for properties |
|||
csharp_style_expression_bodied_properties = true:suggestion |
|||
|
|||
#Style - expression level options |
|||
|
|||
#prefer out variables to be declared inline in the argument list of a method call when possible |
|||
csharp_style_inlined_variable_declaration = true:suggestion |
|||
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them |
|||
dotnet_style_predefined_type_for_member_access = true:suggestion |
|||
|
|||
#Style - Expression-level preferences |
|||
|
|||
#prefer default over default(T) |
|||
csharp_prefer_simple_default_expression = true:suggestion |
|||
#prefer objects to be initialized using object initializers when possible |
|||
dotnet_style_object_initializer = true:suggestion |
|||
#prefer inferred tuple element names |
|||
dotnet_style_prefer_inferred_tuple_names = true:suggestion |
|||
|
|||
#Style - implicit and explicit types |
|||
|
|||
#prefer var over explicit type in all cases, unless overridden by another code style rule |
|||
csharp_style_var_elsewhere = true:suggestion |
|||
#prefer var is used to declare variables with built-in system types such as int |
|||
csharp_style_var_for_built_in_types = true:suggestion |
|||
#prefer var when the type is already mentioned on the right-hand side of a declaration expression |
|||
csharp_style_var_when_type_is_apparent = true:suggestion |
|||
|
|||
#Style - language keyword and framework type options |
|||
|
|||
#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them |
|||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion |
|||
|
|||
#Style - modifier options |
|||
|
|||
#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods. |
|||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion |
|||
|
|||
#Style - Modifier preferences |
|||
|
|||
#when this rule is set to a list of modifiers, prefer the specified ordering. |
|||
csharp_preferred_modifier_order = public,protected,private,virtual,async,static,override,readonly,abstract:suggestion |
|||
|
|||
#Style - Pattern matching |
|||
|
|||
#prefer pattern matching instead of is expression with type casts |
|||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion |
|||
|
|||
#Style - qualification options |
|||
|
|||
#prefer fields not to be prefaced with this. or Me. in Visual Basic |
|||
dotnet_style_qualification_for_field = false:suggestion |
|||
#prefer methods not to be prefaced with this. or Me. in Visual Basic |
|||
dotnet_style_qualification_for_method = false:suggestion |
|||
#prefer properties not to be prefaced with this. or Me. in Visual Basic |
|||
dotnet_style_qualification_for_property = false:suggestion |
|||
@ -1,12 +1,13 @@ |
|||
using System.Threading.Tasks; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
|||
{ |
|||
public interface IUiNotificationService |
|||
{ |
|||
Task Info(string message); |
|||
Task Success(string message); |
|||
Task Warn(string message); |
|||
Task Error(string message); |
|||
Task Info(string message, string title = null, Action<UiNotificationOptions> options = null); |
|||
Task Success(string message, string title = null, Action<UiNotificationOptions> options = null); |
|||
Task Warn(string message, string title = null, Action<UiNotificationOptions> options = null); |
|||
Task Error(string message, string title = null, Action<UiNotificationOptions> options = null); |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,23 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
|||
{ |
|||
public class UiNotificationEventArgs : EventArgs |
|||
{ |
|||
public UiNotificationEventArgs(UiNotificationType notificationType, string message, string title, UiNotificationOptions options) |
|||
{ |
|||
NotificationType = notificationType; |
|||
Message = message; |
|||
Title = title; |
|||
Options = options; |
|||
} |
|||
|
|||
public UiNotificationType NotificationType { get; set; } |
|||
|
|||
public string Message { get; } |
|||
|
|||
public string Title { get; } |
|||
|
|||
public UiNotificationOptions Options { get; } |
|||
} |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
using Volo.Abp.Localization; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
|||
{ |
|||
/// <summary>
|
|||
/// Options to override notification appearance.
|
|||
/// </summary>
|
|||
public class UiNotificationOptions |
|||
{ |
|||
/// <summary>
|
|||
/// Custom text for the Ok button.
|
|||
/// </summary>
|
|||
public ILocalizableString OkButtonText { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// Custom icon for the Ok button.
|
|||
/// </summary>
|
|||
public object OkButtonIcon { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
namespace Volo.Abp.AspNetCore.Components.WebAssembly |
|||
{ |
|||
public enum UiNotificationType |
|||
{ |
|||
Info, |
|||
Success, |
|||
Warning, |
|||
Error, |
|||
} |
|||
} |
|||
@ -1,40 +1,73 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.Extensions.Logging; |
|||
using Microsoft.Extensions.Logging.Abstractions; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Localization.Resources.AbpUi; |
|||
using Microsoft.Extensions.Localization; |
|||
using Volo.Abp.AspNetCore.Components.WebAssembly; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.BlazoriseUI |
|||
{ |
|||
[Dependency(ReplaceServices = true)] |
|||
public class BlazoriseUiNotificationService : IUiNotificationService, ITransientDependency |
|||
public class BlazoriseUiNotificationService : IUiNotificationService, IScopedDependency |
|||
{ |
|||
public ILogger<BlazoriseUiNotificationService> Logger { get; set; } |
|||
/// <summary>
|
|||
/// An event raised after the notification is received.
|
|||
/// </summary>
|
|||
public event EventHandler<UiNotificationEventArgs> NotificationReceived; |
|||
|
|||
public BlazoriseUiNotificationService() |
|||
private readonly IStringLocalizer<AbpUiResource> localizer; |
|||
|
|||
public BlazoriseUiNotificationService( |
|||
IStringLocalizer<AbpUiResource> localizer) |
|||
{ |
|||
Logger = NullLogger<BlazoriseUiNotificationService>.Instance; |
|||
this.localizer = localizer; |
|||
} |
|||
|
|||
public Task Info(string message) |
|||
public Task Info(string message, string title = null, Action<UiNotificationOptions> options = null) |
|||
{ |
|||
Logger.LogInformation(message); |
|||
var uiNotificationOptions = CreateDefaultOptions(); |
|||
options?.Invoke(uiNotificationOptions); |
|||
|
|||
NotificationReceived?.Invoke(this, new UiNotificationEventArgs(UiNotificationType.Info, message, title, uiNotificationOptions)); |
|||
|
|||
return Task.CompletedTask; |
|||
} |
|||
|
|||
public Task Success(string message) |
|||
public Task Success(string message, string title = null, Action<UiNotificationOptions> options = null) |
|||
{ |
|||
var uiNotificationOptions = CreateDefaultOptions(); |
|||
options?.Invoke(uiNotificationOptions); |
|||
|
|||
NotificationReceived?.Invoke(this, new UiNotificationEventArgs(UiNotificationType.Success, message, title, uiNotificationOptions)); |
|||
|
|||
return Task.CompletedTask; |
|||
} |
|||
|
|||
public Task Warn(string message) |
|||
public Task Warn(string message, string title = null, Action<UiNotificationOptions> options = null) |
|||
{ |
|||
var uiNotificationOptions = CreateDefaultOptions(); |
|||
options?.Invoke(uiNotificationOptions); |
|||
|
|||
NotificationReceived?.Invoke(this, new UiNotificationEventArgs(UiNotificationType.Warning, message, title, uiNotificationOptions)); |
|||
|
|||
return Task.CompletedTask; |
|||
} |
|||
|
|||
public Task Error(string message) |
|||
public Task Error(string message, string title = null, Action<UiNotificationOptions> options = null) |
|||
{ |
|||
var uiNotificationOptions = CreateDefaultOptions(); |
|||
options?.Invoke(uiNotificationOptions); |
|||
|
|||
NotificationReceived?.Invoke(this, new UiNotificationEventArgs(UiNotificationType.Error, message, title, uiNotificationOptions)); |
|||
|
|||
return Task.CompletedTask; |
|||
} |
|||
|
|||
protected virtual UiNotificationOptions CreateDefaultOptions() |
|||
{ |
|||
return new UiNotificationOptions |
|||
{ |
|||
}; |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1 @@ |
|||
<SnackbarStack @ref="SnackbarStack" Location="SnackbarStackLocation.Right" Closed="@OnSnackbarClosed" /> |
|||
@ -0,0 +1,76 @@ |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Blazorise.Snackbar; |
|||
using Microsoft.AspNetCore.Components; |
|||
using Microsoft.Extensions.Localization; |
|||
using Volo.Abp.AspNetCore.Components.WebAssembly; |
|||
|
|||
namespace Volo.Abp.BlazoriseUI.Components |
|||
{ |
|||
public partial class UiNotificationAlert : ComponentBase, IDisposable |
|||
{ |
|||
protected SnackbarStack SnackbarStack { get; set; } |
|||
|
|||
[Parameter] public UiNotificationType NotificationType { get; set; } |
|||
|
|||
[Parameter] public string Message { get; set; } |
|||
|
|||
[Parameter] public string Title { get; set; } |
|||
|
|||
[Parameter] public UiNotificationOptions Options { get; set; } |
|||
|
|||
[Parameter] public EventCallback Okayed { get; set; } |
|||
|
|||
[Parameter] public EventCallback Closed { get; set; } |
|||
|
|||
[Inject] protected BlazoriseUiNotificationService UiNotificationService { get; set; } |
|||
|
|||
[Inject] protected IStringLocalizerFactory StringLocalizerFactory { get; set; } |
|||
|
|||
protected virtual SnackbarColor GetSnackbarColor(UiNotificationType notificationType) |
|||
{ |
|||
return notificationType switch |
|||
{ |
|||
UiNotificationType.Info => SnackbarColor.Info, |
|||
UiNotificationType.Success => SnackbarColor.Success, |
|||
UiNotificationType.Warning => SnackbarColor.Warning, |
|||
UiNotificationType.Error => SnackbarColor.Danger, |
|||
_ => SnackbarColor.None, |
|||
}; |
|||
} |
|||
|
|||
protected override void OnInitialized() |
|||
{ |
|||
base.OnInitialized(); |
|||
|
|||
UiNotificationService.NotificationReceived += OnNotificationReceived; |
|||
} |
|||
|
|||
protected virtual void OnNotificationReceived(object sender, UiNotificationEventArgs e) |
|||
{ |
|||
NotificationType = e.NotificationType; |
|||
Message = e.Message; |
|||
Title = e.Title; |
|||
Options = e.Options; |
|||
|
|||
var okButtonText = Options?.OkButtonText?.Localize(StringLocalizerFactory); |
|||
|
|||
SnackbarStack.Push(Message, GetSnackbarColor( e.NotificationType ), okButtonText); |
|||
} |
|||
|
|||
public virtual void Dispose() |
|||
{ |
|||
if (UiNotificationService != null) |
|||
{ |
|||
UiNotificationService.NotificationReceived -= OnNotificationReceived; |
|||
} |
|||
} |
|||
|
|||
protected virtual Task OnSnackbarClosed(SnackbarClosedEventArgs eventArgs) |
|||
{ |
|||
return eventArgs.CloseReason == SnackbarCloseReason.UserClosed |
|||
? Okayed.InvokeAsync() |
|||
: Closed.InvokeAsync(); |
|||
} |
|||
} |
|||
} |
|||
@ -1,2 +1,3 @@ |
|||
@using Microsoft.AspNetCore.Components.Web |
|||
@using Blazorise |
|||
@using Blazorise |
|||
@using Blazorise.Snackbar |
|||
@ -1,131 +0,0 @@ |
|||
# Rules in this file were initially inferred by Visual Studio IntelliCode from the D:\Projects\Volosoft\abp\framework codebase based on best match to current usage at 2.10.2020. |
|||
# You can modify the rules from these initially generated values to suit your own policies |
|||
# You can learn more about editorconfig here: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference |
|||
[*.cs] |
|||
|
|||
|
|||
#Core editorconfig formatting - indentation |
|||
|
|||
#use soft tabs (spaces) for indentation |
|||
indent_style = space |
|||
|
|||
#Formatting - indentation options |
|||
|
|||
#indent switch case contents. |
|||
csharp_indent_case_contents = true |
|||
#indent switch labels |
|||
csharp_indent_switch_labels = true |
|||
|
|||
#Formatting - new line options |
|||
|
|||
#place catch statements on a new line |
|||
csharp_new_line_before_catch = true |
|||
#place else statements on a new line |
|||
csharp_new_line_before_else = true |
|||
#require members of object intializers to be on separate lines |
|||
csharp_new_line_before_members_in_object_initializers = true |
|||
#require braces to be on a new line for accessors, methods, lambdas, object_collection_array_initializers, control_blocks, types, and properties (also known as "Allman" style) |
|||
csharp_new_line_before_open_brace = accessors, methods, lambdas, object_collection_array_initializers, control_blocks, types, properties |
|||
|
|||
#Formatting - organize using options |
|||
|
|||
#sort System.* using directives alphabetically, and place them before other usings |
|||
dotnet_sort_system_directives_first = true |
|||
|
|||
#Formatting - spacing options |
|||
|
|||
csharp_space_after_cast = false |
|||
csharp_space_after_colon_in_inheritance_clause = true |
|||
csharp_space_after_comma = true |
|||
csharp_space_after_dot = false |
|||
csharp_space_after_keywords_in_control_flow_statements = true |
|||
csharp_space_after_semicolon_in_for_statement = true |
|||
csharp_space_around_binary_operators = before_and_after |
|||
csharp_space_around_declaration_statements = false |
|||
csharp_space_before_colon_in_inheritance_clause = true |
|||
csharp_space_before_comma = false |
|||
csharp_space_before_dot = false |
|||
csharp_space_before_open_square_brackets = false |
|||
csharp_space_before_semicolon_in_for_statement = false |
|||
csharp_space_between_empty_square_brackets = false |
|||
csharp_space_between_method_call_empty_parameter_list_parentheses = false |
|||
csharp_space_between_method_call_name_and_opening_parenthesis = false |
|||
csharp_space_between_method_call_parameter_list_parentheses = false |
|||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false |
|||
csharp_space_between_method_declaration_name_and_open_parenthesis = false |
|||
csharp_space_between_method_declaration_parameter_list_parentheses = false |
|||
csharp_space_between_parentheses = false |
|||
csharp_space_between_square_brackets = false |
|||
|
|||
#Formatting - wrapping options |
|||
|
|||
#leave code block on single line |
|||
csharp_preserve_single_line_blocks = true |
|||
|
|||
#Style - Code block preferences |
|||
|
|||
#prefer curly braces even for one line of code |
|||
csharp_prefer_braces = true:suggestion |
|||
|
|||
#Style - expression bodied member options |
|||
|
|||
#prefer block bodies for constructors |
|||
csharp_style_expression_bodied_constructors = false:suggestion |
|||
#prefer block bodies for methods |
|||
csharp_style_expression_bodied_methods = false:suggestion |
|||
#prefer expression-bodied members for properties |
|||
csharp_style_expression_bodied_properties = true:suggestion |
|||
|
|||
#Style - expression level options |
|||
|
|||
#prefer out variables to be declared inline in the argument list of a method call when possible |
|||
csharp_style_inlined_variable_declaration = true:suggestion |
|||
#prefer the language keyword for member access expressions, instead of the type name, for types that have a keyword to represent them |
|||
dotnet_style_predefined_type_for_member_access = true:suggestion |
|||
|
|||
#Style - Expression-level preferences |
|||
|
|||
#prefer default over default(T) |
|||
csharp_prefer_simple_default_expression = true:suggestion |
|||
#prefer objects to be initialized using object initializers when possible |
|||
dotnet_style_object_initializer = true:suggestion |
|||
#prefer inferred tuple element names |
|||
dotnet_style_prefer_inferred_tuple_names = true:suggestion |
|||
|
|||
#Style - implicit and explicit types |
|||
|
|||
#prefer var over explicit type in all cases, unless overridden by another code style rule |
|||
csharp_style_var_elsewhere = true:suggestion |
|||
#prefer var is used to declare variables with built-in system types such as int |
|||
csharp_style_var_for_built_in_types = true:suggestion |
|||
#prefer var when the type is already mentioned on the right-hand side of a declaration expression |
|||
csharp_style_var_when_type_is_apparent = true:suggestion |
|||
|
|||
#Style - language keyword and framework type options |
|||
|
|||
#prefer the language keyword for local variables, method parameters, and class members, instead of the type name, for types that have a keyword to represent them |
|||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion |
|||
|
|||
#Style - modifier options |
|||
|
|||
#prefer accessibility modifiers to be declared except for public interface members. This will currently not differ from always and will act as future proofing for if C# adds default interface methods. |
|||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion |
|||
|
|||
#Style - Modifier preferences |
|||
|
|||
#when this rule is set to a list of modifiers, prefer the specified ordering. |
|||
csharp_preferred_modifier_order = public,protected,private,virtual,async,static,override,readonly,abstract:suggestion |
|||
|
|||
#Style - Pattern matching |
|||
|
|||
#prefer pattern matching instead of is expression with type casts |
|||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion |
|||
|
|||
#Style - qualification options |
|||
|
|||
#prefer fields not to be prefaced with this. or Me. in Visual Basic |
|||
dotnet_style_qualification_for_field = false:suggestion |
|||
#prefer methods not to be prefaced with this. or Me. in Visual Basic |
|||
dotnet_style_qualification_for_method = false:suggestion |
|||
#prefer properties not to be prefaced with this. or Me. in Visual Basic |
|||
dotnet_style_qualification_for_property = false:suggestion |
|||
Loading…
Reference in new issue