Skip to content

Commit ee7e25e

Browse files
committed
Revert "Refactor TreeView drag-and-drop and improve tests"
This reverts commit 81235e9. # Conflicts: # src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs
1 parent b18d558 commit ee7e25e

File tree

3 files changed

+16
-38
lines changed

3 files changed

+16
-38
lines changed

src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,8 +818,11 @@ private async Task OnItemDrop(TreeDropEventArgs<TItem> e)
818818
}
819819

820820
break;
821+
default:
822+
throw new ArgumentOutOfRangeException();
821823
}
822824

825+
823826
_draggingItem = null;
824827
_previewDrop = false;
825828
_rows = GetTreeItems().ToFlat();
@@ -893,4 +896,5 @@ public class TreeDropEventArgs<TItem>
893896
/// Gets or sets whether to expand the source item's children when dropping.
894897
/// </summary>
895898
public bool ExpandAfterDrop { get; set; }
899+
896900
}

src/BootstrapBlazor/Components/TreeView/TreeViewRow.razor.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,8 @@ private async Task ClickRow()
326326
/// <summary>
327327
/// Triggered when an item is dropped
328328
/// </summary>
329-
[Parameter][Required]
330-
public Func<TreeDropEventArgs<TItem>, Task> OnItemDrop { get; set; } = null!;
329+
[Parameter]
330+
public Func<TreeDropEventArgs<TItem>, Task>? OnItemDrop { get; set; }
331331

332332
private async Task DragStart(DragEventArgs e)
333333
{
@@ -336,6 +336,7 @@ private async Task DragStart(DragEventArgs e)
336336
{
337337
_expandAfterDrop = true;
338338
await ToggleNodeAsync();
339+
StateHasChanged();
339340
}else
340341
{
341342
_expandAfterDrop = false;
@@ -388,6 +389,10 @@ private void DragLeaveChildBelow(DragEventArgs e)
388389

389390
private async Task DropChildInside(DragEventArgs e)
390391
{
392+
if (OnItemDrop is null)
393+
{
394+
return;
395+
}
391396
_previewChildFirst = false;
392397
_previewChildLast = false;
393398
_previewBelow = false;
@@ -404,6 +409,10 @@ private async Task DropChildInside(DragEventArgs e)
404409

405410
private async Task DropChildBelow(DragEventArgs e)
406411
{
412+
if (OnItemDrop is null)
413+
{
414+
return;
415+
}
407416
_previewChildFirst = false;
408417
_previewChildLast = false;
409418
_previewBelow = false;

test/UnitTest/Components/TreeViewTest.cs

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,30 +1304,6 @@ public async Task Draggable_Basic_MoveAsSiblingBelow()
13041304
Assert.Equal("Child1", parent.Items[1].Text);
13051305
}
13061306

1307-
[Fact]
1308-
public async Task Draggable_NothingDrop()
1309-
{
1310-
var items = new List<TreeFoo>
1311-
{
1312-
new() { Text = "Root1", Id = "1" },
1313-
new() { Text = "Child1", Id = "2", ParentId = "1" }
1314-
};
1315-
1316-
var nodes = TreeFoo.CascadingTree(items);
1317-
nodes[0].IsExpand = true;
1318-
var cut = Context.RenderComponent<TreeView<TreeFoo>>(pb =>
1319-
{
1320-
pb.Add(a => a.Items, nodes);
1321-
pb.Add(a => a.ItemDraggable, true);
1322-
});
1323-
1324-
var rows = cut.FindComponents<TreeViewRow<TreeFoo>>();
1325-
var dropTarget = rows[1]; // Child1
1326-
var targetDropZone = dropTarget.Find(".tree-drop-child-below");
1327-
1328-
await Assert.ThrowsAsync<InvalidOperationException>(() => targetDropZone.TriggerEventAsync("ondrop", new DragEventArgs()));
1329-
}
1330-
13311307
[Fact]
13321308
public async Task Draggable_OnDrop_Cancel()
13331309
{
@@ -1385,6 +1361,7 @@ public async Task Draggable_DragClassState()
13851361
});
13861362

13871363
var row = cut.FindComponent<TreeViewRow<TreeFoo>>();
1364+
var dragEvent = new DragEventArgs();
13881365

13891366
// 获取可拖拽的 DOM 元素
13901367
var dragSourceElement = row.Find(".tree-node");
@@ -1396,18 +1373,6 @@ public async Task Draggable_DragClassState()
13961373
// 触发拖拽结束
13971374
await dragSourceElement.TriggerEventAsync("ondragend", new DragEventArgs());
13981375
Assert.DoesNotContain("tree-drop-pass", row.Markup);
1399-
1400-
var dropBelow = cut.Find(".tree-drop-child-below");
1401-
await dropBelow.TriggerEventAsync("ondragenter", new DragEventArgs());
1402-
Assert.Contains("tree-preview-below", cut.Markup); // 检查是否有拖拽进入的样式
1403-
await dropBelow.TriggerEventAsync("ondragleave", new DragEventArgs());
1404-
Assert.DoesNotContain("tree-preview-below", cut.Markup); // 检查是否移除拖拽进入的样式
1405-
1406-
var dropInside = cut.Find(".tree-drop-child-inside");
1407-
await dropInside.TriggerEventAsync("ondragenter", new DragEventArgs());
1408-
Assert.Contains("tree-preview-child-last", cut.Markup); // 检查是否有拖拽进入的样式
1409-
await dropInside.TriggerEventAsync("ondragleave", new DragEventArgs());
1410-
Assert.DoesNotContain("tree-preview-child-last", cut.Markup); // 检查是否移除拖拽进入的样式
14111376
}
14121377

14131378
class MockTree<TItem> : TreeView<TItem> where TItem : class

0 commit comments

Comments
 (0)