angular-desk-menu
Version:
angular menu
1 lines • 2.57 kB
JavaScript
angular.module("angular-desk-menu",[]).directive("deskMenu",[function(){return{scope:{callback:"&"},restrict:"E",replace:!0,transclude:!0,template:"<nav class='desk-toolbar'><ul ng-transclude></ul></nav>",link:function(e,t,n){n.hasOwnProperty("callback")||(e.callback=function(e){}),e.$on("desk-toolbar",function(t,n){e.callback({value:n})})}}}]).directive("deskOption",["$document",function(e){return{restrict:"E",replace:!0,transclude:!0,template:"<li ng-transclude></li>",link:function(t,n,r){if(r.hasOwnProperty("label")){var l=e[0].createElement("a");l.setAttribute("href","#"),l.innerText=r.label,l.textContent=r.label,n[0].firstChild?n[0].insertBefore(l,n[0].firstChild):n[0].appendChild(l)}}}}]).directive("deskLabel",[function(){return{restrict:"E",replace:!0,transclude:!0,template:"<a href='#' ng-transclude></a>",link:function(e,t,n){}}}]).directive("deskDropdown",[function(){return{restrict:"E",replace:!0,transclude:!0,template:"<ul ng-transclude></ul>",link:function(e,t,n){}}}]).directive("deskDdOption",["$document","$timeout",function(e,t){return{scope:{disabled:"=",deskValue:"="},restrict:"E",replace:!0,transclude:!0,template:"<li ng-transclude tabindex='0' ng-class='{\"desk-option-disabled\": disabled}'></li>",link:function(n,r,l){l.hasOwnProperty("disabled")||(n.disabled=!1),r.on("click",function(e){e.stopPropagation(),n.disabled||(r[0].style.backgroundColor="#DDDDDD",t(function(){r[0].style.backgroundColor=""},100),n.hasOwnProperty("deskValue")&&n.$emit("desk-toolbar",n.deskValue))}),n.$on("$destroy",function(){r.off("click")});var a=null;if(l.hasOwnProperty("shortcut")){var o=l.shortcut.split("-");a={ctrl:!1,alt:!1,shift:!1,keyCode:null};for(var c=0;c<o.length;c++)"ctrl"==o[c].toLowerCase()?a.ctrl=!0:"shift"==o[c].toLowerCase()?a.shift=!0:"alt"==o[c].toLowerCase()?a.alt=!0:a.keyCode=o[1].charCodeAt(0);n.$on("desk-toolbox-shortcut",function(e,t,l){angular.equals(t,a)&&(n.disabled||r[0].click(),l.stopImmediatePropagation(),l.preventDefault())});var s=e[0].createElement("span");s.className="desk-toolbar-shortcut",s.innerText=l.shortcut,s.textContent=l.shortcut,r[0].appendChild(s)}}}}]).directive("deskIcon",[function(){return{restrict:"E",replace:!0,transclude:!0,template:"<span class='desk-toolbar-icon' ng-transclude></span>",link:function(e,t,n){}}}]).directive("deskKeypress",["$document",function(e){return{link:function(t,n,r){e.on("keydown",function(e){t.$broadcast("desk-toolbox-shortcut",{ctrl:e.ctrlKey,shift:e.shiftKey,alt:e.altKey,keyCode:e.keyCode},e)}),t.$on("$destroy",function(){e.off("keyup keydown")})}}}]);