2020-05-19 11:43:42 +03:00

7 lines
13 KiB
JavaScript

/*!
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.1.18-master-97a1616
*/
function MenuController(o,t,a,i,l,r,e,n,s){var u,d,c=l.prefixer(),m=this;this.nestLevel=parseInt(t.mdNestLevel,10)||0,this.init=function(e,t){t=t||{},u=e,(d=a[0].querySelector(c.buildSelector(["ng-click","ng-mouseenter"]))).setAttribute("aria-expanded","false"),this.isInMenuBar=t.isInMenuBar,this.nestedMenus=l.nodesToArray(u[0].querySelectorAll(".md-nested-menu")),u.on("$mdInterimElementRemove",function(){m.isOpen=!1,l.nextTick(function(){m.onIsOpenChanged(m.isOpen)})}),l.nextTick(function(){m.onIsOpenChanged(m.isOpen)});var n="menu_container_"+l.nextUid();u.attr("id",n),angular.element(d).attr({"aria-owns":n,"aria-haspopup":"true"}),i.$on("$destroy",angular.bind(this,function(){this.disableHoverListener(),o.destroy()})),u.on("$destroy",function(){o.destroy()})};var p,f,h=[];this.enableHoverListener=function(){h.push(e.$on("$mdMenuOpen",function(e,t){u[0].contains(t[0])&&(m.currentlyOpenMenu=t.controller("mdMenu"),m.isAlreadyOpening=!1,m.currentlyOpenMenu.registerContainerProxy(m.triggerContainerProxy.bind(m)))})),h.push(e.$on("$mdMenuClose",function(e,t){u[0].contains(t[0])&&(m.currentlyOpenMenu=void 0)})),(f=angular.element(l.nodesToArray(u[0].children[0].children))).on("mouseenter",m.handleMenuItemHover),f.on("mouseleave",m.handleMenuItemMouseLeave)},this.disableHoverListener=function(){for(;h.length;)h.shift()();f&&f.off("mouseenter",m.handleMenuItemHover),f&&f.off("mouseleave",m.handleMenuItemMouseLeave)},this.handleMenuItemHover=function(e){if(!m.isAlreadyOpening){var t=e.target.querySelector("md-menu")||l.getClosest(e.target,"MD-MENU");p=r(function(){if(t=t&&angular.element(t).controller("mdMenu"),m.currentlyOpenMenu&&m.currentlyOpenMenu!=t){var e=m.nestLevel+1;m.currentlyOpenMenu.close(!0,{closeTo:e}),m.isAlreadyOpening=!!t,t&&t.open()}else t&&!t.isOpen&&t.open&&(m.isAlreadyOpening=!!t,t&&t.open())},t?100:250);var n=e.currentTarget.querySelector(".md-button:not([disabled])");n&&n.focus()}},this.handleMenuItemMouseLeave=function(){p&&(r.cancel(p),p=void 0)},this.open=function(e){e&&e.stopPropagation(),e&&e.preventDefault(),m.isOpen||(m.enableHoverListener(),m.isOpen=!0,l.nextTick(function(){m.onIsOpenChanged(m.isOpen)}),(d=d||(e?e.target:a[0])).setAttribute("aria-expanded","true"),i.$emit("$mdMenuOpen",a),o.show({scope:i,mdMenuCtrl:m,nestLevel:m.nestLevel,element:u,target:d,preserveElement:!0,parent:"body"}).finally(function(){d.setAttribute("aria-expanded","false"),m.disableHoverListener()}))},this.onIsOpenChanged=function(e){e?(u.attr("aria-hidden","false"),a[0].classList.add("md-open"),angular.forEach(m.nestedMenus,function(e){e.classList.remove("md-open")})):(u.attr("aria-hidden","true"),a[0].classList.remove("md-open")),i.$mdMenuIsOpen=m.isOpen},this.focusMenuContainer=function(){var e=u[0].querySelector(c.buildSelector(["md-menu-focus-target","md-autofocus"]));(e=e||u[0].querySelector(".md-button:not([disabled])")).focus()},this.registerContainerProxy=function(e){this.containerProxy=e},this.triggerContainerProxy=function(e){this.containerProxy&&this.containerProxy(e)},this.destroy=function(){return m.isOpen?o.destroy():n.when(!1)},this.close=function(e,t){if(m.isOpen){m.isOpen=!1,l.nextTick(function(){m.onIsOpenChanged(m.isOpen)});var n=angular.extend({},t,{skipFocus:e});if(i.$emit("$mdMenuClose",a,n),o.hide(null,t),!e){var r=m.restoreFocusTo||a.find("button")[0];r instanceof angular.element&&(r=r[0]),r&&r.focus()}}},this.positionMode=function(){var e=(t.mdPositionMode||"target").split(" ");return 1===e.length&&e.push(e[0]),{left:e[0],top:e[1]}},this.offsets=function(){var e=(t.mdOffset||"0 0").split(" ").map(parseFloat);if(2===e.length)return{left:e[0],top:e[1]};if(1===e.length)return{top:e[0],left:e[0]};throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")},i.$mdMenu={open:this.open,close:this.close},i.$mdOpenMenu=angular.bind(this,function(){return s.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."),this.open.apply(this,arguments)})}function MenuDirective(i){var l="Invalid HTML for md-menu: ";return{restrict:"E",require:["mdMenu","?^mdMenuBar"],controller:"mdMenuCtrl",scope:!0,compile:function(e){e.addClass("md-menu");var t=e.children()[0],n=i.prefixer();n.hasAttribute(t,"ng-click")||(t=t.querySelector(n.buildSelector(["ng-click","ng-mouseenter"]))||t);var r="MD-BUTTON"===t.nodeName||"BUTTON"===t.nodeName;t&&r&&!t.hasAttribute("type")&&t.setAttribute("type","button");if(!t)throw Error(l+"Expected the menu to have a trigger element.");if(2!==e.children().length)throw Error(l+"Expected two children elements. The second element must have a `md-menu-content` element.");t&&t.setAttribute("aria-haspopup","true");var o=e[0].querySelectorAll("md-menu"),a=parseInt(e[0].getAttribute("md-nest-level"),10)||0;o&&angular.forEach(i.nodesToArray(o),function(e){e.hasAttribute("md-position-mode")||e.setAttribute("md-position-mode","cascade"),e.classList.add("_md-nested-menu"),e.setAttribute("md-nest-level",a+1)});return s}};function s(e,t,n,r){var o=r[0],a=!!r[1],i=angular.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),l=t.children()[1];t.addClass("_md"),l.hasAttribute("role")||l.setAttribute("role","menu"),i.append(l),t.on("$destroy",function(){i.remove()}),t.append(i),i[0].style.display="none",o.init(i,{isInMenuBar:a})}}function MenuProvider(e){t.$inject=["$mdUtil","$mdTheming","$mdConstant","$document","$window","$q","$$rAF","$animateCss","$animate","$log"];var A=8;return e("$mdMenu").setDefaults({methods:["target"],options:t});function t(E,e,s,k,O,r,o,a,u,d){var $=E.prefixer(),c=E.dom.animator;return{parent:"body",onShow:function(i,n,l){(function(){if(!l.target)throw Error("$mdMenu.show() expected a target to animate from in options.target");angular.extend(l,{alreadyOpen:!1,isRemoved:!1,target:angular.element(l.target),parent:angular.element(l.parent),menuContentEl:angular.element(n[0].querySelector("md-menu-content"))})})(),l.menuContentEl[0]?e.inherit(l.menuContentEl,l.target):d.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.",n);return l.cleanupResizing=function(){var e=function(t,n){return o.throttle(function(){if(!l.isRemoved){var e=f(t,n);t.css(c.toCss(e))}})}(n,l);return O.addEventListener("resize",e),O.addEventListener("orientationchange",e),function(){O.removeEventListener("resize",e),O.removeEventListener("orientationchange",e)}}(),l.hideBackdrop=function(e,t,n){if(n.nestLevel)return angular.noop;n.disableParentScroll&&!E.getClosest(n.target,"MD-DIALOG")?n.restoreScroll=E.disableScrollAround(n.element,n.parent):n.disableParentScroll=!1;n.hasBackdrop&&(n.backdrop=E.createBackdrop(e,"md-menu-backdrop md-click-catcher"),u.enter(n.backdrop,k[0].body));return function(){n.backdrop&&n.backdrop.remove(),n.disableParentScroll&&n.restoreScroll()}}(i,0,l),function(){return l.parent.append(n),n[0].style.display="",r(function(e){var t=f(n,l);n.removeClass("md-leave"),a(n,{addClass:"md-active",from:c.toCss(t),to:c.toCss({transform:""})}).start().then(e)})}().then(function(e){return l.alreadyOpen=!0,l.cleanupInteraction=function(){if(!l.menuContentEl[0])return angular.noop;l.menuContentEl.on("keydown",o),l.menuContentEl[0].addEventListener("click",a,!0);var e=l.menuContentEl[0].querySelector($.buildSelector(["md-menu-focus-target","md-autofocus"]));if(!e)for(var t=l.menuContentEl[0].children.length,n=0;n<t;n++){var r=l.menuContentEl[0].children[n];if(e=r.querySelector(".md-button:not([disabled])"))break;if(r.firstElementChild&&!r.firstElementChild.disabled){e=r.firstElementChild;break}}return e&&e.focus(),function(){l.menuContentEl.off("keydown",o),l.menuContentEl[0].removeEventListener("click",a,!0)};function o(e){var t;switch(e.keyCode){case s.KEY_CODE.ESCAPE:l.mdMenuCtrl.close(!1,{closeAll:!0}),t=!0;break;case s.KEY_CODE.TAB:l.mdMenuCtrl.close(!1,{closeAll:!0}),t=!1;break;case s.KEY_CODE.UP_ARROW:m(e,l.menuContentEl,l,-1)||l.nestLevel||l.mdMenuCtrl.triggerContainerProxy(e),t=!0;break;case s.KEY_CODE.DOWN_ARROW:m(e,l.menuContentEl,l,1)||l.nestLevel||l.mdMenuCtrl.triggerContainerProxy(e),t=!0;break;case s.KEY_CODE.LEFT_ARROW:l.nestLevel?l.mdMenuCtrl.close():l.mdMenuCtrl.triggerContainerProxy(e),t=!0;break;case s.KEY_CODE.RIGHT_ARROW:var n=E.getClosest(e.target,"MD-MENU");n&&n!=l.parent[0]?e.target.click():l.mdMenuCtrl.triggerContainerProxy(e),t=!0}t&&(e.preventDefault(),e.stopImmediatePropagation())}function a(e){var t=e.target;do{if(t==l.menuContentEl[0])return;if((r(t,["ng-click","ng-href","ui-sref"])||"BUTTON"==t.nodeName||"MD-BUTTON"==t.nodeName)&&!r(t,["md-prevent-menu-close"])){var n=E.getClosest(t,"MD-MENU");t.hasAttribute("disabled")||n&&n!=l.parent[0]||i.$apply(function(){l.mdMenuCtrl.close(!0,{closeAll:!0})});break}}while(t=t.parentNode);function r(e,t){if(!e)return!1;for(var n,r=0;n=t[r];++r)if($.hasAttribute(e,n))return!0;return!1}}}(),l.cleanupBackdrop=l.backdrop?(l.backdrop.on("click",t),function(){l.backdrop.off("click",t)}):angular.noop,n.addClass("md-clickable"),e});function t(e){e.preventDefault(),e.stopPropagation(),i.$apply(function(){l.mdMenuCtrl.close(!0,{closeAll:!0})})}},onRemove:function(e,t,n){return n.cleanupInteraction(),n.cleanupBackdrop(),n.cleanupResizing(),n.hideBackdrop(),t.removeClass("md-clickable"),!0===n.$destroy?r():function(){return a(t,{addClass:"md-leave"}).start()}().then(r);function r(){t.removeClass("md-active"),function(e,t){t.preserveElement?i(e).style.display="none":i(e).parentNode===i(t.parent)&&i(t.parent).removeChild(i(e))}(t,n),n.alreadyOpen=!1}},hasBackdrop:!0,disableParentScroll:!0,skipCompile:!0,preserveScope:!0,multiple:!0,themable:!0};function m(e,t,n,r){for(var o,a=E.getClosest(e.target,"MD-MENU-ITEM"),i=E.nodesToArray(t[0].children),l=i.indexOf(a)+r;0<=l&&l<i.length;l+=r){if(o=p(i[l].querySelector(".md-button")))break}return o}function p(e){if(e&&-1!=e.getAttribute("tabindex"))return e.focus(),k[0].activeElement==e}function f(e,t){var n,r=e[0],o=e[0].firstElementChild,a=o.getBoundingClientRect(),i=k[0].body.getBoundingClientRect(),l=O.getComputedStyle(o),s=t.target[0].querySelector($.buildSelector("md-menu-origin"))||t.target[0],u=s.getBoundingClientRect(),d={left:i.left+A,top:Math.max(i.top,0)+A,bottom:Math.max(i.bottom,Math.max(i.top,0)+i.height)-A,right:i.right-A},c={top:0,left:0,right:0,bottom:0},m={top:0,left:0,right:0,bottom:0},p=t.mdMenuCtrl.positionMode();"target"!==p.top&&"target"!==p.left&&"target-right"!==p.left||(n=function(){for(var e=0;e<o.children.length;++e)if("none"!=O.getComputedStyle(o.children[e]).display)return o.children[e]}())&&(c=(n=(n=n.firstElementChild||n).querySelector($.buildSelector("md-menu-align-target"))||n).getBoundingClientRect(),m={top:parseFloat(r.style.top||0),left:parseFloat(r.style.left||0)});var f={},h="top ";switch(p.top){case"target":f.top=m.top+u.top-c.top;break;case"cascade":f.top=u.top-parseFloat(l.paddingTop)-s.style.top;break;case"bottom":f.top=u.top+u.height;break;default:throw new Error('Invalid target mode "'+p.top+'" specified for md-menu on Y axis.')}var g="rtl"===E.bidi();switch(p.left){case"target":f.left=m.left+u.left-c.left,h+=g?"right":"left";break;case"target-left":f.left=u.left,h+="left";break;case"target-right":f.left=u.right-a.width+(a.right-c.right),h+="right";break;case"cascade":var v=g?u.left-a.width<d.left:u.right+a.width<d.right;f.left=v?u.right-s.style.left:u.left-s.style.left-a.width,h+=v?"left":"right";break;case"right":g?(f.left=u.right-u.width,h+="left"):(f.left=u.right-a.width,h+="right");break;case"left":g?(f.left=u.right-a.width,h+="right"):(f.left=u.left,h+="left");break;default:throw new Error('Invalid target mode "'+p.left+'" specified for md-menu on X axis.')}var M,b=t.mdMenuCtrl.offsets();f.top+=b.top,f.left+=b.left,(M=f).top=Math.max(Math.min(M.top,d.bottom-r.offsetHeight),d.top),M.left=Math.max(Math.min(M.left,d.right-r.offsetWidth),d.left);var C=Math.round(100*Math.min(u.width/r.offsetWidth,1))/100,y=Math.round(100*Math.min(u.height/r.offsetHeight,1))/100;return{top:Math.round(f.top),left:Math.round(f.left),transform:t.alreadyOpen?void 0:E.supplant("scale({0},{1})",[C,y]),transformOrigin:h}}}function i(e){return e instanceof angular.element&&(e=e[0]),e}}goog.provide("ngmaterial.components.menu"),goog.require("ngmaterial.components.backdrop"),goog.require("ngmaterial.core"),angular.module("material.components.menu",["material.core","material.components.backdrop"]),MenuController.$inject=["$mdMenu","$attrs","$element","$scope","$mdUtil","$timeout","$rootScope","$q","$log"],angular.module("material.components.menu").controller("mdMenuCtrl",MenuController),MenuDirective.$inject=["$mdUtil"],angular.module("material.components.menu").directive("mdMenu",MenuDirective),MenuProvider.$inject=["$$interimElementProvider"],angular.module("material.components.menu").provider("$mdMenu",MenuProvider),ngmaterial.components.menu=angular.module("material.components.menu");