@@ -1095,42 +1095,13 @@ export default function () {
10951095 }
10961096 }
10971097 } ) ,
1098- ( ) => ( {
1099- apply : [ 'FormElements' ] ,
1100- props : {
1101- draggingElement : {
1102- required : false ,
1103- type : [ null , String , Boolean ] ,
1104- } ,
1105- draggingPage : {
1106- required : false ,
1107- type : [ null , String , Boolean ] ,
1108- } ,
1109- draggedSchema : {
1110- required : false ,
1111- type : Object ,
1112- } ,
1113- } ,
1114- } ) ,
11151098 ( ) => ( {
11161099 apply : [ 'FormTabs' , 'FormSteps' ] ,
11171100 emits : [
11181101 'rename-page' , 'add-page' , 'remove-pages' , 'remove-page' , 'move-page' , 'move-to-page' , 'add-element' ,
11191102 'select-page' , 'start-moving' ,
11201103 ] ,
11211104 props : {
1122- draggingElement : {
1123- required : false ,
1124- type : [ null , String , Boolean ] ,
1125- } ,
1126- draggingPage : {
1127- required : false ,
1128- type : [ null , String , Boolean ] ,
1129- } ,
1130- draggedSchema : {
1131- required : false ,
1132- type : Object ,
1133- } ,
11341105 moving : {
11351106 required : false ,
11361107 type : [ Boolean , Object ] ,
@@ -1301,18 +1272,6 @@ export default function () {
13011272 type : Object ,
13021273 required : false ,
13031274 } ,
1304- draggingElement : {
1305- required : false ,
1306- type : [ null , String , Boolean ] ,
1307- } ,
1308- draggingPage : {
1309- required : false ,
1310- type : [ null , String , Boolean ] ,
1311- } ,
1312- draggedSchema : {
1313- required : false ,
1314- type : Object ,
1315- } ,
13161275 moving : {
13171276 required : false ,
13181277 type : [ Boolean , Object ] ,
@@ -1333,7 +1292,8 @@ export default function () {
13331292 return component
13341293 }
13351294
1336- const { name, draggingPage, moving, pointer } = toRefs ( props )
1295+ const { form$ } = component
1296+ const { name, moving, pointer } = toRefs ( props )
13371297
13381298 const subscribeOnce = inject ( 'subscribeOnce' )
13391299
@@ -1352,7 +1312,7 @@ export default function () {
13521312 // ============== COMPUTED ==============
13531313
13541314 const beingDragged = computed ( ( ) => {
1355- return draggingPage . value === name . value
1315+ return form$ . value . draggingPage === name . value
13561316 } )
13571317
13581318 const selectedPage = computed ( ( ) => {
@@ -1578,7 +1538,9 @@ export default function () {
15781538 } )
15791539 } )
15801540
1581- let to = component . form$ . value . tabs$ . current$ . elements ?. pop ( )
1541+ let to = component . form$ . value . tabs$
1542+ ? component . form$ . value . tabs$ . current$ . elements ?. pop ( )
1543+ : component . form$ . value . steps$ . current$ . elements ?. pop ( )
15821544
15831545 // First move out the element from the container
15841546 component . form$ . value . el$ ( path ) . $emit ( 'move-element' , path , 'after' , to )
@@ -1880,7 +1842,6 @@ export default function () {
18801842 let startingMousePosition = 0
18811843
18821844 const {
1883- draggingElement,
18841845 widths,
18851846 cols,
18861847 rows,
@@ -2364,7 +2325,6 @@ export default function () {
23642325 }
23652326 }
23662327 } ) ,
2367-
23682328 ( ) => ( {
23692329 apply : [ 'FormElements' , 'Vueform' , 'GroupElement' , 'ObjectElement' , 'ListElement' , 'GridElement' ] ,
23702330 emits : [
@@ -2453,18 +2413,6 @@ export default function () {
24532413 type : Boolean ,
24542414 default : true ,
24552415 } ,
2456- draggingElement : {
2457- required : false ,
2458- type : [ null , String , Boolean ] ,
2459- } ,
2460- draggingPage : {
2461- required : false ,
2462- type : [ null , String , Boolean ] ,
2463- } ,
2464- draggedSchema : {
2465- required : false ,
2466- type : Object ,
2467- } ,
24682416 moving : {
24692417 required : false ,
24702418 type : [ Boolean , Object ] ,
@@ -2481,7 +2429,8 @@ export default function () {
24812429 return component
24822430 }
24832431
2484- const { droppable, draggingElement, moving, pointer } = toRefs ( props )
2432+ const { form$ } = component
2433+ const { droppable, moving, pointer } = toRefs ( props )
24852434
24862435 // ================ DATA ================
24872436
@@ -2490,7 +2439,7 @@ export default function () {
24902439 // ============== COMPUTED ==============
24912440
24922441 const beingDragged = computed ( ( ) => {
2493- return draggingElement . value === component . path . value
2442+ return form$ . value . draggingElement === component . path . value
24942443 } )
24952444
24962445 const Droppable = computed ( ( ) => {
@@ -2522,20 +2471,6 @@ export default function () {
25222471 emits : [
25232472 'add-element' , 'select-element' , 'clone-element' , 'remove-element' , 'resize-element' , 'announce' ,
25242473 ] ,
2525- props : {
2526- draggingElement : {
2527- required : false ,
2528- type : [ null , String , Boolean ] ,
2529- } ,
2530- draggingPage : {
2531- required : false ,
2532- type : [ null , String , Boolean ] ,
2533- } ,
2534- draggedSchema : {
2535- required : false ,
2536- type : Object ,
2537- } ,
2538- } ,
25392474 setup ( props , context , component ) {
25402475 if ( ! component . form$ . value . builder ) {
25412476 return component
@@ -2549,6 +2484,8 @@ export default function () {
25492484
25502485 const hovered = ref ( false )
25512486 const focused = ref ( false )
2487+ const beingDraggedOver = ref ( false )
2488+ const DropArea = ref ( )
25522489
25532490 const startingWidth = ref ( 0 )
25542491 const elementWidth = ref ( null )
@@ -2672,19 +2609,19 @@ export default function () {
26722609 const canDragInside = computed ( ( ) => {
26732610 if ( [ 'object' , 'group' ] . indexOf ( component . el$ . value . type ) !== - 1 ) {
26742611 return ! Object . keys ( component . el$ . value . children ) . length &&
2675- ( ! component . el $. value . draggedSchema || [ 'tabs' , 'steps' ] . indexOf ( component . el $. value . draggedSchema . type ) === - 1 )
2612+ ( ! component . form $. value . draggedSchema || [ 'tabs' , 'steps' ] . indexOf ( component . form $. value . draggedSchema . type ) === - 1 )
26762613 }
26772614
26782615 else if ( [ 'list' ] . indexOf ( component . el$ . value . type ) !== - 1 ) {
26792616 return ! component . el$ . value . hasPrototype &&
2680- ( ! component . el $. value . draggedSchema || [ 'list' , 'tabs' , 'steps' ] . indexOf ( component . el $. value . draggedSchema . type ) === - 1 )
2617+ ( ! component . form $. value . draggedSchema || [ 'list' , 'tabs' , 'steps' ] . indexOf ( component . form $. value . draggedSchema . type ) === - 1 )
26812618 }
26822619
26832620 return false
26842621 } )
26852622
26862623 const canDragSibling = computed ( ( ) => {
2687- return ( ! component . el $. value . draggedSchema || [ 'tabs' , 'steps' ] . indexOf ( component . el $. value . draggedSchema . type ) === - 1 )
2624+ return ( ! component . form $. value . draggedSchema || [ 'tabs' , 'steps' ] . indexOf ( component . form $. value . draggedSchema . type ) === - 1 )
26882625 } )
26892626
26902627 const hideColumns = computed ( ( ) => {
@@ -3202,6 +3139,41 @@ export default function () {
32023139 focused . value = false
32033140 }
32043141
3142+ const handleContainerDragenter = ( e ) => {
3143+ beingDraggedOver . value = true
3144+ }
3145+
3146+ const handleContainerDragleave = ( e ) => {
3147+ if ( DropArea . value . contains ( e . target ) ) return
3148+
3149+ beingDraggedOver . value = false
3150+ }
3151+
3152+ const handleContainerDrop = ( e ) => {
3153+ beingDraggedOver . value = false
3154+ }
3155+
3156+ const handleContainerMouseover = ( e ) => {
3157+ hovered . value = true
3158+ }
3159+
3160+ const handleContainerMouseout = ( e ) => {
3161+ if ( e . relatedTarget ?. closest ( '.vfb-preview-element-container' ) ?. getAttribute ( 'data-path' ) === DropArea . value ?. getAttribute ( 'data-path' ) ) {
3162+ return
3163+ }
3164+
3165+ if ( [
3166+ 'vfb-icon' ,
3167+ 'vfb-preview-element-resizer' ,
3168+ 'vfb-preview-element-remove' ,
3169+ 'vfb-preview-element-clone' ,
3170+ 'vfb-preview-element-name-tag' ,
3171+ 'vfb-preview-element-edit-cells' ,
3172+ ] . some ( c => e . relatedTarget ?. classList ?. contains ( c ) ) ) return
3173+
3174+ hovered . value = false
3175+ }
3176+
32053177 const decreaseColumns = ( shiftKey ) => {
32063178 let value = lastWidth . value - 1
32073179
@@ -3409,6 +3381,8 @@ export default function () {
34093381 highlighted,
34103382 hovered,
34113383 focused,
3384+ beingDraggedOver,
3385+ DropArea,
34123386 startingWidth,
34133387 elementWidth,
34143388 lastWidth,
@@ -3450,6 +3424,11 @@ export default function () {
34503424 handleResizeMultiDragMouseUp,
34513425 handleDrag,
34523426 handleEditCellsClick,
3427+ handleContainerDragenter,
3428+ handleContainerDragleave,
3429+ handleContainerDrop,
3430+ handleContainerMouseover,
3431+ handleContainerMouseout,
34533432 }
34543433 }
34553434 } )
0 commit comments