UNPKG

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.5 kB
/*! * AngularJS Material Design * https://github.com/angular/material * @license MIT * v1.2.4-master-bfc8ae7 */ goog.provide("ngmaterial.components.fabShared"),goog.require("ngmaterial.core"),function(){"use strict";function n(t,o,r,c,a,e){var i,l=this,n=0;function s(n){"click"==n.type&&function(n){var t=n.target?function(n){return c.getClosest(n,"button")||c.getClosest(n,"md-button")}(n.target):null;t&&!t.disabled&&(!function(n){return c.getClosest(n,"md-fab-trigger")}(n.target)||l.toggle());!function(n){return c.getClosest(n,"md-fab-actions")}(n.target)||l.close()}(n),"focusout"!=n.type||i||(i=e(function(){l.close()},100,!1)),"focusin"==n.type&&i&&(e.cancel(i),i=null)}function u(){l.currentActionIndex=-1}function d(){0<o[0].scrollHeight?r.addClass(o,"_md-animations-ready").then(function(){o.removeClass("md-animations-waiting")}):n<10&&(e(d,100),n+=1)}function f(){o.off("keydown",g),angular.element(document).off("click touchend",m)}function m(n){if(n.target){var t=c.getClosest(n.target,"md-fab-trigger"),e=c.getClosest(n.target,"md-fab-actions");t||e||l.close()}}function g(n){switch(n.which){case a.KEY_CODE.ESCAPE:return l.close(),n.preventDefault(),!1;case a.KEY_CODE.LEFT_ARROW:return function(n){"left"===l.direction?h(n):p(n)}(n),!1;case a.KEY_CODE.UP_ARROW:return function(n){"down"===l.direction?p(n):h(n)}(n),!1;case a.KEY_CODE.RIGHT_ARROW:return function(n){"left"===l.direction?p(n):h(n)}(n),!1;case a.KEY_CODE.DOWN_ARROW:return function(n){"up"===l.direction?p(n):h(n)}(n),!1;case a.KEY_CODE.TAB:return function(n){n.shiftKey?p(n):h(n)}(n),!1}}function p(n){b(n,-1)}function h(n){b(n,1)}function b(n,t){var e=v()[0].querySelectorAll(".md-fab-action-item"),i=l.currentActionIndex;l.currentActionIndex=l.currentActionIndex+t,l.currentActionIndex=Math.min(e.length-1,l.currentActionIndex),l.currentActionIndex=Math.max(0,l.currentActionIndex),n.which===a.KEY_CODE.TAB&&i===l.currentActionIndex||(angular.element(e[l.currentActionIndex]).children()[0].focus(),n.preventDefault(),n.stopImmediatePropagation())}function v(){return o.find("md-fab-actions")}l.open=function(){t.$evalAsync("ctrl.isOpen = true")},l.close=function(){t.$evalAsync("ctrl.isOpen = false"),o.find("md-fab-trigger")[0].focus()},l.toggle=function(){t.$evalAsync("ctrl.isOpen = !ctrl.isOpen")},l.$onInit=function(){l.direction=l.direction||"down",l.isOpen=l.isOpen||!1,u(),o.addClass("md-animations-waiting"),function(){var n=["click","focusin","focusout"];angular.forEach(n,function(n){o.on(n,s)}),t.$on("$destroy",function(){angular.forEach(n,function(n){o.off(n,s)}),f()})}(),function(){var i,a;t.$watch("ctrl.direction",function(n,t){r.removeClass(o,"md-"+t),r.addClass(o,"md-"+n),u()}),t.$watch("ctrl.isOpen",function(n){u(),i&&a||(i=o.find("md-fab-trigger"),a=v()),n?(o.on("keydown",g),c.nextTick(function(){angular.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),a.attr("aria-hidden",!n),r.setClass(o,t,e)})}(),d()},1===angular.version.major&&angular.version.minor<=4&&this.$onInit()}n.$inject=["$scope","$element","$animate","$mdUtil","$mdConstant","$timeout"],angular.module("material.components.fabShared",["material.core"]).controller("MdFabController",n)}(),function(){"use strict";n.$inject=["$timeout"],t.$inject=["$timeout"];var e=300;function n(t){function i(n){t(n,e,!1)}function a(n){if(!n.hasClass("md-animations-waiting")||n.hasClass("_md-animations-ready")){var t=n[0],l=n.controller("mdFabSpeedDial"),i=t.querySelectorAll(".md-fab-action-item"),s=t.querySelector("md-fab-trigger"),e=t.querySelector("._md-css-variables"),a=parseInt(window.getComputedStyle(e).zIndex);angular.forEach(i,function(n,t){var e=n.style;e.transform=e.webkitTransform="",e.transitionDelay="",e.opacity=l.isOpen?1:0,e.zIndex=i.length-t+a}),s.style.zIndex=a+i.length+1,l.isOpen||angular.forEach(i,function(n,t){var e,i,a=n.style,o=(s.clientHeight-n.clientHeight)/2,r=(s.clientWidth-n.clientWidth)/2;switch(l.direction){case"up":e=n.scrollHeight*(t+1)+o,i="Y";break;case"down":e=-(n.scrollHeight*(t+1)+o),i="Y";break;case"left":e=n.scrollWidth*(t+1)+r,i="X";break;case"right":e=-(n.scrollWidth*(t+1)+r),i="X"}var c="translate"+i+"("+e+"px)";a.transform=a.webkitTransform=c})}}return{addClass:function(n,t,e){n.hasClass("md-fling")?(a(n),i(e)):e()},removeClass:function(n,t,e){a(n),i(e)}}}function t(t){function i(n){t(n,e,!1)}function a(n){var t=n[0],a=n.controller("mdFabSpeedDial"),o=t.querySelectorAll(".md-fab-action-item"),e=t.querySelector("._md-css-variables"),r=parseInt(window.getComputedStyle(e).zIndex);angular.forEach(o,function(n,t){var e=n.style,i=65*t;e.opacity=a.isOpen?1:0,e.transform=e.webkitTransform=a.isOpen?"scale(1)":"scale(0)",e.transitionDelay=(a.isOpen?i:o.length-i)+"ms",e.zIndex=o.length-t+r})}return{addClass:function(n,t,e){a(n),i(e)},removeClass:function(n,t,e){a(n),i(e)}}}angular.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)}(),ngmaterial.components.fabShared=angular.module("material.components.fabShared");