PATH:
home
/
letacommog
/
letaweb
/
scripts
/
libraries
/
angular
/** * ng-context-menu - v1.0.1 - An AngularJS directive to display a context menu * when a right-click event is triggered * * @author Ian Kennington Walter (http://ianvonwalter.com) */ angular .module('ng-context-menu', []) .factory('ContextMenuService', function() { return { element: null, menuElement: null, parentOffset:null }; }) .directive('contextMenu', [ '$document', 'ContextMenuService', function($document, ContextMenuService) { return { restrict: 'A', scope: { 'callback': '&contextMenu', 'disabled': '&contextMenuDisabled', 'closeCallback': '&contextMenuClose' }, link: function($scope, $element, $attrs) { var opened = false; function open(event, menuElement) { menuElement.addClass('open'); var doc = $document[0].documentElement; var docLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0), docTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0), elementWidth = menuElement[0].scrollWidth, elementHeight = menuElement[0].scrollHeight; var docWidth = doc.clientWidth + docLeft, docHeight = doc.clientHeight + docTop, totalWidth = elementWidth + event.pageX, totalHeight = elementHeight + event.pageY, left = Math.max(event.pageX - docLeft, 0), top = Math.max(event.pageY - docTop, 0); if (totalWidth > docWidth) { left = left - (totalWidth - docWidth); } if (ContextMenuService.parentOffset === null || ContextMenuService.parentOffset.is(':hidden')) { ContextMenuService.parentOffset = menuElement.offsetParent(); } var offsetParent = ContextMenuService.parentOffset.offset(); var deltaLeft = offsetParent.left; var deltaTop = offsetParent.top; if (totalHeight > docHeight) { top = top - (totalHeight - docHeight); } menuElement.css('top', top - deltaTop + 'px'); menuElement.css('left', left - deltaLeft + 'px'); opened = true; } function close(menuElement) { menuElement.removeClass('open'); if (opened) { $scope.closeCallback(); } opened = false; } $element.bind('contextmenu', function(event) { if (!$scope.disabled()) { if (ContextMenuService.menuElement !== null) { close(ContextMenuService.menuElement); } ContextMenuService.menuElement = angular.element( document.getElementById($attrs.target) ); ContextMenuService.element = event.target; //console.log('set', ContextMenuService.element); event.preventDefault(); event.stopPropagation(); $scope.$apply(function() { $scope.callback({ $event: event }); }); $scope.$apply(function() { open(event, ContextMenuService.menuElement); }); } }); function handleKeyUpEvent(event) { //console.log('keyup'); if (!$scope.disabled() && opened && event.keyCode === 27) { $scope.$apply(function() { close(ContextMenuService.menuElement); }); } } function handleClickEvent(event) { if (!$scope.disabled() && opened && (event.button !== 2 || event.target !== ContextMenuService.element)) { $scope.$apply(function() { close(ContextMenuService.menuElement); }); } } $document.bind('keyup', handleKeyUpEvent); // Firefox treats a right-click as a click and a contextmenu event // while other browsers just treat it as a contextmenu event $document.bind('click', handleClickEvent); $document.bind('contextmenu', handleClickEvent); $scope.$on('$destroy', function() { //console.log('destroy'); $document.unbind('keyup', handleKeyUpEvent); $document.unbind('click', handleClickEvent); $document.unbind('contextmenu', handleClickEvent); }); } }; } ]);
[+]
..
[-] angular-csp.css
[edit]
[-] angular-cookies.js
[edit]
[-] datetimepicker.js
[edit]
[-] angular-mocks.js
[edit]
[-] sortable.js
[edit]
[-] angular-resource.min.js
[edit]
[-] version.txt
[edit]
[+]
i18n
[-] angular-messages.js
[edit]
[-] angular-sanitize.min.js
[edit]
[-] ct-ui-router-extras.min.js
[edit]
[-] angular-loader.min.js
[edit]
[-] angular-route.min.js.map
[edit]
[-] angular-datatables.js
[edit]
[-] angular-datatables.columnfilter.js
[edit]
[-] angular.1.5.js
[edit]
[-] xeditable.min.js
[edit]
[-] angular-datatables.min.js
[edit]
[-] angucomplete-alt.min.js
[edit]
[-] ng-table.min.js
[edit]
[-] angular-ng-context-menu.js
[edit]
[-] angular-touch.min.js.map
[edit]
[-] ui-bootstrap-0.13.0.min.js
[edit]
[-] angular-sanitize.js
[edit]
[-] angular-cookies.min.js
[edit]
[-] angular-ui-router.min.js
[edit]
[-] ui-bootstrap.min.js
[edit]
[-] angular.min.js.map
[edit]
[-] angular.min - Copy (2).js
[edit]
[-] angular-cookies.min.js.map
[edit]
[-] errors.json
[edit]
[-] ui-bootstrap-tpls-0.13.0.min.js
[edit]
[-] angular.js
[edit]
[-] angular-route.min.js
[edit]
[-] angular-scenario.js
[edit]
[-] angular-ui-router.js
[edit]
[-] ui-bootstrap-tpls-1.2.4.min.js
[edit]
[-] dataTables.lightColumnFilter.min.js
[edit]
[-] angular-touch.js
[edit]
[-] version.json
[edit]
[-] angular-animate.js
[edit]
[-] angular-animate.min.js.map
[edit]
[-] angular-datatables.light-columnfilter.js
[edit]
[-] ui-bootstrap-tpls-0.13.0.js
[edit]
[-] angular-loader.min.js.map
[edit]
[-] angular-touch.min.js
[edit]
[-] angular-animate.min.js
[edit]
[-] angular.min.js
[edit]
[-] angular-loader.js
[edit]
[-] angular.min - Copy.js
[edit]
[-] angular-sanitize.min.js.map
[edit]
[-] ngStorage.min.js
[edit]
[-] angular-resource.js
[edit]
[-] angular-route.js
[edit]
[-] angular-resource.min.js.map
[edit]