@@ -154,7 +154,6 @@ public partial class TreeViewRow<TItem>
154154
155155 private string ? ContentClassString => CssBuilder . Default ( "tree-content" )
156156 . AddClass ( "active" , IsActive )
157- . AddClass ( "tree-drop-pass" , PreviewDrop )
158157 . Build ( ) ;
159158
160159 private string ? CaretClassString => CssBuilder . Default ( "node-icon" )
@@ -181,11 +180,15 @@ public partial class TreeViewRow<TItem>
181180 . AddClass ( Item . ExpandIcon , Item . IsExpand && ! string . IsNullOrEmpty ( Item . ExpandIcon ) )
182181 . Build ( ) ;
183182
183+ private string ? DraggableString => AllowDrag ? "true" : null ;
184+
184185 private bool IsPreventDefault => ContextMenuZone != null ;
186+
185187 private bool _touchStart = false ;
186188 private bool _isBusy = false ;
187189 private bool _showToolbar = false ;
188190
191+
189192 /// <summary>
190193 /// <inheritdoc/>
191194 /// </summary>
@@ -295,131 +298,4 @@ private async Task ClickRow()
295298 await OnClick ( Item ) ;
296299 }
297300 }
298-
299- /// <summary>
300- /// Gets or sets whether to preview the drop target when dragging. Default is false.
301- /// </summary>
302- [ Parameter ]
303- public bool PreviewDrop { get ; set ; }
304-
305- private bool _draggingItem ;
306- private bool _expandAfterDrop ;
307-
308- /// <summary>
309- /// Triggered when the item is dragged
310- /// </summary>
311- [ Parameter ]
312- public Action < TreeViewItem < TItem > > ? OnItemDragStart { get ; set ; }
313-
314- /// <summary>
315- /// Triggered when the item drag ends
316- /// </summary>
317- [ Parameter ]
318- public Action ? OnItemDragEnd { get ; set ; }
319-
320- /// <summary>
321- /// Triggered when an item is dropped
322- /// </summary>
323- [ Parameter ]
324- [ Required ]
325- public Func < TreeDropEventArgs < TItem > , Task > OnItemDrop { get ; set ; } = null ! ;
326-
327- private async Task DragStart ( DragEventArgs e )
328- {
329- _draggingItem = true ;
330- if ( Item . IsExpand )
331- {
332- _expandAfterDrop = true ;
333- await ToggleNodeAsync ( ) ;
334- }
335- else
336- {
337- _expandAfterDrop = false ;
338- }
339- OnItemDragStart ? . Invoke ( Item ) ;
340- }
341-
342- private void DragEnd ( DragEventArgs e )
343- {
344- _draggingItem = false ;
345- _previewChildLast = false ;
346- _previewChildFirst = false ;
347- _previewBelow = false ;
348- OnItemDragEnd ? . Invoke ( ) ;
349- }
350-
351- private string ? DraggableString => AllowDrag ? "true" : null ;
352-
353- private bool _previewChildLast ;
354- private bool _previewChildFirst ;
355- private bool _previewBelow ;
356-
357- private void DragEnterChildInside ( DragEventArgs e )
358- {
359- _previewChildLast = true ;
360- }
361-
362- private void DragLeaveChildInside ( DragEventArgs e )
363- {
364- _previewChildLast = false ;
365- }
366-
367- private void DragEnterChildBelow ( DragEventArgs e )
368- {
369- if ( ( Item . HasChildren || Item . Items . Any ( ) ) && Item . IsExpand )
370- {
371- _previewChildFirst = true ;
372- _previewBelow = false ;
373- }
374- else
375- {
376- _previewChildFirst = false ;
377- _previewBelow = true ;
378- }
379- }
380-
381- private void DragLeaveChildBelow ( DragEventArgs e )
382- {
383- _previewChildFirst = false ;
384- _previewBelow = false ;
385- }
386-
387- private async Task DropChildInside ( DragEventArgs e )
388- {
389- _previewChildFirst = false ;
390- _previewChildLast = false ;
391- _previewBelow = false ;
392- // 拖放到内部,作为最后一个子节点
393- var args = new TreeDropEventArgs < TItem >
394- {
395- Target = Item ,
396- DropType = TreeDropType . AsLastChild ,
397- ExpandAfterDrop = _expandAfterDrop
398- } ;
399- var dropTask = OnItemDrop . Invoke ( args ) ;
400- await dropTask ;
401- }
402-
403- private async Task DropChildBelow ( DragEventArgs e )
404- {
405- _previewChildFirst = false ;
406- _previewChildLast = false ;
407- _previewBelow = false ;
408- var args = new TreeDropEventArgs < TItem >
409- {
410- Target = Item ,
411- ExpandAfterDrop = _expandAfterDrop ,
412- } ;
413- // 对象展开状态,则作为第一个子节点
414- if ( ( Item . HasChildren || Item . Items . Any ( ) ) && Item . IsExpand )
415- {
416- args . DropType = TreeDropType . AsFirstChild ;
417- }
418- else
419- {
420- args . DropType = TreeDropType . AsSiblingBelow ;
421- }
422- var dropTask = OnItemDrop . Invoke ( args ) ;
423- await dropTask ;
424- }
425301}
0 commit comments