mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-12-14 08:51:27 +08:00
6aff9d370c
* fix(module: Modal&Drawer): render reducing and demo update * docs(module: modal): add FAQ section * docs: add English comments * fix: wrong format in Modal_service_for_confirm.razor Co-authored-by: James Yeung <shunjiey@hotmail.com>
124 lines
3.7 KiB
C#
124 lines
3.7 KiB
C#
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
namespace AntDesign
|
|
{
|
|
public partial class ComfirmContainer
|
|
{
|
|
[Inject]
|
|
private ModalService ModalService { get; set; }
|
|
|
|
[Inject]
|
|
private ConfirmService ConfirmService { get; set; }
|
|
|
|
private readonly List<ConfirmRef> _confirmRefs = new List<ConfirmRef>();
|
|
|
|
#region override
|
|
|
|
/// <summary>
|
|
/// Registration events
|
|
/// </summary>
|
|
protected override void OnInitialized()
|
|
{
|
|
ModalService.OnConfirmOpenEvent += OnConfirmOpen;
|
|
ModalService.OnConfirmCloseEvent += OnConfirmClose;
|
|
ModalService.OnConfirmCloseAllEvent += OnConfirmCloseAll;
|
|
ModalService.OnConfirmUpdateEvent += OnConfirmUpdate;
|
|
|
|
ConfirmService.OnOpenEvent += OnConfirmOpen;
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// create and open a Confirm dialog
|
|
/// </summary>
|
|
private async Task OnConfirmOpen(ConfirmRef confirmRef)
|
|
{
|
|
confirmRef.Config.Visible = true;
|
|
if (!_confirmRefs.Contains(confirmRef))
|
|
{
|
|
confirmRef.Config.BuildButtonsDefaultOptions();
|
|
_confirmRefs.Add(confirmRef);
|
|
}
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
|
|
/// <summary>
|
|
/// update Confirm dialog
|
|
/// </summary>
|
|
/// <param name="confirmRef"></param>
|
|
/// <returns></returns>
|
|
private async Task OnConfirmUpdate(ConfirmRef confirmRef)
|
|
{
|
|
if (confirmRef.Config.Visible)
|
|
{
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// destroy Confirm dialog
|
|
/// </summary>
|
|
/// <param name="confirmRef"></param>
|
|
/// <returns></returns>
|
|
private async Task OnConfirmClose(ConfirmRef confirmRef)
|
|
{
|
|
if (confirmRef.Config.Visible)
|
|
{
|
|
confirmRef.Config.Visible = false;
|
|
await InvokeAsync(StateHasChanged);
|
|
if (confirmRef.OnClose != null)
|
|
{
|
|
await confirmRef.OnClose.Invoke();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// after Confirm dialog remove from DOM, to remove it from _confirmRefs
|
|
/// </summary>
|
|
/// <param name="confirmRef"></param>
|
|
/// <returns></returns>
|
|
private Task OnConfirmRemove(ConfirmRef confirmRef)
|
|
{
|
|
if (_confirmRefs.Contains(confirmRef))
|
|
{
|
|
_confirmRefs.Remove(confirmRef);
|
|
}
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
/// <summary>
|
|
/// destroy all Confirm dialog
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task OnConfirmCloseAll()
|
|
{
|
|
// avoid iterations the change of _confirmRefs affects the iterative process
|
|
var confirmRefsTemp = new List<ConfirmRef>(_confirmRefs);
|
|
foreach (var confirmRef in confirmRefsTemp)
|
|
{
|
|
await OnConfirmClose(confirmRef);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Unregister events
|
|
/// </summary>
|
|
/// <param name="disposing"></param>
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
ModalService.OnConfirmOpenEvent -= OnConfirmOpen;
|
|
ModalService.OnConfirmCloseEvent -= OnConfirmClose;
|
|
ModalService.OnConfirmCloseAllEvent -= OnConfirmCloseAll;
|
|
ModalService.OnConfirmUpdateEvent -= OnConfirmUpdate;
|
|
|
|
ConfirmService.OnOpenEvent -= OnConfirmOpen;
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
}
|
|
}
|