mirror of
https://gitee.com/ant-design-blazor/ant-design-blazor.git
synced 2024-12-15 01:11:52 +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
95 lines
3.4 KiB
C#
95 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Components;
|
|
using OneOf;
|
|
|
|
namespace AntDesign
|
|
{
|
|
/// <summary>
|
|
/// show a simple Confirm dialog like MessageBox of Windows, it's different from ModalService. ModalService can only create OK-Cancel Confirm dialog and return ConfirmRef, but ConfirmService return ConfirmResult
|
|
/// </summary>
|
|
public class ConfirmService
|
|
{
|
|
internal event Func<ConfirmRef, Task> OnOpenEvent;
|
|
|
|
/// <summary>
|
|
/// show a confirm dialog like MessageBox of Windows
|
|
/// </summary>
|
|
/// <param name="content">the content of dialog</param>
|
|
/// <param name="title">the title of dialog</param>
|
|
/// <param name="confirmButtons">the buttons of dialog</param>
|
|
/// <param name="confirmIcon">the icon of dialog</param>
|
|
/// <param name="options">the configuration options for dialog</param>
|
|
/// <returns></returns>
|
|
public async Task<ConfirmResult> Show(
|
|
OneOf<string, RenderFragment> content,
|
|
OneOf<string, RenderFragment> title,
|
|
ConfirmButtons confirmButtons,
|
|
ConfirmIcon confirmIcon,
|
|
ConfirmButtonOptions options)
|
|
{
|
|
if (options == null) throw new ArgumentNullException(nameof(options));
|
|
ConfirmOptions confirmOptions = new ConfirmOptions()
|
|
{
|
|
Content = content,
|
|
ConfirmButtons = confirmButtons,
|
|
ConfirmIcon = confirmIcon,
|
|
};
|
|
if (title.IsT0)
|
|
{
|
|
confirmOptions.Title = title.AsT0;
|
|
}
|
|
else
|
|
{
|
|
confirmOptions.TitleTemplate = title.AsT1;
|
|
}
|
|
|
|
#region config button default properties
|
|
|
|
if (options.Button1Props != null)
|
|
{
|
|
confirmOptions.Button1Props = options.Button1Props;
|
|
}
|
|
if (options.Button2Props != null)
|
|
{
|
|
confirmOptions.Button2Props = options.Button2Props;
|
|
}
|
|
if (options.Button3Props != null)
|
|
{
|
|
confirmOptions.Button3Props = options.Button3Props;
|
|
}
|
|
|
|
#endregion
|
|
|
|
var confirmRef = new ConfirmRef(confirmOptions)
|
|
{
|
|
TaskCompletionSource = new TaskCompletionSource<ConfirmResult>()
|
|
};
|
|
if (OnOpenEvent != null)
|
|
{
|
|
await OnOpenEvent.Invoke(confirmRef);
|
|
}
|
|
return await confirmRef.TaskCompletionSource.Task;
|
|
}
|
|
|
|
/// <summary>
|
|
/// show a confirm dialog like MessageBox of Windows
|
|
/// </summary>
|
|
/// <param name="content">the content of dialog</param>
|
|
/// <param name="title">the title of dialog</param>
|
|
/// <param name="confirmButtons">the buttons of dialog</param>
|
|
/// <param name="confirmIcon">the icon of dialog</param>
|
|
/// <returns></returns>
|
|
public Task<ConfirmResult> Show
|
|
(OneOf<string, RenderFragment> content,
|
|
OneOf<string, RenderFragment> title,
|
|
ConfirmButtons confirmButtons = ConfirmButtons.OKCancel,
|
|
ConfirmIcon confirmIcon = ConfirmIcon.Info)
|
|
{
|
|
return Show(content, title, confirmButtons, confirmIcon, new ConfirmButtonOptions());
|
|
}
|
|
}
|
|
}
|