src/components/vendors/contextMenu.js
function (clickX, clickY, cmenu, e) {
            var x = clickX + cmenu.offsetX;
            var y = clickY + cmenu.offsetY;
            var h = $(cmenu.menu).height();
            var w = $(cmenu.menu).width();
            var dir = cmenu.direction;
            if (cmenu.constrainToScreen) {
                var $w = $(window);
                var wh = $w.height();
                var ww = $w.width();
                var st = $w.scrollTop();
                var maxTop = y - st - 5;
                var maxBottom = wh + st - y - 5;
                if (h > maxBottom) {
                    if (h > maxTop) {
                        if (maxTop > maxBottom) {
                            // scrollable en haut
                            h = maxTop;
                            cmenu._div.css('height', h + 'px').css('overflow-y', 'scroll');
                            y -= h;
                        }
                        else {
                            // scrollable en bas
                            h = maxBottom;
                            cmenu._div.css('height', h + 'px').css('overflow-y', 'scroll');
                        }
                    }
                    else {
                        // menu ok en haut
                        y -= h;
                    }
                }
                else {
                    // menu ok en bas
                }

                var maxRight = x + w - $w.scrollLeft();
                if (maxRight > ww) {
                    x -= (maxRight - ww);
                }
            }
            return {'x': x, 'y': y};
        }
function (clickX, clickY, cmenu, e) {
            var x = clickX + cmenu.offsetX;
            var y = clickY + cmenu.offsetY;
            var h = $(cmenu.menu).height();
            var w = $(cmenu.menu).width();
            var dir = cmenu.direction;
            if (cmenu.constrainToScreen) {
                var $w = $(window);
                var wh = $w.height();
                var ww = $w.width();
                var st = $w.scrollTop();
                var maxTop = y - st - 5;
                var maxBottom = wh + st - y - 5;
                if (h > maxBottom) {
                    if (h > maxTop) {
                        if (maxTop > maxBottom) {
                            // scrollable en haut
                            h = maxTop;
                            cmenu._div.css('height', h + 'px').css('overflow-y', 'scroll');
                            y -= h;
                        }
                        else {
                            // scrollable en bas
                            h = maxBottom;
                            cmenu._div.css('height', h + 'px').css('overflow-y', 'scroll');
                        }
                    }
                    else {
                        // menu ok en haut
                        y -= h;
                    }
                }
                else {
                    // menu ok en bas
                }

                var maxRight = x + w - $w.scrollLeft();
                if (maxRight > ww) {
                    x -= (maxRight - ww);
                }
            }
            return {'x': x, 'y': y};
        }
function ( clickX , clickY , cmenu , e ) { var x = clickX + cmenu . offsetX ; var y = clickY + cmenu . offsetY ; var h = $ ( cmenu . menu ) . height ( ) ; var w = $ ( cmenu . menu ) . width ( ) ; var dir = cmenu . direction ; if ( cmenu . constrainToScreen ) { var $w = $ ( window ) ; var wh = $w . height ( ) ; var ww = $w . width ( ) ; var st = $w . scrollTop ( ) ; var maxTop = y - st - 5 ; var maxBottom = wh + st - y - 5 ; if ( h > maxBottom ) { if ( h > maxTop ) { if ( maxTop > maxBottom ) { // scrollable en haut h = maxTop ; cmenu . _div . css ( 'height' , h + 'px' ) . css ( 'overflow-y' , 'scroll' ) ; y -= h ; } else { // scrollable en bas h = maxBottom ; cmenu . _div . css ( 'height' , h + 'px' ) . css ( 'overflow-y' , 'scroll' ) ; } } else { // menu ok en haut y -= h ; } } else { // menu ok en bas } var maxRight = x + w - $w . scrollLeft ( ) ; if ( maxRight > ww ) { x -= ( maxRight - ww ) ; } } return { 'x' : x , 'y' : y } ; }
Find the position where the menu should appear, given an x,y of the click event
Find the position where the menu should appear given an x y of the click event