(function() {
'use strict';

angular
  .module('semantic.ui.elements.button', [])

  .directive('smButton', smButton);

  function smButton() {
    return {
      restrict:'E',
      replace: true,
      transclude: true,
      template: setTemplate,
      link: function(scope, element, attrs, ctrl, transclude) {
        var node = element[0];

        transclude(function(nodes) {
          element.append(nodes);
        });

        if (isAnchorBtn(attrs)) {
          scope.$watch(attrs.ngDisabled, function(isDisabled) {
            element.attr('tabindex', isDisabled ? -1 : 0);
            if (isDisabled) {
              element.addClass('disabled');
            }
          });
        }

        if (attrs.ariaLabel === void 0) {
          element.attr('aria-label', node.textContent.trim());
        }

        scope.$watch(attrs.ngDisabled, function(isDisabled) {
          if (isDisabled) {
            element.addClass('disabled');
          }
        });
      }
    };

    function isAnchorBtn(attrs) {
      return attrs.href !== void 0 || attrs.ngHref !== void 0 || attrs.xlinkHref !== void 0;
    }

    function setTemplate(element, attrs) {
      if (isAnchorBtn(attrs)) {
        return '<a class="ui button"></a>';
      } else {
        return '<button class="ui button"></button>';
      }
    }
  }

})();

@@ -113,16 +113,55 @@
 tton);%0A%0A
+  smButton%5B'$inject'%5D = %5B'$animate'%5D;%0A%0A
   functi
@@ -172,16 +172,24 @@
 mButton(
+$animate
 ) %7B%0A    
@@ -406,16 +406,23 @@
 nsclude(
+scope, 
 function
@@ -670,39 +670,40 @@
 %7B%0A              
-element
+$animate
 .addClass('disab
@@ -688,32 +688,41 @@
 nimate.addClass(
+element, 
 'disabled');%0A   
@@ -975,23 +975,24 @@
         
-element
+$animate
 .addClas
@@ -993,16 +993,25 @@
 ddClass(
+element, 
 'disable

Use to manage css classes