ant-design-blazor/components/steps/Step.razor.cs
TimChen cbc5e823f0 refactor(module: all): separate the normal and template parameters (#552)
* fix: card title template

* fix: template:badge,collapse

* fix: comment refactor template

* fix: ribbonTests

* feat: descriptions refactor template

* feat: empty refactor template

* feat: list refactor template

* feat: menu refactor template

* feat: confirm add question icon

* feat: pageHeader and statistic refactor template

* feat: popconfirm refactor template

* feat: popver refactor template

* feat: result refactor template

* feat: step refactor template

* feat: switch refactor template

* feat: table refactor template

* feat: transfer refactor template

* feat: optimized code

* fix: pageheader

* refactor(module: empty): remove empty image constant images

Co-authored-by: ElderJames <shunjiey@hotmail.com>
2020-09-16 13:58:16 +08:00

141 lines
4.0 KiB
C#

using System.Collections.Generic;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using OneOf;
namespace AntDesign
{
public partial class Step : AntDomComponentBase
{
private string _status = "wait";
private bool _isCustomStatus;
private int _groupCurrent;
private readonly Dictionary<string, object> _containerAttributes = new Dictionary<string, object>();
internal bool Clickable { get; set; }
internal bool Last { get; set; }
internal bool ShowProcessDot { get; set; }
internal string GroupStatus { get; set; } = string.Empty;
internal int GroupCurrentIndex
{
get => _groupCurrent;
set
{
_groupCurrent = value;
if (!_isCustomStatus)
{
this._status = value > this.Index ? "finish" : value == this.Index ? GroupStatus ?? string.Empty : "wait";
}
SetClassMap();
}
}
internal int Index { get; set; }
internal double? Percent { get; set; }
internal string Size { get; set; } = "default";
internal RenderFragment ProgressDot { get; set; }
internal string Direction { get; set; } = "horizontal";
[CascadingParameter]
public Steps Parent { get; set; }
[Parameter]
public string Icon { get; set; }
[Parameter]
public string Status
{
get => _status;
set
{
if (_status != value)
{
_status = value;
_isCustomStatus = true;
SetClassMap();
}
}
}
[Parameter] public string Title { get; set; } = string.Empty;
[Parameter] public RenderFragment TitleTemplate { get; set; }
[Parameter] public string Subtitle { get; set; } = string.Empty;
[Parameter] public RenderFragment SubtitleTemplate { get; set; }
[Parameter] public string Description { get; set; } = string.Empty;
[Parameter] public RenderFragment DescriptionTemplate { get; set; }
[Parameter] public EventCallback<MouseEventArgs> OnClick { get; set; }
[Parameter] public bool Disabled { get; set; }
protected override void OnInitialized()
{
Parent?.AddStep(this);
SetClassMap();
if (Clickable && !Disabled)
{
_containerAttributes["role"] = "button";
}
}
protected override void Dispose(bool disposing)
{
Parent._children.Remove(this);
Parent.ResetChildrenSteps();
base.Dispose(disposing);
}
internal int? GetTabIndex()
{
if (!Disabled && Clickable) return 0;
else return null;
}
protected void SetClassMap()
{
string prefixName = "ant-steps-item";
ClassMapper.Clear()
.Add(prefixName)
.If($"{prefixName}-{Status}", () => !string.IsNullOrEmpty(Status))
.If($"{prefixName}-active", () => Parent.Current == Index)
.If($"{prefixName}-disabled", () => Disabled)
.If($"{prefixName}-custom", () => !string.IsNullOrEmpty(Icon))
.If($"ant-steps-next-error", () => GroupStatus == "error" && Parent.Current == Index + 1)
;
}
protected override void OnParametersSet()
{
base.OnParametersSet();
SetClassMap();
}
private void HandleClick(MouseEventArgs args)
{
if (Clickable && !Disabled)
{
Parent.NavigateTo(Index);
if (OnClick.HasDelegate)
{
OnClick.InvokeAsync(args);
}
}
}
internal static void MarkForCheck()
{
}
}
}