@@ -524,15 +524,69 @@ export var MapMLLayer = L.Layer.extend({
524
524
opacity . value = this . _container . style . opacity || '1.0' ;
525
525
526
526
fieldset . setAttribute ( "aria-grabbed" , "false" ) ;
527
- fieldset . draggable = true ;
528
- fieldset . classList . add ( "leaflet-grab" ) ;
527
+ //fieldset.draggable = true;
529
528
530
529
fieldset . onmousedown = ( e ) => {
531
- e . target . closest ( "fieldset" ) . draggable = e . target . tagName . toLowerCase ( ) !== "input" ;
530
+ e . preventDefault ( ) ;
531
+ if ( e . target . tagName . toLowerCase ( ) === "input" ) return ;
532
+ let control = fieldset ,
533
+ controls = fieldset . parentNode ,
534
+ moving = false , yPos = e . clientY ;
535
+
536
+ document . body . onmousemove = ( moveEvent ) => {
537
+ moveEvent . preventDefault ( ) ;
538
+
539
+ // Fixes flickering by only moving element when there is enough space
540
+ let offset = Math . abs ( yPos - moveEvent . clientY ) ;
541
+ moving = Math . abs ( offset ) > 5 || moving ;
542
+
543
+ if ( controls && ! moving ||
544
+ controls . getBoundingClientRect ( ) . top > control . getBoundingClientRect ( ) . top ||
545
+ controls . getBoundingClientRect ( ) . bottom < control . getBoundingClientRect ( ) . bottom ) return ;
546
+
547
+ let x = moveEvent . clientX , y = moveEvent . clientY ,
548
+ elementAt = root . elementFromPoint ( x , y ) ,
549
+ swapControl = ! elementAt || ! elementAt . closest ( "fieldset" ) ? control : elementAt . closest ( "fieldset" ) ;
550
+
551
+ swapControl = offset <= swapControl . offsetHeight ? control : swapControl ;
552
+
553
+ control . querySelector ( "summary" ) . classList . add ( "mapml-drag-active" ) ;
554
+ control . setAttribute ( "aria-grabbed" , 'true' ) ;
555
+ control . setAttribute ( "aria-dropeffect" , "move" ) ;
556
+ if ( swapControl && controls === swapControl . parentNode ) {
557
+ swapControl = swapControl !== control . nextSibling ? swapControl : swapControl . nextSibling ;
558
+ if ( control !== swapControl ) yPos = moveEvent . clientY ;
559
+ controls . insertBefore ( control , swapControl ) ;
560
+ }
561
+ } ;
562
+
563
+ document . body . onmouseup = ( ) => {
564
+ control . querySelector ( "summary" ) . classList . remove ( "mapml-drag-active" ) ;
565
+ control . setAttribute ( "aria-grabbed" , "false" ) ;
566
+ control . removeAttribute ( "aria-dropeffect" ) ;
567
+ let controlsElems = controls . children ,
568
+ layers = map . getPane ( "overlayPane" ) . children ,
569
+ zIndex = 1 ;
570
+ for ( let c of controlsElems ) {
571
+ let layerEl = c . querySelector ( "span" ) . layer . _layerEl ;
572
+ layerEl . setAttribute ( "data-moving" , "" ) ;
573
+ viewer . insertAdjacentElement ( "beforeend" , layerEl ) ;
574
+ layerEl . removeAttribute ( "data-moving" ) ;
575
+
576
+ for ( let layer of layers ) {
577
+ if ( c . querySelector ( "span" ) . layer . _container == layer ) {
578
+ layer . style [ "z-index" ] = zIndex ;
579
+ zIndex ++ ;
580
+ }
581
+ }
582
+ }
583
+ document . body . onmousemove = document . body . onmouseup = null ;
584
+ } ;
532
585
} ;
533
586
534
- fieldset . onmouseup = ( e ) => {
535
- e . target . closest ( "fieldset" ) . draggable = true ;
587
+ //old version of dragging
588
+ /* fieldset.onmouseup = (e) => {
589
+ //e.target.closest("fieldset").draggable = true;
536
590
};
537
591
538
592
fieldset.ondrag = (e) => {
@@ -578,7 +632,7 @@ export var MapMLLayer = L.Layer.extend({
578
632
}
579
633
}
580
634
}
581
- } ;
635
+ }; */
582
636
583
637
L . DomEvent . on ( opacity , 'change' , this . _changeOpacity , this ) ;
584
638
0 commit comments