Skip to content

Commit 8d82dcb

Browse files
author
Gelu Timoficiuc
committed
Bugfixed the contextMenu adjust position function
The issue was that if the template of the context menu would affect the width/height of it, then positioning would not know about this until after the first rendering.
1 parent 8591601 commit 8d82dcb

File tree

5 files changed

+25
-19
lines changed

5 files changed

+25
-19
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-context-menu",
3-
"version": "0.1.5",
3+
"version": "0.1.6",
44
"description": "An AngularJS directive to set up and open a context menu when a right-click or click event is triggered",
55
"keywords": [
66
"angular-context-menu",

dist/angular-context-menu.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @license
3-
* angular-context-menu - v0.1.5 - An AngularJS directive to display a context menu
3+
* angular-context-menu - v0.1.6 - An AngularJS directive to display a context menu
44
* (c) 2014
55
* License: MIT
66
*
@@ -12,12 +12,13 @@ angular.module('ng-context-menu', [])
1212
.factory('ngContextMenu', [
1313
'$q',
1414
'$http',
15+
'$timeout',
1516
'$compile',
1617
'$templateCache',
1718
'$animate',
1819
'$rootScope',
1920
'$controller',
20-
function($q, $http, $compile, $templateCache, $animate, $rootScope, $controller) {
21+
function($q, $http, $timeout, $compile, $templateCache, $animate, $rootScope, $controller) {
2122

2223
return function contextMenuFactory(config) {
2324
if (!(!config.template ^ !config.templateUrl)) {
@@ -106,12 +107,14 @@ angular.module('ng-context-menu', [])
106107
function adjustPosition(element) {
107108
var windowHeight = 'innerHeight' in window ? window.innerHeight : document.documentElement.offsetHeight;
108109
var windowWidth = 'innerWidth' in window ? window.innerWidth : document.documentElement.offsetWidth;
109-
if (windowHeight < element[0].offsetTop + element[0].offsetHeight) {
110-
element.css('top', element[0].offsetTop - element[0].offsetHeight + 'px');
111-
}
112-
if (windowWidth < element[0].offsetLeft + element[0].offsetWidth) {
113-
element.css('left', element[0].offsetLeft - element[0].offsetWidth + 'px');
114-
}
110+
$timeout(function() {
111+
if (windowHeight < element[0].offsetTop + element[0].offsetHeight) {
112+
element.css('top', element[0].offsetTop - element[0].offsetHeight + 'px');
113+
}
114+
if (windowWidth < element[0].offsetLeft + element[0].offsetWidth) {
115+
element.css('left', element[0].offsetLeft - element[0].offsetWidth + 'px');
116+
}
117+
}, 0);
115118
}
116119

117120
function active () {

dist/angular-context-menu.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-context-menu",
3-
"version": "0.1.5",
3+
"version": "0.1.6",
44
"description": "An AngularJS directive to display a context menu when a right-click event is triggered",
55
"main": "dist/angular-context-menu.min.js",
66
"devDependencies": {

src/angular-context-menu.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @license
3-
* angular-context-menu - v0.1.5 - An AngularJS directive to display a context menu
3+
* angular-context-menu - v0.1.6 - An AngularJS directive to display a context menu
44
* (c) 2014
55
* License: MIT
66
*
@@ -12,12 +12,13 @@ angular.module('ng-context-menu', [])
1212
.factory('ngContextMenu', [
1313
'$q',
1414
'$http',
15+
'$timeout',
1516
'$compile',
1617
'$templateCache',
1718
'$animate',
1819
'$rootScope',
1920
'$controller',
20-
function($q, $http, $compile, $templateCache, $animate, $rootScope, $controller) {
21+
function($q, $http, $timeout, $compile, $templateCache, $animate, $rootScope, $controller) {
2122

2223
return function contextMenuFactory(config) {
2324
if (!(!config.template ^ !config.templateUrl)) {
@@ -106,12 +107,14 @@ angular.module('ng-context-menu', [])
106107
function adjustPosition(element) {
107108
var windowHeight = 'innerHeight' in window ? window.innerHeight : document.documentElement.offsetHeight;
108109
var windowWidth = 'innerWidth' in window ? window.innerWidth : document.documentElement.offsetWidth;
109-
if (windowHeight < element[0].offsetTop + element[0].offsetHeight) {
110-
element.css('top', element[0].offsetTop - element[0].offsetHeight + 'px');
111-
}
112-
if (windowWidth < element[0].offsetLeft + element[0].offsetWidth) {
113-
element.css('left', element[0].offsetLeft - element[0].offsetWidth + 'px');
114-
}
110+
$timeout(function() {
111+
if (windowHeight < element[0].offsetTop + element[0].offsetHeight) {
112+
element.css('top', element[0].offsetTop - element[0].offsetHeight + 'px');
113+
}
114+
if (windowWidth < element[0].offsetLeft + element[0].offsetWidth) {
115+
element.css('left', element[0].offsetLeft - element[0].offsetWidth + 'px');
116+
}
117+
}, 0);
115118
}
116119

117120
function active () {

0 commit comments

Comments
 (0)