diff --git a/app/common/directives/toggle-flag.js b/app/common/directives/toggle-flag.js
index 9c342b0..4a4e454 100644
--- a/app/common/directives/toggle-flag.js
+++ b/app/common/directives/toggle-flag.js
@@ -1,31 +1,31 @@
-window.angular && (function (angular) {
-    'use strict';
+window.angular && (function(angular) {
+  'use strict';
 
-    angular
-        .module('app.common.directives')
-        .directive('toggleFlag', function ($document) {
-            return {
-                restrict: 'A',
-                link: function (scope, element, attrs) {
+  angular
+    .module('app.common.directives')
+    .directive('toggleFlag', function($document) {
+      return {
+        restrict: 'A',
+        link: function(scope, element, attrs) {
 
-                    function elementClick(e) {
-                        e.stopPropagation();
-                    }
+          function elementClick(e) {
+            e.stopPropagation();
+          }
 
-                    function documentClick(e) {
-                        scope[attrs.toggleFlag] = false;
-                        scope.$apply();
-                    }
+          function documentClick(e) {
+            scope[attrs.toggleFlag] = false;
+            scope.$apply();
+          }
 
-                    element.on('click', elementClick);
-                    $document.on('click', documentClick);
+          element.on('click', elementClick);
+          $document.on('click', documentClick);
 
-                    // remove event handlers when directive is destroyed
-                    scope.$on('$destroy', function () {
-                        element.off('click', elementClick);
-                        $document.off('click', documentClick);
-                    });
-                }
-            };
-        });
-})(window.angular);
\ No newline at end of file
+          // remove event handlers when directive is destroyed
+          scope.$on('$destroy', function() {
+            element.off('click', elementClick);
+            $document.off('click', documentClick);
+          });
+        }
+      };
+    });
+})(window.angular);
