UNPKG

angular-material-npfixed

Version:

The Angular Material project is an implementation of Material Design in Angular.js. This project provides a set of reusable, well-tested, and accessible Material Design UI components. Angular Material is supported internally at Google by the Angular.js, M

49 lines (41 loc) 1.48 kB
/** * @ngdoc module * @name material.components.showHide */ // Add additional handlers to ng-show and ng-hide that notify directives // contained within that they should recompute their size. // These run in addition to Angular's built-in ng-hide and ng-show directives. angular.module('material.components.showHide', [ 'material.core' ]) .directive('ngShow', createDirective('ngShow', true)) .directive('ngHide', createDirective('ngHide', false)); function createDirective(name, targetValue) { return ['$mdUtil', '$window', function($mdUtil, $window) { return { restrict: 'A', multiElement: true, link: function($scope, $element, $attr) { var unregister = $scope.$on('$md-resize-enable', function() { unregister(); var node = $element[0]; var cachedTransitionStyles = node.nodeType === $window.Node.ELEMENT_NODE ? $window.getComputedStyle(node) : {}; $scope.$watch($attr[name], function(value) { if (!!value === targetValue) { $mdUtil.nextTick(function() { $scope.$broadcast('$md-resize'); }); var opts = { cachedTransitionStyles: cachedTransitionStyles }; $mdUtil.dom.animator.waitTransitionEnd($element, opts).then(function() { $scope.$broadcast('$md-resize'); }); } }); }); } }; }]; }