@@ -39,6 +39,7 @@ export default class extends Controller {
3939 this . wasDropped = true
4040 this . #decreaseCounter( this . sourceContainer )
4141 const sourceContainer = this . sourceContainer
42+ this . #insertDraggedItem( container , this . dragItem )
4243 await this . #submitDropRequest( this . dragItem , container )
4344 this . #reloadSourceFrame( sourceContainer ) ;
4445 }
@@ -47,10 +48,6 @@ export default class extends Controller {
4748 this . dragItem . classList . remove ( this . draggedItemClass )
4849 this . #clearContainerHoverClasses( )
4950
50- if ( this . wasDropped ) {
51- this . dragItem . remove ( )
52- }
53-
5451 this . sourceContainer = null
5552 this . dragItem = null
5653 this . wasDropped = false
@@ -68,19 +65,6 @@ export default class extends Controller {
6865 this . containerTargets . forEach ( container => container . classList . remove ( this . hoverContainerClass ) )
6966 }
7067
71- async #submitDropRequest( item , container ) {
72- const body = new FormData ( )
73- const id = item . dataset . id
74- const url = container . dataset . dragAndDropUrl . replaceAll ( "__id__" , id )
75-
76- return post ( url , { body, headers : { Accept : "text/vnd.turbo-stream.html" } } )
77- }
78-
79- #reloadSourceFrame( sourceContainer ) {
80- const frame = sourceContainer . querySelector ( "[data-drag-and-drop-refresh]" )
81- if ( frame ) frame . reload ( )
82- }
83-
8468 #decreaseCounter( sourceContainer ) {
8569 const counterElement = sourceContainer . querySelector ( "[data-drag-and-drop-counter]" )
8670 if ( counterElement ) {
@@ -94,4 +78,30 @@ export default class extends Controller {
9478 }
9579 }
9680 }
81+
82+ #insertDraggedItem( container , item ) {
83+ const itemContainer = container . querySelector ( "[data-drag-drop-item-container]" )
84+ const topItems = itemContainer . querySelectorAll ( "[data-drag-and-drop-top]" )
85+ const lastTopItem = topItems [ topItems . length - 1 ]
86+
87+ if ( lastTopItem ) {
88+ console . debug ( "INSERTING AFTER" , lastTopItem ) ;
89+ lastTopItem . after ( item )
90+ } else {
91+ itemContainer . prepend ( item )
92+ }
93+ }
94+
95+ async #submitDropRequest( item , container ) {
96+ const body = new FormData ( )
97+ const id = item . dataset . id
98+ const url = container . dataset . dragAndDropUrl . replaceAll ( "__id__" , id )
99+
100+ return post ( url , { body, headers : { Accept : "text/vnd.turbo-stream.html" } } )
101+ }
102+
103+ #reloadSourceFrame( sourceContainer ) {
104+ const frame = sourceContainer . querySelector ( "[data-drag-and-drop-refresh]" )
105+ if ( frame ) frame . reload ( )
106+ }
97107}
0 commit comments