Skip to content

Commit 0cd9ec8

Browse files
committed
Revert "feat:DraggableTree"
This reverts commit 8ae8825. # Conflicts: # src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs # src/BootstrapBlazor/Components/TreeView/TreeView.razor # src/BootstrapBlazor/Components/TreeView/TreeView.razor.cs
1 parent fee5f69 commit 0cd9ec8

File tree

8 files changed

+3
-448
lines changed

8 files changed

+3
-448
lines changed

src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@
2727
Introduction="@Localizer["TreeViewNormalIntro"]"
2828
Name="Normal">
2929
<section ignore>@((MarkupString)Localizer["TreeViewNormalDescription"].Value)</section>
30-
<TreeView Items="@NormalItems" ItemDraggable="true" OnTreeItemClick="@OnTreeItemClick" ShowToolbar="true"
31-
OnDrop="OnDrop"></TreeView>
30+
<TreeView Items="@NormalItems" OnTreeItemClick="@OnTreeItemClick" ShowToolbar="true"></TreeView>
3231
<ConsoleLogger @ref="Logger1" />
3332
</DemoBlock>
3433

src/BootstrapBlazor.Server/Components/Samples/TreeViews.razor.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,6 @@ private Task OnTreeItemClick(TreeViewItem<TreeFoo> item)
8383
return Task.CompletedTask;
8484
}
8585

86-
private static Task<bool> OnDrop(TreeDropEventArgs<TreeFoo> arg)
87-
{
88-
Logger1.Log("Move node from " + arg.Source?.Text + " to " + arg.Target.Text + " " + arg.DropType);
89-
return Task.FromResult(true);
90-
}
91-
9286
private Task OnTreeItemKeyboardClick(TreeViewItem<TreeFoo> item)
9387
{
9488
_selectedValue = item.Value.Text;

src/BootstrapBlazor/Components/TreeView/TreeView.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,14 +68,13 @@ else
6868
RenderFragment RenderRow(TreeViewItem<TItem> item) =>
6969
@<TreeViewRow @key="item" IsActive="GetActive(item)" Index="GetIndex(item)" Item="item"
7070
NodeIcon="@NodeIcon" ExpandNodeIcon="@ExpandNodeIcon" LoadingIcon="@LoadingIcon"
71-
MaxSelectedCount="MaxSelectedCount" Draggable="ItemDraggable" PreviewDrop="_previewDrop"
71+
MaxSelectedCount="MaxSelectedCount"
7272
ToolbarEditTitle="@ToolbarEditTitle" ToolbarEditLabelText="@ToolbarEditLabelText"
7373
IsDisabled="IsDisabled" CanExpandWhenDisabled="CanExpandWhenDisabled"
7474
ShowCheckbox="ShowCheckbox" ShowIcon="ShowIcon"
7575
ShowToolbar="ShowToolbar" ShowToolbarCallback="ShowToolbarCallback"
7676
OnToggleNodeAsync="OnToggleNodeAsync" OnClick="OnClick"
7777
OnBeforeStateChangedCallback="OnBeforeStateChangedCallback"
7878
OnCheckStateChanged="OnCheckStateChanged"
79-
OnItemDragStart="OnItemDragStart" OnItemDragEnd="OnItemDragEnd" OnItemDrop="OnItemDrop"
8079
OnUpdateCallbackAsync="OnUpdateCallbackAsync" ToolbarTemplate="ToolbarTemplate"></TreeViewRow>;
8180
}

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

Lines changed: 0 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -727,114 +727,6 @@ public void ClearCheckedItems()
727727
StateHasChanged();
728728
}
729729

730-
/// <summary>
731-
/// Gets or sets whether to enable item dragging. Default is false.
732-
/// </summary>
733-
[Parameter]
734-
public bool ItemDraggable { get; set; }
735-
736-
/// <summary>
737-
/// Gets or sets the callback method to be invoked when an item is dropped.
738-
/// Drop action can be cancelled by returning false.
739-
/// </summary>
740-
[Parameter]
741-
public Func<TreeDropEventArgs<TItem>, Task<bool>> OnDrop { get; set; } = _ => Task.FromResult(true);
742-
743-
private bool _previewDrop;
744-
private TreeViewItem<TItem>? _draggingItem;
745-
746-
private void OnItemDragStart(TreeViewItem<TItem> treeViewItem)
747-
{
748-
_previewDrop = true;
749-
_draggingItem = treeViewItem;
750-
StateHasChanged();
751-
}
752-
753-
private void OnItemDragEnd()
754-
{
755-
_previewDrop = false;
756-
_draggingItem = null;
757-
StateHasChanged();
758-
}
759-
760-
private async Task OnItemDrop(TreeDropEventArgs<TItem> e)
761-
{
762-
if (_draggingItem is not null)
763-
{
764-
e.Source = _draggingItem;
765-
var allowChangeSource = await OnDrop.Invoke(e);
766-
if (!allowChangeSource)
767-
{
768-
return;
769-
}
770-
771-
// 如果允许改变源节点则更新拖拽项的父对象以及排序
772-
_draggingItem.Parent?.Items.Remove(_draggingItem);
773-
_draggingItem.IsExpand = e.ExpandAfterDrop;
774-
775-
switch (e.DropType)
776-
{
777-
case TreeDropType.AsFirstChild:
778-
// 插入到目标的第一个子节点
779-
e.Target.Items.Insert(0, _draggingItem);
780-
_draggingItem.Parent = e.Target;
781-
break;
782-
case TreeDropType.AsLastChild:
783-
// 插入到目标的最后一个子节点
784-
e.Target.Items.Add(_draggingItem);
785-
_draggingItem.Parent = e.Target;
786-
break;
787-
case TreeDropType.AsSiblingBelow:
788-
// 作为目标的下一个兄弟节点
789-
if (e.Target.Parent is not null)
790-
{
791-
var index = e.Target.Parent.Items.IndexOf(e.Target);
792-
if (index >= 0 && index < e.Target.Parent.Items.Count - 1)
793-
{
794-
e.Target.Parent.Items.Insert(index + 1, _draggingItem);
795-
}
796-
else
797-
{
798-
e.Target.Parent.Items.Add(_draggingItem);
799-
}
800-
801-
_draggingItem.Parent = e.Target.Parent;
802-
}
803-
// 如果目标没有父节点,则作为顶层节点处理
804-
else
805-
{
806-
// 目标节点的Index
807-
var index = Items.IndexOf(e.Target);
808-
if (index >= 0 && index < Items.Count - 1)
809-
{
810-
Items.Insert(index + 1, _draggingItem);
811-
}
812-
else
813-
{
814-
Items.Add(_draggingItem);
815-
}
816-
817-
_draggingItem.Parent = null;
818-
}
819-
820-
break;
821-
default:
822-
throw new ArgumentOutOfRangeException();
823-
}
824-
825-
826-
_draggingItem = null;
827-
_previewDrop = false;
828-
_rows = GetTreeItems().ToFlat();
829-
830-
StateHasChanged();
831-
}
832-
else
833-
{
834-
throw new InvalidOperationException("拖拽的项为空");
835-
}
836-
}
837-
838730
/// <summary>
839731
/// Gets all selected node collections
840732
/// </summary>
@@ -871,30 +763,3 @@ private List<TreeViewItem<TItem>> Rows
871763

872764
private int GetIndex(TreeViewItem<TItem> item) => Rows.IndexOf(item);
873765
}
874-
875-
/// <summary>
876-
/// Represents the event arguments for the TreeView drop event.
877-
/// </summary>
878-
public class TreeDropEventArgs<TItem>
879-
{
880-
/// <summary>
881-
/// Gets or sets the source item that is being dropped.
882-
/// </summary>
883-
public TreeViewItem<TItem>? Source { get; set; }
884-
885-
/// <summary>
886-
/// Gets or sets the target item.
887-
/// </summary>
888-
public TreeViewItem<TItem> Target { get; set; } = null!;
889-
890-
/// <summary>
891-
/// Gets or sets the drop type.
892-
/// </summary>
893-
public TreeDropType DropType { get; set; }
894-
895-
/// <summary>
896-
/// Gets or sets whether to expand the source item's children when dropping.
897-
/// </summary>
898-
public bool ExpandAfterDrop { get; set; }
899-
900-
}

src/BootstrapBlazor/Components/TreeView/TreeView.razor.scss

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
--bb-tree-disabled-opacity: #{$bb-tree-disabled-opacity};
1515
--bb-tree-search-height: #{$bb-tree-search-height};
1616
--bb-tree-item-bg-radius: var(--bs-border-radius);
17-
--bb-tree-drop-preview-color: #{$bb-primary-color};
1817
position: relative;
1918
height: 100%;
2019
display: flex;
@@ -39,7 +38,6 @@
3938
flex-wrap: nowrap;
4039
align-items: center;
4140
cursor: pointer;
42-
user-select: none;
4341

4442
.tree-content-toolbar {
4543
display: none;
@@ -57,30 +55,6 @@
5755
flex-shrink: 0;
5856
align-items: center;
5957
border-radius: var(--bs-border-radius);
60-
position: relative;
61-
62-
.tree-drop-zone {
63-
position: absolute;
64-
top: 4px;
65-
left: 20px;
66-
right: 0;
67-
bottom: -12px;
68-
pointer-events: all;
69-
background-color: transparent;
70-
display: grid;
71-
grid-template-rows: 1fr 16px;
72-
73-
.tree-drop-child-inside {
74-
grid-row: 1 / 2;
75-
//background-color: rgba(236, 209, 62, 0.5);
76-
}
77-
78-
.tree-drop-child-below {
79-
grid-row: 2 / 3;
80-
//background-color: rgba(94, 236, 62, 0.5);
81-
}
82-
83-
}
8458
}
8559

8660
.node-icon {
@@ -147,7 +121,6 @@
147121
display: inline-flex;
148122
align-items: center;
149123
padding: var(--bb-tree-node-padding);
150-
position: relative;
151124
flex: 1;
152125

153126
.tree-icon {
@@ -160,69 +133,6 @@
160133
white-space: nowrap;
161134
}
162135

163-
.tree-preview-child-last {
164-
position: absolute;
165-
top: -2px;
166-
left: -2px;
167-
right: -2px;
168-
bottom: -2px;
169-
border: 2px solid var(--bb-tree-drop-preview-color);
170-
border-radius: 6px;
171-
pointer-events: none;
172-
z-index: 1;
173-
background: transparent;
174-
}
175-
176-
.tree-preview-child-first {
177-
position: absolute;
178-
bottom: -4px;
179-
height: 8px;
180-
left: 20px;
181-
right: 0;
182-
display: flex;
183-
flex-direction: row;
184-
align-items: center;
185-
pointer-events: none;
186-
187-
.tree-preview-circle {
188-
width: 8px;
189-
height: 8px;
190-
border-radius: 50%;
191-
background-color: var(--bb-tree-drop-preview-color);
192-
}
193-
194-
.tree-preview-line {
195-
flex: 1;
196-
height: 2px;
197-
background-color: var(--bb-tree-drop-preview-color);
198-
}
199-
}
200-
201-
.tree-preview-below {
202-
position: absolute;
203-
bottom: -4px;
204-
height: 8px;
205-
left: 0;
206-
right: 0;
207-
display: flex;
208-
flex-direction: row;
209-
align-items: center;
210-
pointer-events: none;
211-
212-
.tree-preview-circle {
213-
width: 8px;
214-
height: 8px;
215-
border-radius: 50%;
216-
background-color: var(--bb-tree-drop-preview-color);
217-
}
218-
219-
.tree-preview-line {
220-
flex: 1;
221-
height: 2px;
222-
background-color: var(--bb-tree-drop-preview-color);
223-
}
224-
}
225-
226136
&.disabled {
227137
opacity: var(--bb-tree-disabled-opacity);
228138
}
@@ -239,10 +149,6 @@
239149
display: none;
240150
}
241151
}
242-
243-
.tree-drop-pass {
244-
pointer-events: none;
245-
}
246152
}
247153

248154
.tree-view-edit-form {

src/BootstrapBlazor/Components/TreeView/TreeViewRow.razor

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,6 @@
99
<div class="tree-content-body">
1010
<DynamicElement TagName="i" class="@CaretClassString" TriggerClick="CanTriggerClickNode" OnClick="ToggleNodeAsync"></DynamicElement>
1111
<i class="@NodeLoadingClassString"></i>
12-
13-
@if (Draggable && !_draggingItem)
14-
{
15-
<div class="tree-drop-zone">
16-
<div class="tree-drop-child-inside"
17-
ondragover="event.preventDefault();"
18-
@ondragenter="DragEnterChildInside"
19-
@ondragleave="DragLeaveChildInside"
20-
@ondrop="DropChildInside"></div>
21-
<div class="tree-drop-child-below"
22-
ondragover="event.preventDefault();"
23-
@ondragenter="DragEnterChildBelow"
24-
@ondragleave="DragLeaveChildBelow"
25-
@ondrop="DropChildBelow"></div>
26-
</div>
27-
}
28-
2912
@if (ShowCheckbox)
3013
{
3114
<Checkbox Value="@Item" IsDisabled="ItemDisabledState"
@@ -34,9 +17,7 @@
3417
OnBeforeStateChanged="@(MaxSelectedCount > 0 ? state => TriggerBeforeStateChangedCallback(state) : null)">
3518
</Checkbox>
3619
}
37-
<DynamicElement class="@NodeClassString" TriggerClick="!ItemDisabledState" OnClick="ClickRow"
38-
draggable="@(Draggable ? "true" : "false")"
39-
@ondragstart="DragStart" @ondragend="DragEnd">
20+
<DynamicElement class="@NodeClassString" TriggerClick="!ItemDisabledState" OnClick="ClickRow">
4021
@if (ShowIcon)
4122
{
4223
<i class="@IconClassString"></i>
@@ -61,25 +42,6 @@
6142
OnUpdateCallbackAsync="OnUpdateCallbackAsync"></TreeViewToolbarEditButton>
6243
}
6344
}
64-
65-
@if (_previewChildLast)
66-
{
67-
<div class="tree-preview-child-last"></div>
68-
}
69-
@if (_previewChildFirst)
70-
{
71-
<div class="tree-preview-child-first">
72-
<div class="tree-preview-circle"></div>
73-
<div class="tree-preview-line"></div>
74-
</div>
75-
}
76-
@if (_previewBelow)
77-
{
78-
<div class="tree-preview-below">
79-
<div class="tree-preview-circle"></div>
80-
<div class="tree-preview-line"></div>
81-
</div>
82-
}
8345
</DynamicElement>
8446
</div>
8547
</div>

0 commit comments

Comments
 (0)