You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Connected.Components/src/Connected.Components/Components/Button.razor.cs

136 lines
2.9 KiB

using Connected.Utilities;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
namespace Connected.Components;
public partial class Button
{
#region Parameters
/// <summary>
/// Outline type of the button.
/// Options: true, false
/// Default: false
/// </summary>
[Parameter]
public bool Outlined { get; set; } = false;
/// <summary>
/// Color of the button.
/// Options: Color.[Core,Primary,Secondary,Success,Info,Warning,Danger,White,Light,Dark]
/// Default: Color.Core
/// </summary>
[Parameter]
public Color Color { get; set; } = Color.Core;
/// <summary>
/// Size of the button.
/// Options: Size.[Small,Medium,Large,FullWidth]
/// Default: Size.Medium
/// </summary>
[Parameter]
public Size Size { get; set; } = Size.Medium;
/// <summary>
/// Text shown inside the button
/// Options: any string variable
/// Default: string.Empty
/// </summary>
[Parameter]
public RenderFragment? ChildContent { get; set; }
/// <summary>
/// Disabled or enabled.
/// Default: false
/// </summary>
[Parameter]
public bool Disabled { get; set; } = false;
/// <summary>
/// User defined custom class added on top of default generated classes
/// Options: any user defined string with class names divided by space
/// Default: string.Empty
/// </summary>
[Parameter]
public string Class { get; set; } = string.Empty;
/// <summary>
/// User defined custom class added on top of default generated classes
/// Options: any user defined string with class names divided by space
/// Default: string.Empty
/// </summary>
[Parameter]
public string ContentClass { get; set; } = string.Empty;
/// <summary>
/// User defined custom style
/// Options: any valid CSS style
/// Default: string.Empty
/// </summary>
[Parameter]
public string Style { get; set; } = string.Empty;
#endregion
#region Events
/// <summary>
/// Button click event.
/// Options: any MouseEventCallback event
/// Default: empty
[Parameter]
public EventCallback<MouseEventArgs> OnClick { get; set; }
protected async Task Click(MouseEventArgs e)
{
await OnClick.InvokeAsync(e);
}
#endregion
#region Styling
public string StyleList
{
get
{
return new StyleBuilder()
.AddStyle(Style)
.Build();
}
}
/// <summary>
/// Generated class list for button based on user parameters
/// </summary>
public string ClassList
{
get
{
return new CssBuilder("btn")
.AddClass("btn-" + Helper.GetEnumDescription<Size>(Size))
.AddClass("btn-" + Helper.GetEnumDescription<Color>(Color),!Outlined)
.AddClass("btn-outline-" + Helper.GetEnumDescription<Color>(Color), Outlined)
.AddClass(Class)
.Build();
}
}
/// <summary>
/// Generated class list for button based on user parameters
/// </summary>
public string ContentClassList
{
get
{
return new CssBuilder("")
.AddClass(ContentClass)
.Build();
}
}
#endregion
}