using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Components.Web; namespace AntDesign { public class DrawerRef : DrawerRef { public new Func OnClose { get; set; } internal DrawerRef(DrawerOptions config, DrawerService service) : base(config, service) { } /// /// 关闭抽屉 /// /// public async Task CloseAsync(TResult result) { await _service.CloseAsync(this); await OnClose.Invoke(result); } } public class DrawerRef { public DrawerOptions Config { get; set; } public Drawer Drawer { get; set; } protected DrawerService _service; public Func OnOpen { get; set; } public Func OnClose { get; set; } internal DrawerRef(DrawerOptions config) { Config = config; } internal DrawerRef(DrawerOptions config, DrawerService service) { Config = config; _service = service; } /// /// open a drawer /// /// public async Task OpenAsync() { await _service.OpenAsync(this); if (OnOpen != null) await OnOpen.Invoke(); } /// /// close the drawer without return value /// /// public async Task CloseAsync() { await _service.CloseAsync(this); if (OnClose != null) await OnClose.Invoke(new DrawerClosingEventArgs(false)); } internal async Task HandleOnCancel() { var args = new DrawerClosingEventArgs(false); if (OnClose != null) { await OnClose.Invoke(args); } if (!args.Cancel) await _service.CloseAsync(this); } } }