public async Task <DialogResult <TResult> > ShowDialogAsync <TComponent, TResult>(string title) where TComponent : ComponentBase { var taskCompletionSource = new TaskCompletionSource <DialogResult>(); var option = new DialogOption() { Content = typeof(TComponent), IsDialog = true, Title = title, TaskCompletionSource = taskCompletionSource }; ShowDialog(option); var dialogResult = await taskCompletionSource.Task; return(new DialogResult <TResult>() { Result = (TResult)dialogResult.Result }); }
internal async Task CloseDialogAsync(DialogOption option, DialogResult result) { var messageContent = option.Element; var dom = messageContent.Dom(JSRuntime); var top = await dom.GetOffsetTopAsync(); var left = await dom.GetOffsetLeftAsync(); var style = messageContent.Dom(JSRuntime).Style; if (!GlobalBlazuiSettings.DisableAnimation) { await style.SetAsync("left", $"{left}px"); await style.SetAsync("top", $"{top}px"); await style.SetAsync("position", "absolute"); await style.SetTransitionAsync("top 0.3s,opacity 0.3s"); await Task.Delay(100); await style.SetAsync("top", $"{top - 10}px"); await style.SetAsync("opacity", $"0"); if (--ShadowCount <= 0) { await option.ShadowElement.Dom(JSRuntime).Style.SetAsync("opacity", "0"); } await Task.Delay(300); await style.ClearAsync("left"); await style.ClearAsync("top"); await style.ClearAsync("position"); } option.TaskCompletionSource.TrySetResult(result); DialogService.Dialogs.Remove(option); }
/// <summary> /// 显示一个窗口 /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="type">要显示的内容,可以是一个组件的 <seealso cref="Type"/></param> /// <param name="title">标题</param> /// <param name="width">宽度</param> /// <param name="parameters">显示该组件所需要的参数</param> /// <returns></returns> public async Task <DialogResult <TResult> > ShowDialogAsync <TResult>(object type, string title, float width, IDictionary <string, object> parameters) { var taskCompletionSource = new TaskCompletionSource <DialogResult>(); var option = new DialogOption() { Content = type, IsDialog = true, Width = width, Title = title, Parameters = parameters, TaskCompletionSource = taskCompletionSource }; ShowDialog(option); var dialogResult = await taskCompletionSource.Task; return(new DialogResult <TResult>() { Result = (TResult)dialogResult.Result }); }
private async Task OnPauseAsync(DialogOption option) { await option.OnShow(); }
public void ShowDialog(DialogOption option) { Dialogs.Add(option); }