angular-material
Version:
**[Support for legacy AngularJS ended on January 1st, 2022](https://goo.gle/angularjs-end-of-life). [See `@angular/core` for the actively supported Angular](https://npmjs.com/@angular/core).**
7 lines • 5.27 kB
JavaScript
/*!
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.2.4-master-bfc8ae7
*/
!function(a,C){"use strict";function n(t,r,c,a,o,e){var i,s=this,n=0;function l(n){"click"==n.type&&function(n){var t=n.target?function(n){return a.getClosest(n,"button")||a.getClosest(n,"md-button")}(n.target):null;t&&!t.disabled&&(!function(n){return a.getClosest(n,"md-fab-trigger")}(n.target)||s.toggle());!function(n){return a.getClosest(n,"md-fab-actions")}(n.target)||s.close()}(n),"focusout"!=n.type||i||(i=e(function(){s.close()},100,!1)),"focusin"==n.type&&i&&(e.cancel(i),i=null)}function d(){s.currentActionIndex=-1}function u(){0<r[0].scrollHeight?c.addClass(r,"_md-animations-ready").then(function(){r.removeClass("md-animations-waiting")}):n<10&&(e(u,100),n+=1)}function f(){r.off("keydown",p),C.element(document).off("click touchend",m)}function m(n){if(n.target){var t=a.getClosest(n.target,"md-fab-trigger"),e=a.getClosest(n.target,"md-fab-actions");t||e||s.close()}}function p(n){switch(n.which){case o.KEY_CODE.ESCAPE:return s.close(),n.preventDefault(),!1;case o.KEY_CODE.LEFT_ARROW:return function(n){"left"===s.direction?h(n):g(n)}(n),!1;case o.KEY_CODE.UP_ARROW:return function(n){"down"===s.direction?g(n):h(n)}(n),!1;case o.KEY_CODE.RIGHT_ARROW:return function(n){"left"===s.direction?g(n):h(n)}(n),!1;case o.KEY_CODE.DOWN_ARROW:return function(n){"up"===s.direction?g(n):h(n)}(n),!1;case o.KEY_CODE.TAB:return function(n){n.shiftKey?g(n):h(n)}(n),!1}}function g(n){b(n,-1)}function h(n){b(n,1)}function b(n,t){var e=v()[0].querySelectorAll(".md-fab-action-item"),i=s.currentActionIndex;s.currentActionIndex=s.currentActionIndex+t,s.currentActionIndex=Math.min(e.length-1,s.currentActionIndex),s.currentActionIndex=Math.max(0,s.currentActionIndex),n.which===o.KEY_CODE.TAB&&i===s.currentActionIndex||(C.element(e[s.currentActionIndex]).children()[0].focus(),n.preventDefault(),n.stopImmediatePropagation())}function v(){return r.find("md-fab-actions")}s.open=function(){t.$evalAsync("ctrl.isOpen = true")},s.close=function(){t.$evalAsync("ctrl.isOpen = false"),r.find("md-fab-trigger")[0].focus()},s.toggle=function(){t.$evalAsync("ctrl.isOpen = !ctrl.isOpen")},s.$onInit=function(){s.direction=s.direction||"down",s.isOpen=s.isOpen||!1,d(),r.addClass("md-animations-waiting"),function(){var n=["click","focusin","focusout"];C.forEach(n,function(n){r.on(n,l)}),t.$on("$destroy",function(){C.forEach(n,function(n){r.off(n,l)}),f()})}(),function(){var i,o;t.$watch("ctrl.direction",function(n,t){c.removeClass(r,"md-"+t),c.addClass(r,"md-"+n),d()}),t.$watch("ctrl.isOpen",function(n){d(),i&&o||(i=r.find("md-fab-trigger"),o=v()),n?(r.on("keydown",p),a.nextTick(function(){C.element(document).on("click touchend",m)})):f();var t=n?"md-is-open":"",e=n?"":"md-is-open";i.attr("aria-haspopup",!0),i.attr("aria-expanded",n),o.attr("aria-hidden",!n),c.setClass(r,t,e)})}(),u()},1===C.version.major&&C.version.minor<=4&&this.$onInit()}n.$inject=["$scope","$element","$animate","$mdUtil","$mdConstant","$timeout"],C.module("material.components.fabShared",["material.core"]).controller("MdFabController",n),function(){n.$inject=["$timeout"],t.$inject=["$timeout"];var e=300;function n(t){function i(n){t(n,e,!1)}function o(n){if(!n.hasClass("md-animations-waiting")||n.hasClass("_md-animations-ready")){var t=n[0],s=n.controller("mdFabSpeedDial"),i=t.querySelectorAll(".md-fab-action-item"),l=t.querySelector("md-fab-trigger"),e=t.querySelector("._md-css-variables"),o=parseInt(a.getComputedStyle(e).zIndex);C.forEach(i,function(n,t){var e=n.style;e.transform=e.webkitTransform="",e.transitionDelay="",e.opacity=s.isOpen?1:0,e.zIndex=i.length-t+o}),l.style.zIndex=o+i.length+1,s.isOpen||C.forEach(i,function(n,t){var e,i,o=n.style,r=(l.clientHeight-n.clientHeight)/2,c=(l.clientWidth-n.clientWidth)/2;switch(s.direction){case"up":e=n.scrollHeight*(t+1)+r,i="Y";break;case"down":e=-(n.scrollHeight*(t+1)+r),i="Y";break;case"left":e=n.scrollWidth*(t+1)+c,i="X";break;case"right":e=-(n.scrollWidth*(t+1)+c),i="X"}var a="translate"+i+"("+e+"px)";o.transform=o.webkitTransform=a})}}return{addClass:function(n,t,e){n.hasClass("md-fling")?(o(n),i(e)):e()},removeClass:function(n,t,e){o(n),i(e)}}}function t(t){function i(n){t(n,e,!1)}function o(n){var t=n[0],o=n.controller("mdFabSpeedDial"),r=t.querySelectorAll(".md-fab-action-item"),e=t.querySelector("._md-css-variables"),c=parseInt(a.getComputedStyle(e).zIndex);C.forEach(r,function(n,t){var e=n.style,i=65*t;e.opacity=o.isOpen?1:0,e.transform=e.webkitTransform=o.isOpen?"scale(1)":"scale(0)",e.transitionDelay=(o.isOpen?i:r.length-i)+"ms",e.zIndex=r.length-t+c})}return{addClass:function(n,t,e){o(n),i(e)},removeClass:function(n,t,e){o(n),i(e)}}}C.module("material.components.fabSpeedDial",["material.core","material.components.fabShared","material.components.fabActions"]).directive("mdFabSpeedDial",function(){return{restrict:"E",scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"MdFabController",controllerAs:"ctrl",link:function(n,t){t.prepend('<div class="_md-css-variables"></div>')}}}).animation(".md-fling",n).animation(".md-scale",t).service("mdFabSpeedDialFlingAnimation",n).service("mdFabSpeedDialScaleAnimation",t)}()}(window,window.angular);