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

7 lines
5.3 KiB
JavaScript

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