mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-12-05 05:27:37 +08:00
ef4701b6ed
* refactor(module: modal): refactor the code of Modal, Confirm and Dialog refactor details: - Add DialogWrapper compontent to control the logic of dialog removal from DOM - Add the appropriate folders for Dialog, Modal, and Confirm - Remove methods with the same logic but different names in ConfirmService - Split Title into Title (string) and Titletemplate (renderfragment) - Add comments to code - Rename ConfirmDialog to Confirm - Specification of method name in ConfirmService - Adjust the time of throttle function for draggabe modal - Extract the common part of ModalOptions, ConfirmOptions and DialogOptions as DialogOptionsBase * refactor: move DefaultCloseIcon etc. static members to DialogOptionsBase * docs(module: modal): update docs * fix: dialog incorrect waiting * fix: pickup missing pr/7
121 lines
3.6 KiB
C#
121 lines
3.6 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)
|
|
{
|
|
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);
|
|
}
|
|
}
|
|
}
|