Beispiel #1
0
        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
            });
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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();
 }
Beispiel #5
0
 public void ShowDialog(DialogOption option)
 {
     Dialogs.Add(option);
 }