private Task Show(SwalOption option)
    {
        IsAutoHide = option.IsAutoHide;
        Delay      = option.Delay;

        option.Dialog = ModalContainer;
        var parameters = option.ToAttributes();

        parameters.Add(nameof(ModalDialog.OnClose), new Func <Task>(async() =>
        {
            if (IsAutoHide && DelayToken != null)
            {
                DelayToken.Cancel();
                DelayToken = null;
            }
            DialogParameter = null;
            await ModalContainer.CloseOrPopDialog();
            StateHasChanged();
        }));

        parameters.Add(nameof(ModalDialog.BodyTemplate), BootstrapDynamicComponent.CreateComponent <SweetAlertBody>(SweetAlertBody.Parse(option)).Render());

        DialogParameter = parameters;
        IsShowDialog    = true;
        StateHasChanged();
        return(Task.CompletedTask);
    }
示例#2
0
        private async Task <string> PluginClick(string pluginItemName)
        {
            var ret = "";

            if (pluginItemName == "plugin1")
            {
                var op = new SwalOption()
                {
                    Title     = "点击plugin1按钮后弹窗",
                    Content   = "点击插件按钮后弹窗并确认后才进行下一步处理",
                    IsConfirm = true
                };
                if (await SwalService.ShowModal(op))
                {
                    ret = "<div class='text-danger'>从plugin1返回的数据</div>";
                }
            }
            if (pluginItemName == "plugin2")
            {
                var op = new SwalOption()
                {
                    Title     = "点击plugin2按钮后弹窗",
                    Content   = "点击插件按钮后弹窗并确认后才进行下一步处理",
                    IsConfirm = true
                };
                if (await SwalService.ShowModal(op))
                {
                    ret = "从plugin2返回的数据";
                }
            }
            return(ret);
        }
    /// <summary>
    /// 异步回调方法
    /// </summary>
    /// <param name="service"></param>
    /// <param name="option"></param>
    /// <param name="swal">指定弹窗组件 默认为 null 使用 <see cref="BootstrapBlazorRoot"/> 组件内置弹窗组件</param>
    /// <returns></returns>
    public static async Task <bool> ShowModal(this SwalService service, SwalOption option, SweetAlert?swal = null)
    {
        option.IsModalConfirm = true;
        await service.Show(option, swal);

        return(!option.IsModalConfirm || await option.ReturnTask.Task);
    }
    private async Task <string?> PluginClick(string pluginItemName)
    {
        var ret = "";

        if (pluginItemName == "plugin1")
        {
            var op = new SwalOption()
            {
                Title   = Localizer["SwalTitle"],
                Content = Localizer["SwalContent"]
            };
            if (await SwalService.ShowModal(op))
            {
                ret = Localizer["Ret1"];
            }
        }
        if (pluginItemName == "plugin2")
        {
            var op = new SwalOption()
            {
                Title   = Localizer["Swal2Title"],
                Content = Localizer["Swal2Content"]
            };
            if (await SwalService.ShowModal(op))
            {
                ret = Localizer["Ret2"];
            }
        }
        return(ret);
    }
    /// <summary>
    /// 下拉框选项点击时调用此方法
    /// </summary>
    private async Task OnItemClick(SelectedItem item)
    {
        var ret = true;

        if (OnBeforeSelectedItemChange != null)
        {
            ret = await OnBeforeSelectedItemChange(item);

            if (ret)
            {
                // 返回 True 弹窗提示
                var option = new SwalOption()
                {
                    Category = SwalCategory,
                    Title    = SwalTitle,
                    Content  = SwalContent
                };
                if (!string.IsNullOrEmpty(SwalFooter))
                {
                    option.ShowFooter     = true;
                    option.FooterTemplate = builder => builder.AddContent(0, SwalFooter);
                }
                ret = await SwalService.ShowModal(option);
            }
            else
            {
                // 返回 False 直接运行
                ret = true;
            }
        }
        if (ret)
        {
            await ItemChanged(item);
        }
    }
    private async Task ShowModal()
    {
        var op = new SwalOption()
        {
            Title   = "模态对话框示例",
            Content = "模态对话框内容,不同按钮返回不同值"
        };
        var ret = await SwalService.ShowModal(op);

        Trace?.Log($"模态弹窗返回值为:{ret}");
    }
 private async Task ShowFooterComponent()
 {
     var op = new SwalOption()
     {
         Category       = SwalCategory.Error,
         Title          = "Oops...",
         Content        = "Something went wrong!",
         ShowFooter     = true,
         FooterTemplate = BootstrapDynamicComponent.CreateComponent <SwalFooter>().Render()
     };
     await SwalService.Show(op);
 }
示例#8
0
        private Task ShowFooterComponent()
        {
            var op = new SwalOption()
            {
                Category       = SwalCategory.Error,
                Title          = "Oops...",
                Content        = "Something went wrong!",
                ShowFooter     = true,
                FooterTemplate = DynamicComponent.CreateComponent <SwalFooter>().Render()
            };

            SwalService.Show(op);
            return(Task.CompletedTask);
        }
 private async Task ShowAutoCloseSwal()
 {
     var op = new SwalOption()
     {
         Category       = SwalCategory.Error,
         Title          = "Oops...",
         Content        = "Something went wrong!",
         ShowFooter     = true,
         IsAutoHide     = true,
         Delay          = 4000,
         FooterTemplate = DynamicComponent.CreateComponent <SwalFooter>().Render()
     };
     await SwalService.Show(op);
 }
示例#10
0
 /// <summary>
 /// 将配置信息转化为参数集合
 /// </summary>
 /// <param name="option"></param>
 /// <returns></returns>
 internal static IDictionary <string, object?> Parse(SwalOption option) => new Dictionary <string, object?>()
 {
     [nameof(SweetAlertBody.Category)]       = option.Category,
     [nameof(SweetAlertBody.ShowClose)]      = option.ShowClose,
     [nameof(SweetAlertBody.IsConfirm)]      = option.IsModalConfirm,
     [nameof(SweetAlertBody.ShowFooter)]     = option.ShowFooter,
     [nameof(SweetAlertBody.OnClose)]        = new Action(async() => await option.Close(false)),
     [nameof(SweetAlertBody.OnConfirm)]      = new Action(async() => await option.Close(true)),
     [nameof(SweetAlertBody.Title)]          = option.Title,
     [nameof(SweetAlertBody.Content)]        = option.Content,
     [nameof(SweetAlertBody.BodyTemplate)]   = option.BodyTemplate,
     [nameof(SweetAlertBody.FooterTemplate)] = option.FooterTemplate,
     [nameof(SweetAlertBody.ButtonTemplate)] = option.ButtonTemplate
 };
 private async Task ShowComponent()
 {
     var op = new SwalOption()
     {
         BodyTemplate = new RenderFragment(builder =>
         {
             builder.OpenElement(0, "div");
             builder.AddAttribute(1, "class", "text-center");
             builder.OpenComponent <Counter>(2);
             builder.CloseComponent();
             builder.CloseElement();
         })
     };
     await SwalService.Show(op);
 }
示例#12
0
    public async Task ToggleFan(string tagName)
    {
        var open = DataService.IsOpen;
        var op   = new SwalOption()
        {
            Title    = open ? "关闭风扇" : "打开风扇",
            Content  = open ? "您确定要关闭风扇吗?" : "您确定要打开风扇吗?",
            Category = SwalCategory.Information
        };

        open = !open;
        var ret = await SwalService.ShowModal(op);

        if (ret)
        {
            await DataService.UpdateStatus(open);
        }
    }
    private async Task ShowButtons()
    {
        var op = new SwalOption()
        {
            Category  = SwalCategory.Success,
            Title     = "我是 Title",
            Content   = "我是 Content",
            ShowClose = false
        };

        op.ButtonTemplate = new RenderFragment(builder =>
        {
            builder.OpenComponent <Button>(0);
            builder.AddAttribute(1, nameof(Button.Text), "自定义关闭按钮");
            builder.AddAttribute(2, nameof(Button.OnClick), EventCallback.Factory.Create <MouseEventArgs>(this, async() => await op.Close()));
            builder.CloseComponent();
        });
        await SwalService.Show(op);
    }