@@ -5505,6 +5505,106 @@ public async Task OnSaveAsync_Ok()
5505
5505
Assert . True ( afterModify ) ;
5506
5506
}
5507
5507
5508
+ [ Fact ]
5509
+ public async Task OnAfterCancelSaveAsync_Popup ( )
5510
+ {
5511
+ var localizer = Context . Services . GetRequiredService < IStringLocalizer < Foo > > ( ) ;
5512
+ var items = Foo . GenerateFoo ( localizer , 2 ) ;
5513
+ var afterCancelSave = false ;
5514
+ var cut = Context . RenderComponent < BootstrapBlazorRoot > ( pb =>
5515
+ {
5516
+ pb . AddChildContent < Table < Foo > > ( pb =>
5517
+ {
5518
+ pb . Add ( a => a . RenderMode , TableRenderMode . Table ) ;
5519
+ pb . Add ( a => a . Items , items ) ;
5520
+ pb . Add ( a => a . IsMultipleSelect , true ) ;
5521
+ pb . Add ( a => a . ShowToolbar , true ) ;
5522
+ pb . Add ( a => a . ShowExtendButtons , true ) ;
5523
+ pb . Add ( a => a . EditMode , EditMode . Popup ) ;
5524
+ pb . Add ( a => a . OnAfterCancelSaveAsync , ( ) =>
5525
+ {
5526
+ afterCancelSave = true ;
5527
+ return Task . CompletedTask ;
5528
+ } ) ;
5529
+ pb . Add ( a => a . TableColumns , foo => builder =>
5530
+ {
5531
+ builder . OpenComponent < TableColumn < Foo , string > > ( 0 ) ;
5532
+ builder . AddAttribute ( 1 , "Field" , "Name" ) ;
5533
+ builder . AddAttribute ( 2 , "FieldExpression" , Utility . GenerateValueExpression ( foo , "Name" , typeof ( string ) ) ) ;
5534
+ builder . CloseComponent ( ) ;
5535
+ } ) ;
5536
+ } ) ;
5537
+ } ) ;
5538
+
5539
+ // test edit button
5540
+ var button = cut . FindAll ( "tbody tr button" ) ;
5541
+ await cut . InvokeAsync ( ( ) => button [ 0 ] . Click ( ) ) ;
5542
+
5543
+ // 保存按钮
5544
+ var saveButton = cut . Find ( ".bb-editor-footer .btn-primary" ) ;
5545
+ await cut . InvokeAsync ( ( ) => saveButton . Click ( ) ) ;
5546
+ Assert . False ( afterCancelSave ) ;
5547
+
5548
+ var modal = cut . FindComponent < Modal > ( ) ;
5549
+ await cut . InvokeAsync ( modal . Instance . CloseCallback ) ;
5550
+
5551
+ await cut . InvokeAsync ( ( ) => button [ 0 ] . Click ( ) ) ;
5552
+ var cancelButton = cut . Find ( ".bb-editor-footer .btn" ) ;
5553
+
5554
+ // 取消按钮
5555
+ await cut . InvokeAsync ( ( ) => cancelButton . Click ( ) ) ;
5556
+ Assert . True ( afterCancelSave ) ;
5557
+ }
5558
+
5559
+ [ Fact ]
5560
+ public async Task OnAfterCancelSaveAsync_Drawer ( )
5561
+ {
5562
+ var localizer = Context . Services . GetRequiredService < IStringLocalizer < Foo > > ( ) ;
5563
+ var items = Foo . GenerateFoo ( localizer , 2 ) ;
5564
+ var afterCancelSave = false ;
5565
+ var cut = Context . RenderComponent < BootstrapBlazorRoot > ( pb =>
5566
+ {
5567
+ pb . AddChildContent < Table < Foo > > ( pb =>
5568
+ {
5569
+ pb . Add ( a => a . RenderMode , TableRenderMode . Table ) ;
5570
+ pb . Add ( a => a . Items , items ) ;
5571
+ pb . Add ( a => a . IsMultipleSelect , true ) ;
5572
+ pb . Add ( a => a . ShowToolbar , true ) ;
5573
+ pb . Add ( a => a . ShowExtendButtons , true ) ;
5574
+ pb . Add ( a => a . EditMode , EditMode . Drawer ) ;
5575
+ pb . Add ( a => a . OnAfterCancelSaveAsync , ( ) =>
5576
+ {
5577
+ afterCancelSave = true ;
5578
+ return Task . CompletedTask ;
5579
+ } ) ;
5580
+ pb . Add ( a => a . TableColumns , foo => builder =>
5581
+ {
5582
+ builder . OpenComponent < TableColumn < Foo , string > > ( 0 ) ;
5583
+ builder . AddAttribute ( 1 , "Field" , "Name" ) ;
5584
+ builder . AddAttribute ( 2 , "FieldExpression" , Utility . GenerateValueExpression ( foo , "Name" , typeof ( string ) ) ) ;
5585
+ builder . CloseComponent ( ) ;
5586
+ } ) ;
5587
+ } ) ;
5588
+ } ) ;
5589
+
5590
+ // test edit button
5591
+ var button = cut . FindAll ( "tbody tr button" ) ;
5592
+ await cut . InvokeAsync ( ( ) => button [ 0 ] . Click ( ) ) ;
5593
+
5594
+ // 保存按钮
5595
+ var saveButton = cut . Find ( ".bb-editor-footer .btn-primary" ) ;
5596
+ await cut . InvokeAsync ( ( ) => saveButton . Click ( ) ) ;
5597
+ Assert . False ( afterCancelSave ) ;
5598
+
5599
+ // 取消按钮
5600
+ button = cut . FindAll ( "tbody tr button" ) ;
5601
+ await cut . InvokeAsync ( ( ) => button [ 0 ] . Click ( ) ) ;
5602
+
5603
+ var cancelButton = cut . Find ( ".bb-editor-footer .btn" ) ;
5604
+ await cut . InvokeAsync ( ( ) => cancelButton . Click ( ) ) ;
5605
+ Assert . True ( afterCancelSave ) ;
5606
+ }
5607
+
5508
5608
[ Theory ]
5509
5609
[ InlineData ( EditMode . EditForm ) ]
5510
5610
[ InlineData ( EditMode . InCell ) ]
0 commit comments