From f2e0878da6fdbdb12cd339327edae7bd5fe6f1f2 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Fri, 14 Jul 2017 18:35:31 +0800 Subject: [PATCH] feat(forums): add scale by param directive --- .../mt-scale-by-param.client.directive.js | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 modules/core/client/directives/mt-scale-by-param.client.directive.js diff --git a/modules/core/client/directives/mt-scale-by-param.client.directive.js b/modules/core/client/directives/mt-scale-by-param.client.directive.js new file mode 100644 index 00000000..70f30b15 --- /dev/null +++ b/modules/core/client/directives/mt-scale-by-param.client.directive.js @@ -0,0 +1,39 @@ +(function () { + 'use strict'; + + angular.module('core') + .directive('mtScaleByParam', mtScaleByParam); + + mtScaleByParam.$inject = ['$compile']; + + function mtScaleByParam($compile) { + var directive = { + restrict: 'A', + link: link + }; + + return directive; + + function link(scope, element, attrs) { + scope.$watch(attrs.mtScaleByParam, function (s) { + var mtScale = JSON.parse(JSON.stringify(eval('(' + attrs.mtScaleByParam + ')'))); + + element.css('transition-property', 'transform, opacity'); + element.css('transition-duration', mtScale.duration || '.5s'); + element.css('transition-timing-function', mtScale.function || 'ease'); + }); + scope.$watch(attrs.mtScaleStart, function (s) { + var mtScale = JSON.parse(JSON.stringify(eval('(' + attrs.mtScaleByParam + ')'))); + if (s) { + element.css('transform', 'scale(' + (mtScale.scale || 1.1) + ')'); + + element.bind('webkitTransitionEnd oTransitionEnd otransitionend transitionend msTransitionEnd', function (evt) { + element.css('transform', 'scale(1)'); + element.attr('mt-scale-start', false); + //$compile(element)(scope); + }); + } + }); + } + } +}());