angular-ui-bootstrap-rails 0.7.0.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +1 -1
 - data/lib/angular-ui-bootstrap-rails/version.rb +1 -1
 - data/vendor/assets/javascripts/angular-ui-bootstrap-tpls.js +407 -427
 - data/vendor/assets/javascripts/angular-ui-bootstrap.js +346 -349
 - metadata +8 -8
 
| 
         @@ -82,88 +82,81 @@ angular.module('ui.bootstrap.transition', []) 
     | 
|
| 
       82 
82 
     | 
    
         
             
              return $transition;
         
     | 
| 
       83 
83 
     | 
    
         
             
            }]);
         
     | 
| 
       84 
84 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
            angular.module('ui.bootstrap.collapse',['ui.bootstrap.transition'])
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            // The collapsible directive indicates a block of html that will expand and collapse
         
     | 
| 
       88 
     | 
    
         
            -
            .directive('collapse', ['$transition', function($transition) {
         
     | 
| 
       89 
     | 
    
         
            -
              // CSS transitions don't work with height: auto, so we have to manually change the height to a
         
     | 
| 
       90 
     | 
    
         
            -
              // specific value and then once the animation completes, we can reset the height to auto.
         
     | 
| 
       91 
     | 
    
         
            -
              // Unfortunately if you do this while the CSS transitions are specified (i.e. in the CSS class
         
     | 
| 
       92 
     | 
    
         
            -
              // "collapse") then you trigger a change to height 0 in between.
         
     | 
| 
       93 
     | 
    
         
            -
              // The fix is to remove the "collapse" CSS class while changing the height back to auto - phew!
         
     | 
| 
       94 
     | 
    
         
            -
              var fixUpHeight = function(scope, element, height) {
         
     | 
| 
       95 
     | 
    
         
            -
                // We remove the collapse CSS class to prevent a transition when we change to height: auto
         
     | 
| 
       96 
     | 
    
         
            -
                element.removeClass('collapse');
         
     | 
| 
       97 
     | 
    
         
            -
                element.css({ height: height });
         
     | 
| 
       98 
     | 
    
         
            -
                // It appears that  reading offsetWidth makes the browser realise that we have changed the
         
     | 
| 
       99 
     | 
    
         
            -
                // height already :-/
         
     | 
| 
       100 
     | 
    
         
            -
                var x = element[0].offsetWidth;
         
     | 
| 
       101 
     | 
    
         
            -
                element.addClass('collapse');
         
     | 
| 
       102 
     | 
    
         
            -
              };
         
     | 
| 
      
 85 
     | 
    
         
            +
            angular.module('ui.bootstrap.collapse', ['ui.bootstrap.transition'])
         
     | 
| 
       103 
86 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
               
     | 
| 
       105 
     | 
    
         
            -
                link: function(scope, element, attrs) {
         
     | 
| 
      
 87 
     | 
    
         
            +
              .directive('collapse', ['$transition', function ($transition, $timeout) {
         
     | 
| 
       106 
88 
     | 
    
         | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                   
     | 
| 
      
 89 
     | 
    
         
            +
                return {
         
     | 
| 
      
 90 
     | 
    
         
            +
                  link: function (scope, element, attrs) {
         
     | 
| 
       109 
91 
     | 
    
         | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
                     
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
                     
     | 
| 
       114 
     | 
    
         
            -
                       
     | 
| 
      
 92 
     | 
    
         
            +
                    var initialAnimSkip = true;
         
     | 
| 
      
 93 
     | 
    
         
            +
                    var currentTransition;
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                    function doTransition(change) {
         
     | 
| 
      
 96 
     | 
    
         
            +
                      var newTransition = $transition(element, change);
         
     | 
| 
      
 97 
     | 
    
         
            +
                      if (currentTransition) {
         
     | 
| 
      
 98 
     | 
    
         
            +
                        currentTransition.cancel();
         
     | 
| 
      
 99 
     | 
    
         
            +
                      }
         
     | 
| 
      
 100 
     | 
    
         
            +
                      currentTransition = newTransition;
         
     | 
| 
      
 101 
     | 
    
         
            +
                      newTransition.then(newTransitionDone, newTransitionDone);
         
     | 
| 
      
 102 
     | 
    
         
            +
                      return newTransition;
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                      function newTransitionDone() {
         
     | 
| 
      
 105 
     | 
    
         
            +
                        // Make sure it's this transition, otherwise, leave it alone.
         
     | 
| 
      
 106 
     | 
    
         
            +
                        if (currentTransition === newTransition) {
         
     | 
| 
      
 107 
     | 
    
         
            +
                          currentTransition = undefined;
         
     | 
| 
      
 108 
     | 
    
         
            +
                        }
         
     | 
| 
      
 109 
     | 
    
         
            +
                      }
         
     | 
| 
       115 
110 
     | 
    
         
             
                    }
         
     | 
| 
       116 
     | 
    
         
            -
                  });
         
     | 
| 
       117 
     | 
    
         
            -
                  
         
     | 
| 
       118 
111 
     | 
    
         | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
      
 112 
     | 
    
         
            +
                    function expand() {
         
     | 
| 
      
 113 
     | 
    
         
            +
                      if (initialAnimSkip) {
         
     | 
| 
      
 114 
     | 
    
         
            +
                        initialAnimSkip = false;
         
     | 
| 
      
 115 
     | 
    
         
            +
                        expandDone();
         
     | 
| 
      
 116 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 117 
     | 
    
         
            +
                        element.removeClass('collapse').addClass('collapsing');
         
     | 
| 
      
 118 
     | 
    
         
            +
                        doTransition({ height: element[0].scrollHeight + 'px' }).then(expandDone);
         
     | 
| 
      
 119 
     | 
    
         
            +
                      }
         
     | 
| 
       123 
120 
     | 
    
         
             
                    }
         
     | 
| 
       124 
     | 
    
         
            -
                    currentTransition = $transition(element,change);
         
     | 
| 
       125 
     | 
    
         
            -
                    currentTransition.then(
         
     | 
| 
       126 
     | 
    
         
            -
                      function() { currentTransition = undefined; },
         
     | 
| 
       127 
     | 
    
         
            -
                      function() { currentTransition = undefined; }
         
     | 
| 
       128 
     | 
    
         
            -
                    );
         
     | 
| 
       129 
     | 
    
         
            -
                    return currentTransition;
         
     | 
| 
       130 
     | 
    
         
            -
                  };
         
     | 
| 
       131 
121 
     | 
    
         | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
                       
     | 
| 
       135 
     | 
    
         
            -
                       
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
      
 122 
     | 
    
         
            +
                    function expandDone() {
         
     | 
| 
      
 123 
     | 
    
         
            +
                      element.removeClass('collapsing');
         
     | 
| 
      
 124 
     | 
    
         
            +
                      element.addClass('collapse in');
         
     | 
| 
      
 125 
     | 
    
         
            +
                      element.css({height: 'auto'});
         
     | 
| 
      
 126 
     | 
    
         
            +
                    }
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                    function collapse() {
         
     | 
| 
      
 129 
     | 
    
         
            +
                      if (initialAnimSkip) {
         
     | 
| 
      
 130 
     | 
    
         
            +
                        initialAnimSkip = false;
         
     | 
| 
      
 131 
     | 
    
         
            +
                        collapseDone();
         
     | 
| 
      
 132 
     | 
    
         
            +
                        element.css({height: 0});
         
     | 
| 
      
 133 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 134 
     | 
    
         
            +
                        // CSS transitions don't work with height: auto, so we have to manually change the height to a specific value
         
     | 
| 
      
 135 
     | 
    
         
            +
                        element.css({ height: element[0].scrollHeight + 'px' });
         
     | 
| 
      
 136 
     | 
    
         
            +
                        //trigger reflow so a browser relaizes that height was updated from auto to a specific value
         
     | 
| 
      
 137 
     | 
    
         
            +
                        var x = element[0].offsetWidth;
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                        element.removeClass('collapse in').addClass('collapsing');
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                        doTransition({ height: 0 }).then(collapseDone);
         
     | 
| 
       138 
142 
     | 
    
         
             
                      }
         
     | 
| 
       139 
     | 
    
         
            -
                    } else {
         
     | 
| 
       140 
     | 
    
         
            -
                      doTransition({ height : element[0].scrollHeight + 'px' })
         
     | 
| 
       141 
     | 
    
         
            -
                      .then(function() {
         
     | 
| 
       142 
     | 
    
         
            -
                        // This check ensures that we don't accidentally update the height if the user has closed
         
     | 
| 
       143 
     | 
    
         
            -
                        // the group while the animation was still running
         
     | 
| 
       144 
     | 
    
         
            -
                        if ( !isCollapsed ) {
         
     | 
| 
       145 
     | 
    
         
            -
                          fixUpHeight(scope, element, 'auto');
         
     | 
| 
       146 
     | 
    
         
            -
                          element.addClass('in');
         
     | 
| 
       147 
     | 
    
         
            -
                        }
         
     | 
| 
       148 
     | 
    
         
            -
                      });
         
     | 
| 
       149 
143 
     | 
    
         
             
                    }
         
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
             
     | 
| 
       154 
     | 
    
         
            -
                    isCollapsed = true;
         
     | 
| 
       155 
     | 
    
         
            -
                    element.removeClass('in');
         
     | 
| 
       156 
     | 
    
         
            -
                    if (initialAnimSkip) {
         
     | 
| 
       157 
     | 
    
         
            -
                      initialAnimSkip = false;
         
     | 
| 
       158 
     | 
    
         
            -
                      fixUpHeight(scope, element, 0);
         
     | 
| 
       159 
     | 
    
         
            -
                    } else {
         
     | 
| 
       160 
     | 
    
         
            -
                      fixUpHeight(scope, element, element[0].scrollHeight + 'px');
         
     | 
| 
       161 
     | 
    
         
            -
                      doTransition({'height':'0'});
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                    function collapseDone() {
         
     | 
| 
      
 146 
     | 
    
         
            +
                      element.removeClass('collapsing');
         
     | 
| 
      
 147 
     | 
    
         
            +
                      element.addClass('collapse');
         
     | 
| 
       162 
148 
     | 
    
         
             
                    }
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
             
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                    scope.$watch(attrs.collapse, function (shouldCollapse) {
         
     | 
| 
      
 151 
     | 
    
         
            +
                      if (shouldCollapse) {
         
     | 
| 
      
 152 
     | 
    
         
            +
                        collapse();
         
     | 
| 
      
 153 
     | 
    
         
            +
                      } else {
         
     | 
| 
      
 154 
     | 
    
         
            +
                        expand();
         
     | 
| 
      
 155 
     | 
    
         
            +
                      }
         
     | 
| 
      
 156 
     | 
    
         
            +
                    });
         
     | 
| 
      
 157 
     | 
    
         
            +
                  }
         
     | 
| 
      
 158 
     | 
    
         
            +
                };
         
     | 
| 
      
 159 
     | 
    
         
            +
              }]);
         
     | 
| 
       167 
160 
     | 
    
         | 
| 
       168 
161 
     | 
    
         
             
            angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse'])
         
     | 
| 
       169 
162 
     | 
    
         | 
| 
         @@ -176,9 +169,6 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) 
     | 
|
| 
       176 
169 
     | 
    
         
             
              // This array keeps track of the accordion groups
         
     | 
| 
       177 
170 
     | 
    
         
             
              this.groups = [];
         
     | 
| 
       178 
171 
     | 
    
         | 
| 
       179 
     | 
    
         
            -
              // Keep reference to user's scope to properly assign `is-open`
         
     | 
| 
       180 
     | 
    
         
            -
              this.scope = $scope;
         
     | 
| 
       181 
     | 
    
         
            -
             
     | 
| 
       182 
172 
     | 
    
         
             
              // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to
         
     | 
| 
       183 
173 
     | 
    
         
             
              this.closeOthers = function(openGroup) {
         
     | 
| 
       184 
174 
     | 
    
         
             
                var closeOthers = angular.isDefined($attrs.closeOthers) ? $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;
         
     | 
| 
         @@ -224,7 +214,7 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) 
     | 
|
| 
       224 
214 
     | 
    
         
             
            })
         
     | 
| 
       225 
215 
     | 
    
         | 
| 
       226 
216 
     | 
    
         
             
            // The accordion-group directive indicates a block of html that will expand and collapse in an accordion
         
     | 
| 
       227 
     | 
    
         
            -
            .directive('accordionGroup', ['$parse',  
     | 
| 
      
 217 
     | 
    
         
            +
            .directive('accordionGroup', ['$parse', function($parse) {
         
     | 
| 
       228 
218 
     | 
    
         
             
              return {
         
     | 
| 
       229 
219 
     | 
    
         
             
                require:'^accordion',         // We need this directive to be inside an accordion
         
     | 
| 
       230 
220 
     | 
    
         
             
                restrict:'EA',
         
     | 
| 
         @@ -232,11 +222,11 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) 
     | 
|
| 
       232 
222 
     | 
    
         
             
                replace: true,                // The element containing the directive will be replaced with the template
         
     | 
| 
       233 
223 
     | 
    
         
             
                templateUrl:'template/accordion/accordion-group.html',
         
     | 
| 
       234 
224 
     | 
    
         
             
                scope:{ heading:'@' },        // Create an isolated scope and interpolate the heading attribute onto this scope
         
     | 
| 
       235 
     | 
    
         
            -
                controller:  
     | 
| 
      
 225 
     | 
    
         
            +
                controller: function() {
         
     | 
| 
       236 
226 
     | 
    
         
             
                  this.setHeading = function(element) {
         
     | 
| 
       237 
227 
     | 
    
         
             
                    this.heading = element;
         
     | 
| 
       238 
228 
     | 
    
         
             
                  };
         
     | 
| 
       239 
     | 
    
         
            -
                } 
     | 
| 
      
 229 
     | 
    
         
            +
                },
         
     | 
| 
       240 
230 
     | 
    
         
             
                link: function(scope, element, attrs, accordionCtrl) {
         
     | 
| 
       241 
231 
     | 
    
         
             
                  var getIsOpen, setIsOpen;
         
     | 
| 
       242 
232 
     | 
    
         | 
| 
         @@ -248,7 +238,7 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) 
     | 
|
| 
       248 
238 
     | 
    
         
             
                    getIsOpen = $parse(attrs.isOpen);
         
     | 
| 
       249 
239 
     | 
    
         
             
                    setIsOpen = getIsOpen.assign;
         
     | 
| 
       250 
240 
     | 
    
         | 
| 
       251 
     | 
    
         
            -
                     
     | 
| 
      
 241 
     | 
    
         
            +
                    scope.$parent.$watch(getIsOpen, function(value) {
         
     | 
| 
       252 
242 
     | 
    
         
             
                      scope.isOpen = !!value;
         
     | 
| 
       253 
243 
     | 
    
         
             
                    });
         
     | 
| 
       254 
244 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -258,7 +248,7 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) 
     | 
|
| 
       258 
248 
     | 
    
         
             
                      accordionCtrl.closeOthers(scope);
         
     | 
| 
       259 
249 
     | 
    
         
             
                    }
         
     | 
| 
       260 
250 
     | 
    
         
             
                    if ( setIsOpen ) {
         
     | 
| 
       261 
     | 
    
         
            -
                      setIsOpen( 
     | 
| 
      
 251 
     | 
    
         
            +
                      setIsOpen(scope.$parent, value);
         
     | 
| 
       262 
252 
     | 
    
         
             
                    }
         
     | 
| 
       263 
253 
     | 
    
         
             
                  });
         
     | 
| 
       264 
254 
     | 
    
         
             
                }
         
     | 
| 
         @@ -307,18 +297,22 @@ angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse']) 
     | 
|
| 
       307 
297 
     | 
    
         
             
              };
         
     | 
| 
       308 
298 
     | 
    
         
             
            });
         
     | 
| 
       309 
299 
     | 
    
         | 
| 
       310 
     | 
    
         
            -
            angular.module("ui.bootstrap.alert", []) 
     | 
| 
      
 300 
     | 
    
         
            +
            angular.module("ui.bootstrap.alert", [])
         
     | 
| 
      
 301 
     | 
    
         
            +
             
     | 
| 
      
 302 
     | 
    
         
            +
            .controller('AlertController', ['$scope', '$attrs', function ($scope, $attrs) {
         
     | 
| 
      
 303 
     | 
    
         
            +
              $scope.closeable = 'close' in $attrs;
         
     | 
| 
      
 304 
     | 
    
         
            +
            }])
         
     | 
| 
      
 305 
     | 
    
         
            +
             
     | 
| 
      
 306 
     | 
    
         
            +
            .directive('alert', function () {
         
     | 
| 
       311 
307 
     | 
    
         
             
              return {
         
     | 
| 
       312 
308 
     | 
    
         
             
                restrict:'EA',
         
     | 
| 
      
 309 
     | 
    
         
            +
                controller:'AlertController',
         
     | 
| 
       313 
310 
     | 
    
         
             
                templateUrl:'template/alert/alert.html',
         
     | 
| 
       314 
311 
     | 
    
         
             
                transclude:true,
         
     | 
| 
       315 
312 
     | 
    
         
             
                replace:true,
         
     | 
| 
       316 
313 
     | 
    
         
             
                scope: {
         
     | 
| 
       317 
314 
     | 
    
         
             
                  type: '=',
         
     | 
| 
       318 
315 
     | 
    
         
             
                  close: '&'
         
     | 
| 
       319 
     | 
    
         
            -
                },
         
     | 
| 
       320 
     | 
    
         
            -
                link: function(scope, iElement, iAttrs) {
         
     | 
| 
       321 
     | 
    
         
            -
                  scope.closeable = "close" in iAttrs;
         
     | 
| 
       322 
316 
     | 
    
         
             
                }
         
     | 
| 
       323 
317 
     | 
    
         
             
              };
         
     | 
| 
       324 
318 
     | 
    
         
             
            });
         
     | 
| 
         @@ -340,22 +334,26 @@ angular.module('ui.bootstrap.buttons', []) 
     | 
|
| 
       340 
334 
     | 
    
         
             
              toggleEvent: 'click'
         
     | 
| 
       341 
335 
     | 
    
         
             
            })
         
     | 
| 
       342 
336 
     | 
    
         | 
| 
       343 
     | 
    
         
            -
            . 
     | 
| 
       344 
     | 
    
         
            -
               
     | 
| 
       345 
     | 
    
         
            -
               
     | 
| 
      
 337 
     | 
    
         
            +
            .controller('ButtonsController', ['buttonConfig', function(buttonConfig) {
         
     | 
| 
      
 338 
     | 
    
         
            +
              this.activeClass = buttonConfig.activeClass || 'active';
         
     | 
| 
      
 339 
     | 
    
         
            +
              this.toggleEvent = buttonConfig.toggleEvent || 'click';
         
     | 
| 
      
 340 
     | 
    
         
            +
            }])
         
     | 
| 
       346 
341 
     | 
    
         | 
| 
      
 342 
     | 
    
         
            +
            .directive('btnRadio', function () {
         
     | 
| 
       347 
343 
     | 
    
         
             
              return {
         
     | 
| 
       348 
     | 
    
         
            -
                require: 'ngModel',
         
     | 
| 
       349 
     | 
    
         
            -
                 
     | 
| 
      
 344 
     | 
    
         
            +
                require: ['btnRadio', 'ngModel'],
         
     | 
| 
      
 345 
     | 
    
         
            +
                controller: 'ButtonsController',
         
     | 
| 
      
 346 
     | 
    
         
            +
                link: function (scope, element, attrs, ctrls) {
         
     | 
| 
      
 347 
     | 
    
         
            +
                  var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
         
     | 
| 
       350 
348 
     | 
    
         | 
| 
       351 
349 
     | 
    
         
             
                  //model -> UI
         
     | 
| 
       352 
350 
     | 
    
         
             
                  ngModelCtrl.$render = function () {
         
     | 
| 
       353 
     | 
    
         
            -
                    element.toggleClass(activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio)));
         
     | 
| 
      
 351 
     | 
    
         
            +
                    element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.btnRadio)));
         
     | 
| 
       354 
352 
     | 
    
         
             
                  };
         
     | 
| 
       355 
353 
     | 
    
         | 
| 
       356 
354 
     | 
    
         
             
                  //ui->model
         
     | 
| 
       357 
     | 
    
         
            -
                  element.bind(toggleEvent, function () {
         
     | 
| 
       358 
     | 
    
         
            -
                    if (!element.hasClass(activeClass)) {
         
     | 
| 
      
 355 
     | 
    
         
            +
                  element.bind(buttonsCtrl.toggleEvent, function () {
         
     | 
| 
      
 356 
     | 
    
         
            +
                    if (!element.hasClass(buttonsCtrl.activeClass)) {
         
     | 
| 
       359 
357 
     | 
    
         
             
                      scope.$apply(function () {
         
     | 
| 
       360 
358 
     | 
    
         
             
                        ngModelCtrl.$setViewValue(scope.$eval(attrs.btnRadio));
         
     | 
| 
       361 
359 
     | 
    
         
             
                        ngModelCtrl.$render();
         
     | 
| 
         @@ -364,41 +362,43 @@ angular.module('ui.bootstrap.buttons', []) 
     | 
|
| 
       364 
362 
     | 
    
         
             
                  });
         
     | 
| 
       365 
363 
     | 
    
         
             
                }
         
     | 
| 
       366 
364 
     | 
    
         
             
              };
         
     | 
| 
       367 
     | 
    
         
            -
            } 
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
     | 
    
         
            -
            .directive('btnCheckbox', ['buttonConfig', function (buttonConfig) {
         
     | 
| 
       370 
     | 
    
         
            -
              var activeClass = buttonConfig.activeClass || 'active';
         
     | 
| 
       371 
     | 
    
         
            -
              var toggleEvent = buttonConfig.toggleEvent || 'click';
         
     | 
| 
      
 365 
     | 
    
         
            +
            })
         
     | 
| 
       372 
366 
     | 
    
         | 
| 
      
 367 
     | 
    
         
            +
            .directive('btnCheckbox', function () {
         
     | 
| 
       373 
368 
     | 
    
         
             
              return {
         
     | 
| 
       374 
     | 
    
         
            -
                require: 'ngModel',
         
     | 
| 
       375 
     | 
    
         
            -
                 
     | 
| 
      
 369 
     | 
    
         
            +
                require: ['btnCheckbox', 'ngModel'],
         
     | 
| 
      
 370 
     | 
    
         
            +
                controller: 'ButtonsController',
         
     | 
| 
      
 371 
     | 
    
         
            +
                link: function (scope, element, attrs, ctrls) {
         
     | 
| 
      
 372 
     | 
    
         
            +
                  var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
         
     | 
| 
       376 
373 
     | 
    
         | 
| 
       377 
374 
     | 
    
         
             
                  function getTrueValue() {
         
     | 
| 
       378 
     | 
    
         
            -
                     
     | 
| 
       379 
     | 
    
         
            -
                    return angular.isDefined(trueValue) ? trueValue : true;
         
     | 
| 
      
 375 
     | 
    
         
            +
                    return getCheckboxValue(attrs.btnCheckboxTrue, true);
         
     | 
| 
       380 
376 
     | 
    
         
             
                  }
         
     | 
| 
       381 
377 
     | 
    
         | 
| 
       382 
378 
     | 
    
         
             
                  function getFalseValue() {
         
     | 
| 
       383 
     | 
    
         
            -
                     
     | 
| 
       384 
     | 
    
         
            -
             
     | 
| 
      
 379 
     | 
    
         
            +
                    return getCheckboxValue(attrs.btnCheckboxFalse, false);
         
     | 
| 
      
 380 
     | 
    
         
            +
                  }
         
     | 
| 
      
 381 
     | 
    
         
            +
                  
         
     | 
| 
      
 382 
     | 
    
         
            +
                  function getCheckboxValue(attributeValue, defaultValue) {
         
     | 
| 
      
 383 
     | 
    
         
            +
                    var val = scope.$eval(attributeValue);
         
     | 
| 
      
 384 
     | 
    
         
            +
                    return angular.isDefined(val) ? val : defaultValue;
         
     | 
| 
       385 
385 
     | 
    
         
             
                  }
         
     | 
| 
       386 
386 
     | 
    
         | 
| 
       387 
387 
     | 
    
         
             
                  //model -> UI
         
     | 
| 
       388 
388 
     | 
    
         
             
                  ngModelCtrl.$render = function () {
         
     | 
| 
       389 
     | 
    
         
            -
                    element.toggleClass(activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));
         
     | 
| 
      
 389 
     | 
    
         
            +
                    element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));
         
     | 
| 
       390 
390 
     | 
    
         
             
                  };
         
     | 
| 
       391 
391 
     | 
    
         | 
| 
       392 
392 
     | 
    
         
             
                  //ui->model
         
     | 
| 
       393 
     | 
    
         
            -
                  element.bind(toggleEvent, function () {
         
     | 
| 
      
 393 
     | 
    
         
            +
                  element.bind(buttonsCtrl.toggleEvent, function () {
         
     | 
| 
       394 
394 
     | 
    
         
             
                    scope.$apply(function () {
         
     | 
| 
       395 
     | 
    
         
            -
                      ngModelCtrl.$setViewValue(element.hasClass(activeClass) ? getFalseValue() : getTrueValue());
         
     | 
| 
      
 395 
     | 
    
         
            +
                      ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());
         
     | 
| 
       396 
396 
     | 
    
         
             
                      ngModelCtrl.$render();
         
     | 
| 
       397 
397 
     | 
    
         
             
                    });
         
     | 
| 
       398 
398 
     | 
    
         
             
                  });
         
     | 
| 
       399 
399 
     | 
    
         
             
                }
         
     | 
| 
       400 
400 
     | 
    
         
             
              };
         
     | 
| 
       401 
     | 
    
         
            -
            } 
     | 
| 
      
 401 
     | 
    
         
            +
            });
         
     | 
| 
       402 
402 
     | 
    
         | 
| 
       403 
403 
     | 
    
         
             
            /**
         
     | 
| 
       404 
404 
     | 
    
         
             
            * @ngdoc overview
         
     | 
| 
         @@ -416,6 +416,7 @@ angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition']) 
     | 
|
| 
       416 
416 
     | 
    
         
             
                currentTimeout, isPlaying;
         
     | 
| 
       417 
417 
     | 
    
         
             
              self.currentSlide = null;
         
     | 
| 
       418 
418 
     | 
    
         | 
| 
      
 419 
     | 
    
         
            +
              var destroyed = false;
         
     | 
| 
       419 
420 
     | 
    
         
             
              /* direction: "prev" or "next" */
         
     | 
| 
       420 
421 
     | 
    
         
             
              self.select = function(nextSlide, direction) {
         
     | 
| 
       421 
422 
     | 
    
         
             
                var nextIndex = slides.indexOf(nextSlide);
         
     | 
| 
         @@ -433,6 +434,8 @@ angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition']) 
     | 
|
| 
       433 
434 
     | 
    
         
             
                  }
         
     | 
| 
       434 
435 
     | 
    
         
             
                }
         
     | 
| 
       435 
436 
     | 
    
         
             
                function goNext() {
         
     | 
| 
      
 437 
     | 
    
         
            +
                  // Scope has been destroyed, stop here.
         
     | 
| 
      
 438 
     | 
    
         
            +
                  if (destroyed) { return; }
         
     | 
| 
       436 
439 
     | 
    
         
             
                  //If we have a slide to transition from and we have a transition type and we're allowed, go
         
     | 
| 
       437 
440 
     | 
    
         
             
                  if (self.currentSlide && angular.isString(direction) && !$scope.noTransition && nextSlide.$element) {
         
     | 
| 
       438 
441 
     | 
    
         
             
                    //We shouldn't do class manip in here, but it's the same weird thing bootstrap does. need to fix sometime
         
     | 
| 
         @@ -468,6 +471,9 @@ angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition']) 
     | 
|
| 
       468 
471 
     | 
    
         
             
                  $scope.$currentTransition = null;
         
     | 
| 
       469 
472 
     | 
    
         
             
                }
         
     | 
| 
       470 
473 
     | 
    
         
             
              };
         
     | 
| 
      
 474 
     | 
    
         
            +
              $scope.$on('$destroy', function () {
         
     | 
| 
      
 475 
     | 
    
         
            +
                destroyed = true;
         
     | 
| 
      
 476 
     | 
    
         
            +
              });
         
     | 
| 
       471 
477 
     | 
    
         | 
| 
       472 
478 
     | 
    
         
             
              /* Allow outside people to call indexOf on slides array */
         
     | 
| 
       473 
479 
     | 
    
         
             
              self.indexOfSlide = function(slide) {
         
     | 
| 
         @@ -505,23 +511,32 @@ angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition']) 
     | 
|
| 
       505 
511 
     | 
    
         
             
              };
         
     | 
| 
       506 
512 
     | 
    
         | 
| 
       507 
513 
     | 
    
         
             
              $scope.$watch('interval', restartTimer);
         
     | 
| 
      
 514 
     | 
    
         
            +
              $scope.$on('$destroy', resetTimer);
         
     | 
| 
      
 515 
     | 
    
         
            +
             
     | 
| 
       508 
516 
     | 
    
         
             
              function restartTimer() {
         
     | 
| 
      
 517 
     | 
    
         
            +
                resetTimer();
         
     | 
| 
      
 518 
     | 
    
         
            +
                var interval = +$scope.interval;
         
     | 
| 
      
 519 
     | 
    
         
            +
                if (!isNaN(interval) && interval>=0) {
         
     | 
| 
      
 520 
     | 
    
         
            +
                  currentTimeout = $timeout(timerFn, interval);
         
     | 
| 
      
 521 
     | 
    
         
            +
                }
         
     | 
| 
      
 522 
     | 
    
         
            +
              }
         
     | 
| 
      
 523 
     | 
    
         
            +
             
     | 
| 
      
 524 
     | 
    
         
            +
              function resetTimer() {
         
     | 
| 
       509 
525 
     | 
    
         
             
                if (currentTimeout) {
         
     | 
| 
       510 
526 
     | 
    
         
             
                  $timeout.cancel(currentTimeout);
         
     | 
| 
      
 527 
     | 
    
         
            +
                  currentTimeout = null;
         
     | 
| 
       511 
528 
     | 
    
         
             
                }
         
     | 
| 
       512 
     | 
    
         
            -
             
     | 
| 
       513 
     | 
    
         
            -
             
     | 
| 
       514 
     | 
    
         
            -
             
     | 
| 
       515 
     | 
    
         
            -
             
     | 
| 
       516 
     | 
    
         
            -
                   
     | 
| 
       517 
     | 
    
         
            -
             
     | 
| 
       518 
     | 
    
         
            -
             
     | 
| 
       519 
     | 
    
         
            -
             
     | 
| 
       520 
     | 
    
         
            -
                var interval = +$scope.interval;
         
     | 
| 
       521 
     | 
    
         
            -
                if (!isNaN(interval) && interval>=0) {
         
     | 
| 
       522 
     | 
    
         
            -
                  currentTimeout = $timeout(go, interval);
         
     | 
| 
      
 529 
     | 
    
         
            +
              }
         
     | 
| 
      
 530 
     | 
    
         
            +
             
     | 
| 
      
 531 
     | 
    
         
            +
              function timerFn() {
         
     | 
| 
      
 532 
     | 
    
         
            +
                if (isPlaying) {
         
     | 
| 
      
 533 
     | 
    
         
            +
                  $scope.next();
         
     | 
| 
      
 534 
     | 
    
         
            +
                  restartTimer();
         
     | 
| 
      
 535 
     | 
    
         
            +
                } else {
         
     | 
| 
      
 536 
     | 
    
         
            +
                  $scope.pause();
         
     | 
| 
       523 
537 
     | 
    
         
             
                }
         
     | 
| 
       524 
538 
     | 
    
         
             
              }
         
     | 
| 
      
 539 
     | 
    
         
            +
             
     | 
| 
       525 
540 
     | 
    
         
             
              $scope.play = function() {
         
     | 
| 
       526 
541 
     | 
    
         
             
                if (!isPlaying) {
         
     | 
| 
       527 
542 
     | 
    
         
             
                  isPlaying = true;
         
     | 
| 
         @@ -531,9 +546,7 @@ angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition']) 
     | 
|
| 
       531 
546 
     | 
    
         
             
              $scope.pause = function() {
         
     | 
| 
       532 
547 
     | 
    
         
             
                if (!$scope.noPause) {
         
     | 
| 
       533 
548 
     | 
    
         
             
                  isPlaying = false;
         
     | 
| 
       534 
     | 
    
         
            -
                   
     | 
| 
       535 
     | 
    
         
            -
                    $timeout.cancel(currentTimeout);
         
     | 
| 
       536 
     | 
    
         
            -
                  }
         
     | 
| 
      
 549 
     | 
    
         
            +
                  resetTimer();
         
     | 
| 
       537 
550 
     | 
    
         
             
                }
         
     | 
| 
       538 
551 
     | 
    
         
             
              };
         
     | 
| 
       539 
552 
     | 
    
         | 
| 
         @@ -565,6 +578,7 @@ angular.module('ui.bootstrap.carousel', ['ui.bootstrap.transition']) 
     | 
|
| 
       565 
578 
     | 
    
         
             
                  currentIndex--;
         
     | 
| 
       566 
579 
     | 
    
         
             
                }
         
     | 
| 
       567 
580 
     | 
    
         
             
              };
         
     | 
| 
      
 581 
     | 
    
         
            +
             
     | 
| 
       568 
582 
     | 
    
         
             
            }])
         
     | 
| 
       569 
583 
     | 
    
         | 
| 
       570 
584 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -1032,7 +1046,7 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.position']) 
     | 
|
| 
       1032 
1046 
     | 
    
         | 
| 
       1033 
1047 
     | 
    
         
             
                  scope.select = function( date ) {
         
     | 
| 
       1034 
1048 
     | 
    
         
             
                    if ( mode === 0 ) {
         
     | 
| 
       1035 
     | 
    
         
            -
                      var dt = new Date( ngModel.$modelValue );
         
     | 
| 
      
 1049 
     | 
    
         
            +
                      var dt = ngModel.$modelValue ? new Date( ngModel.$modelValue ) : new Date(0, 0, 0, 0, 0, 0, 0);
         
     | 
| 
       1036 
1050 
     | 
    
         
             
                      dt.setFullYear( date.getFullYear(), date.getMonth(), date.getDate() );
         
     | 
| 
       1037 
1051 
     | 
    
         
             
                      ngModel.$setViewValue( dt );
         
     | 
| 
       1038 
1052 
     | 
    
         
             
                      refill( true );
         
     | 
| 
         @@ -1073,7 +1087,8 @@ angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.position']) 
     | 
|
| 
       1073 
1087 
     | 
    
         
             
              clearText: 'Clear',
         
     | 
| 
       1074 
1088 
     | 
    
         
             
              closeText: 'Done',
         
     | 
| 
       1075 
1089 
     | 
    
         
             
              closeOnDateSelection: true,
         
     | 
| 
       1076 
     | 
    
         
            -
              appendToBody: false
         
     | 
| 
      
 1090 
     | 
    
         
            +
              appendToBody: false,
         
     | 
| 
      
 1091 
     | 
    
         
            +
              showButtonBar: true
         
     | 
| 
       1077 
1092 
     | 
    
         
             
            })
         
     | 
| 
       1078 
1093 
     | 
    
         | 
| 
       1079 
1094 
     | 
    
         
             
            .directive('datepickerPopup', ['$compile', '$parse', '$document', '$position', 'dateFilter', 'datepickerPopupConfig', 'datepickerConfig',
         
     | 
| 
         @@ -1082,19 +1097,20 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon 
     | 
|
| 
       1082 
1097 
     | 
    
         
             
                restrict: 'EA',
         
     | 
| 
       1083 
1098 
     | 
    
         
             
                require: 'ngModel',
         
     | 
| 
       1084 
1099 
     | 
    
         
             
                link: function(originalScope, element, attrs, ngModel) {
         
     | 
| 
       1085 
     | 
    
         
            -
                  var  
     | 
| 
      
 1100 
     | 
    
         
            +
                  var scope = originalScope.$new(), // create a child scope so we are not polluting original one
         
     | 
| 
      
 1101 
     | 
    
         
            +
                      dateFormat,
         
     | 
| 
      
 1102 
     | 
    
         
            +
                      closeOnDateSelection = angular.isDefined(attrs.closeOnDateSelection) ? originalScope.$eval(attrs.closeOnDateSelection) : datepickerPopupConfig.closeOnDateSelection,
         
     | 
| 
      
 1103 
     | 
    
         
            +
                      appendToBody = angular.isDefined(attrs.datepickerAppendToBody) ? originalScope.$eval(attrs.datepickerAppendToBody) : datepickerPopupConfig.appendToBody;
         
     | 
| 
      
 1104 
     | 
    
         
            +
             
     | 
| 
       1086 
1105 
     | 
    
         
             
                  attrs.$observe('datepickerPopup', function(value) {
         
     | 
| 
       1087 
1106 
     | 
    
         
             
                      dateFormat = value || datepickerPopupConfig.dateFormat;
         
     | 
| 
       1088 
1107 
     | 
    
         
             
                      ngModel.$render();
         
     | 
| 
       1089 
1108 
     | 
    
         
             
                  });
         
     | 
| 
       1090 
1109 
     | 
    
         | 
| 
       1091 
     | 
    
         
            -
                   
     | 
| 
       1092 
     | 
    
         
            -
                  var appendToBody = angular.isDefined(attrs.datepickerAppendToBody) ? originalScope.$eval(attrs.datepickerAppendToBody) : datepickerPopupConfig.appendToBody;
         
     | 
| 
       1093 
     | 
    
         
            -
             
     | 
| 
       1094 
     | 
    
         
            -
                  // create a child scope for the datepicker directive so we are not polluting original scope
         
     | 
| 
       1095 
     | 
    
         
            -
                  var scope = originalScope.$new();
         
     | 
| 
      
 1110 
     | 
    
         
            +
                  scope.showButtonBar = angular.isDefined(attrs.showButtonBar) ? originalScope.$eval(attrs.showButtonBar) : datepickerPopupConfig.showButtonBar;
         
     | 
| 
       1096 
1111 
     | 
    
         | 
| 
       1097 
1112 
     | 
    
         
             
                  originalScope.$on('$destroy', function() {
         
     | 
| 
      
 1113 
     | 
    
         
            +
                    $popup.remove();
         
     | 
| 
       1098 
1114 
     | 
    
         
             
                    scope.$destroy();
         
     | 
| 
       1099 
1115 
     | 
    
         
             
                  });
         
     | 
| 
       1100 
1116 
     | 
    
         | 
| 
         @@ -1180,7 +1196,10 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon 
     | 
|
| 
       1180 
1196 
     | 
    
         
             
                  ngModel.$parsers.unshift(parseDate);
         
     | 
| 
       1181 
1197 
     | 
    
         | 
| 
       1182 
1198 
     | 
    
         
             
                  // Inner change
         
     | 
| 
       1183 
     | 
    
         
            -
                  scope.dateSelection = function() {
         
     | 
| 
      
 1199 
     | 
    
         
            +
                  scope.dateSelection = function(dt) {
         
     | 
| 
      
 1200 
     | 
    
         
            +
                    if (angular.isDefined(dt)) {
         
     | 
| 
      
 1201 
     | 
    
         
            +
                      scope.date = dt;
         
     | 
| 
      
 1202 
     | 
    
         
            +
                    }
         
     | 
| 
       1184 
1203 
     | 
    
         
             
                    ngModel.$setViewValue(scope.date);
         
     | 
| 
       1185 
1204 
     | 
    
         
             
                    ngModel.$render();
         
     | 
| 
       1186 
1205 
     | 
    
         | 
| 
         @@ -1191,7 +1210,7 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon 
     | 
|
| 
       1191 
1210 
     | 
    
         | 
| 
       1192 
1211 
     | 
    
         
             
                  element.bind('input change keyup', function() {
         
     | 
| 
       1193 
1212 
     | 
    
         
             
                    scope.$apply(function() {
         
     | 
| 
       1194 
     | 
    
         
            -
                       
     | 
| 
      
 1213 
     | 
    
         
            +
                      scope.date = ngModel.$modelValue;
         
     | 
| 
       1195 
1214 
     | 
    
         
             
                    });
         
     | 
| 
       1196 
1215 
     | 
    
         
             
                  });
         
     | 
| 
       1197 
1216 
     | 
    
         | 
| 
         @@ -1199,14 +1218,8 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon 
     | 
|
| 
       1199 
1218 
     | 
    
         
             
                  ngModel.$render = function() {
         
     | 
| 
       1200 
1219 
     | 
    
         
             
                    var date = ngModel.$viewValue ? dateFilter(ngModel.$viewValue, dateFormat) : '';
         
     | 
| 
       1201 
1220 
     | 
    
         
             
                    element.val(date);
         
     | 
| 
       1202 
     | 
    
         
            -
             
     | 
| 
       1203 
     | 
    
         
            -
                    updateCalendar();
         
     | 
| 
       1204 
     | 
    
         
            -
                  };
         
     | 
| 
       1205 
     | 
    
         
            -
             
     | 
| 
       1206 
     | 
    
         
            -
                  function updateCalendar() {
         
     | 
| 
       1207 
1221 
     | 
    
         
             
                    scope.date = ngModel.$modelValue;
         
     | 
| 
       1208 
     | 
    
         
            -
             
     | 
| 
       1209 
     | 
    
         
            -
                  }
         
     | 
| 
      
 1222 
     | 
    
         
            +
                  };
         
     | 
| 
       1210 
1223 
     | 
    
         | 
| 
       1211 
1224 
     | 
    
         
             
                  function addWatchableAttribute(attribute, scopeProperty, datepickerAttribute) {
         
     | 
| 
       1212 
1225 
     | 
    
         
             
                    if (attribute) {
         
     | 
| 
         @@ -1256,13 +1269,11 @@ function ($compile, $parse, $document, $position, dateFilter, datepickerPopupCon 
     | 
|
| 
       1256 
1269 
     | 
    
         
             
                    }
         
     | 
| 
       1257 
1270 
     | 
    
         
             
                  });
         
     | 
| 
       1258 
1271 
     | 
    
         | 
| 
       1259 
     | 
    
         
            -
                  var $setModelValue = $parse(attrs.ngModel).assign;
         
     | 
| 
       1260 
     | 
    
         
            -
             
     | 
| 
       1261 
1272 
     | 
    
         
             
                  scope.today = function() {
         
     | 
| 
       1262 
     | 
    
         
            -
                     
     | 
| 
      
 1273 
     | 
    
         
            +
                    scope.dateSelection(new Date());
         
     | 
| 
       1263 
1274 
     | 
    
         
             
                  };
         
     | 
| 
       1264 
1275 
     | 
    
         
             
                  scope.clear = function() {
         
     | 
| 
       1265 
     | 
    
         
            -
                     
     | 
| 
      
 1276 
     | 
    
         
            +
                    scope.dateSelection(null);
         
     | 
| 
       1266 
1277 
     | 
    
         
             
                  };
         
     | 
| 
       1267 
1278 
     | 
    
         | 
| 
       1268 
1279 
     | 
    
         
             
                  var $popup = $compile(popupEl)(scope);
         
     | 
| 
         @@ -1407,7 +1418,10 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1407 
1418 
     | 
    
         
             
                  restrict: 'EA',
         
     | 
| 
       1408 
1419 
     | 
    
         
             
                  replace: true,
         
     | 
| 
       1409 
1420 
     | 
    
         
             
                  templateUrl: 'template/modal/backdrop.html',
         
     | 
| 
       1410 
     | 
    
         
            -
                  link: function (scope 
     | 
| 
      
 1421 
     | 
    
         
            +
                  link: function (scope) {
         
     | 
| 
      
 1422 
     | 
    
         
            +
             
     | 
| 
      
 1423 
     | 
    
         
            +
                    scope.animate = false;
         
     | 
| 
      
 1424 
     | 
    
         
            +
             
     | 
| 
       1411 
1425 
     | 
    
         
             
                    //trigger CSS transitions
         
     | 
| 
       1412 
1426 
     | 
    
         
             
                    $timeout(function () {
         
     | 
| 
       1413 
1427 
     | 
    
         
             
                      scope.animate = true;
         
     | 
| 
         @@ -1428,9 +1442,11 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1428 
1442 
     | 
    
         
             
                  link: function (scope, element, attrs) {
         
     | 
| 
       1429 
1443 
     | 
    
         
             
                    scope.windowClass = attrs.windowClass || '';
         
     | 
| 
       1430 
1444 
     | 
    
         | 
| 
       1431 
     | 
    
         
            -
                    //trigger CSS transitions
         
     | 
| 
       1432 
1445 
     | 
    
         
             
                    $timeout(function () {
         
     | 
| 
      
 1446 
     | 
    
         
            +
                      // trigger CSS transitions
         
     | 
| 
       1433 
1447 
     | 
    
         
             
                      scope.animate = true;
         
     | 
| 
      
 1448 
     | 
    
         
            +
                      // focus a freshly-opened modal
         
     | 
| 
      
 1449 
     | 
    
         
            +
                      element[0].focus();
         
     | 
| 
       1434 
1450 
     | 
    
         
             
                    });
         
     | 
| 
       1435 
1451 
     | 
    
         | 
| 
       1436 
1452 
     | 
    
         
             
                    scope.close = function (evt) {
         
     | 
| 
         @@ -1448,9 +1464,10 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1448 
1464 
     | 
    
         
             
              .factory('$modalStack', ['$document', '$compile', '$rootScope', '$$stackedMap',
         
     | 
| 
       1449 
1465 
     | 
    
         
             
                function ($document, $compile, $rootScope, $$stackedMap) {
         
     | 
| 
       1450 
1466 
     | 
    
         | 
| 
      
 1467 
     | 
    
         
            +
                  var OPENED_MODAL_CLASS = 'modal-open';
         
     | 
| 
      
 1468 
     | 
    
         
            +
             
     | 
| 
       1451 
1469 
     | 
    
         
             
                  var backdropjqLiteEl, backdropDomEl;
         
     | 
| 
       1452 
1470 
     | 
    
         
             
                  var backdropScope = $rootScope.$new(true);
         
     | 
| 
       1453 
     | 
    
         
            -
                  var body = $document.find('body').eq(0);
         
     | 
| 
       1454 
1471 
     | 
    
         
             
                  var openedWindows = $$stackedMap.createNew();
         
     | 
| 
       1455 
1472 
     | 
    
         
             
                  var $modalStack = {};
         
     | 
| 
       1456 
1473 
     | 
    
         | 
| 
         @@ -1465,16 +1482,13 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1465 
1482 
     | 
    
         
             
                    return topBackdropIndex;
         
     | 
| 
       1466 
1483 
     | 
    
         
             
                  }
         
     | 
| 
       1467 
1484 
     | 
    
         | 
| 
       1468 
     | 
    
         
            -
                  $rootScope.$watch(openedWindows.length, function(noOfModals){
         
     | 
| 
       1469 
     | 
    
         
            -
                    body.toggleClass('modal-open', openedWindows.length() > 0);
         
     | 
| 
       1470 
     | 
    
         
            -
                  });
         
     | 
| 
       1471 
     | 
    
         
            -
             
     | 
| 
       1472 
1485 
     | 
    
         
             
                  $rootScope.$watch(backdropIndex, function(newBackdropIndex){
         
     | 
| 
       1473 
1486 
     | 
    
         
             
                    backdropScope.index = newBackdropIndex;
         
     | 
| 
       1474 
1487 
     | 
    
         
             
                  });
         
     | 
| 
       1475 
1488 
     | 
    
         | 
| 
       1476 
1489 
     | 
    
         
             
                  function removeModalWindow(modalInstance) {
         
     | 
| 
       1477 
1490 
     | 
    
         | 
| 
      
 1491 
     | 
    
         
            +
                    var body = $document.find('body').eq(0);
         
     | 
| 
       1478 
1492 
     | 
    
         
             
                    var modalWindow = openedWindows.get(modalInstance).value;
         
     | 
| 
       1479 
1493 
     | 
    
         | 
| 
       1480 
1494 
     | 
    
         
             
                    //clean up the stack
         
     | 
| 
         @@ -1482,6 +1496,7 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1482 
1496 
     | 
    
         | 
| 
       1483 
1497 
     | 
    
         
             
                    //remove window DOM element
         
     | 
| 
       1484 
1498 
     | 
    
         
             
                    modalWindow.modalDomEl.remove();
         
     | 
| 
      
 1499 
     | 
    
         
            +
                    body.toggleClass(OPENED_MODAL_CLASS, openedWindows.length() > 0);
         
     | 
| 
       1485 
1500 
     | 
    
         | 
| 
       1486 
1501 
     | 
    
         
             
                    //remove backdrop if no longer needed
         
     | 
| 
       1487 
1502 
     | 
    
         
             
                    if (backdropDomEl && backdropIndex() == -1) {
         
     | 
| 
         @@ -1515,6 +1530,14 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1515 
1530 
     | 
    
         
             
                      keyboard: modal.keyboard
         
     | 
| 
       1516 
1531 
     | 
    
         
             
                    });
         
     | 
| 
       1517 
1532 
     | 
    
         | 
| 
      
 1533 
     | 
    
         
            +
                    var body = $document.find('body').eq(0);
         
     | 
| 
      
 1534 
     | 
    
         
            +
             
     | 
| 
      
 1535 
     | 
    
         
            +
                    if (backdropIndex() >= 0 && !backdropDomEl) {
         
     | 
| 
      
 1536 
     | 
    
         
            +
                        backdropjqLiteEl = angular.element('<div modal-backdrop></div>');
         
     | 
| 
      
 1537 
     | 
    
         
            +
                        backdropDomEl = $compile(backdropjqLiteEl)(backdropScope);
         
     | 
| 
      
 1538 
     | 
    
         
            +
                        body.append(backdropDomEl);
         
     | 
| 
      
 1539 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1540 
     | 
    
         
            +
                      
         
     | 
| 
       1518 
1541 
     | 
    
         
             
                    var angularDomEl = angular.element('<div modal-window></div>');
         
     | 
| 
       1519 
1542 
     | 
    
         
             
                    angularDomEl.attr('window-class', modal.windowClass);
         
     | 
| 
       1520 
1543 
     | 
    
         
             
                    angularDomEl.attr('index', openedWindows.length() - 1);
         
     | 
| 
         @@ -1523,12 +1546,7 @@ angular.module('ui.bootstrap.modal', []) 
     | 
|
| 
       1523 
1546 
     | 
    
         
             
                    var modalDomEl = $compile(angularDomEl)(modal.scope);
         
     | 
| 
       1524 
1547 
     | 
    
         
             
                    openedWindows.top().value.modalDomEl = modalDomEl;
         
     | 
| 
       1525 
1548 
     | 
    
         
             
                    body.append(modalDomEl);
         
     | 
| 
       1526 
     | 
    
         
            -
             
     | 
| 
       1527 
     | 
    
         
            -
                    if (backdropIndex() >= 0 && !backdropDomEl) {
         
     | 
| 
       1528 
     | 
    
         
            -
                        backdropjqLiteEl = angular.element('<div modal-backdrop></div>');
         
     | 
| 
       1529 
     | 
    
         
            -
                        backdropDomEl = $compile(backdropjqLiteEl)(backdropScope);
         
     | 
| 
       1530 
     | 
    
         
            -
                        body.append(backdropDomEl);
         
     | 
| 
       1531 
     | 
    
         
            -
                    }
         
     | 
| 
      
 1549 
     | 
    
         
            +
                    body.addClass(OPENED_MODAL_CLASS);
         
     | 
| 
       1532 
1550 
     | 
    
         
             
                  };
         
     | 
| 
       1533 
1551 
     | 
    
         | 
| 
       1534 
1552 
     | 
    
         
             
                  $modalStack.close = function (modalInstance, result) {
         
     | 
| 
         @@ -2002,14 +2020,14 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2002 
2020 
     | 
    
         
             
                  var startSym = $interpolate.startSymbol();
         
     | 
| 
       2003 
2021 
     | 
    
         
             
                  var endSym = $interpolate.endSymbol();
         
     | 
| 
       2004 
2022 
     | 
    
         
             
                  var template = 
         
     | 
| 
       2005 
     | 
    
         
            -
                    '<'+ directiveName +'-popup '+
         
     | 
| 
      
 2023 
     | 
    
         
            +
                    '<div '+ directiveName +'-popup '+
         
     | 
| 
       2006 
2024 
     | 
    
         
             
                      'title="'+startSym+'tt_title'+endSym+'" '+
         
     | 
| 
       2007 
2025 
     | 
    
         
             
                      'content="'+startSym+'tt_content'+endSym+'" '+
         
     | 
| 
       2008 
2026 
     | 
    
         
             
                      'placement="'+startSym+'tt_placement'+endSym+'" '+
         
     | 
| 
       2009 
     | 
    
         
            -
                      'animation="tt_animation 
     | 
| 
      
 2027 
     | 
    
         
            +
                      'animation="tt_animation" '+
         
     | 
| 
       2010 
2028 
     | 
    
         
             
                      'is-open="tt_isOpen"'+
         
     | 
| 
       2011 
2029 
     | 
    
         
             
                      '>'+
         
     | 
| 
       2012 
     | 
    
         
            -
                    '</ 
     | 
| 
      
 2030 
     | 
    
         
            +
                    '</div>';
         
     | 
| 
       2013 
2031 
     | 
    
         | 
| 
       2014 
2032 
     | 
    
         
             
                  return {
         
     | 
| 
       2015 
2033 
     | 
    
         
             
                    restrict: 'EA',
         
     | 
| 
         @@ -2018,12 +2036,60 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2018 
2036 
     | 
    
         
             
                      var tooltip = $compile( template )( scope );
         
     | 
| 
       2019 
2037 
     | 
    
         
             
                      var transitionTimeout;
         
     | 
| 
       2020 
2038 
     | 
    
         
             
                      var popupTimeout;
         
     | 
| 
       2021 
     | 
    
         
            -
                      var $body;
         
     | 
| 
       2022 
2039 
     | 
    
         
             
                      var appendToBody = angular.isDefined( options.appendToBody ) ? options.appendToBody : false;
         
     | 
| 
       2023 
2040 
     | 
    
         
             
                      var triggers = getTriggers( undefined );
         
     | 
| 
       2024 
2041 
     | 
    
         
             
                      var hasRegisteredTriggers = false;
         
     | 
| 
       2025 
2042 
     | 
    
         
             
                      var hasEnableExp = angular.isDefined(attrs[prefix+'Enable']);
         
     | 
| 
       2026 
2043 
     | 
    
         | 
| 
      
 2044 
     | 
    
         
            +
                      var positionTooltip = function (){
         
     | 
| 
      
 2045 
     | 
    
         
            +
                        var position,
         
     | 
| 
      
 2046 
     | 
    
         
            +
                          ttWidth,
         
     | 
| 
      
 2047 
     | 
    
         
            +
                          ttHeight,
         
     | 
| 
      
 2048 
     | 
    
         
            +
                          ttPosition;
         
     | 
| 
      
 2049 
     | 
    
         
            +
                        // Get the position of the directive element.
         
     | 
| 
      
 2050 
     | 
    
         
            +
                        position = appendToBody ? $position.offset( element ) : $position.position( element );
         
     | 
| 
      
 2051 
     | 
    
         
            +
             
     | 
| 
      
 2052 
     | 
    
         
            +
                        // Get the height and width of the tooltip so we can center it.
         
     | 
| 
      
 2053 
     | 
    
         
            +
                        ttWidth = tooltip.prop( 'offsetWidth' );
         
     | 
| 
      
 2054 
     | 
    
         
            +
                        ttHeight = tooltip.prop( 'offsetHeight' );
         
     | 
| 
      
 2055 
     | 
    
         
            +
             
     | 
| 
      
 2056 
     | 
    
         
            +
                        // Calculate the tooltip's top and left coordinates to center it with
         
     | 
| 
      
 2057 
     | 
    
         
            +
                        // this directive.
         
     | 
| 
      
 2058 
     | 
    
         
            +
                        switch ( scope.tt_placement ) {
         
     | 
| 
      
 2059 
     | 
    
         
            +
                          case 'right':
         
     | 
| 
      
 2060 
     | 
    
         
            +
                            ttPosition = {
         
     | 
| 
      
 2061 
     | 
    
         
            +
                              top: position.top + position.height / 2 - ttHeight / 2,
         
     | 
| 
      
 2062 
     | 
    
         
            +
                              left: position.left + position.width
         
     | 
| 
      
 2063 
     | 
    
         
            +
                            };
         
     | 
| 
      
 2064 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 2065 
     | 
    
         
            +
                          case 'bottom':
         
     | 
| 
      
 2066 
     | 
    
         
            +
                            ttPosition = {
         
     | 
| 
      
 2067 
     | 
    
         
            +
                              top: position.top + position.height,
         
     | 
| 
      
 2068 
     | 
    
         
            +
                              left: position.left + position.width / 2 - ttWidth / 2
         
     | 
| 
      
 2069 
     | 
    
         
            +
                            };
         
     | 
| 
      
 2070 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 2071 
     | 
    
         
            +
                          case 'left':
         
     | 
| 
      
 2072 
     | 
    
         
            +
                            ttPosition = {
         
     | 
| 
      
 2073 
     | 
    
         
            +
                              top: position.top + position.height / 2 - ttHeight / 2,
         
     | 
| 
      
 2074 
     | 
    
         
            +
                              left: position.left - ttWidth
         
     | 
| 
      
 2075 
     | 
    
         
            +
                            };
         
     | 
| 
      
 2076 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 2077 
     | 
    
         
            +
                          default:
         
     | 
| 
      
 2078 
     | 
    
         
            +
                            ttPosition = {
         
     | 
| 
      
 2079 
     | 
    
         
            +
                              top: position.top - ttHeight,
         
     | 
| 
      
 2080 
     | 
    
         
            +
                              left: position.left + position.width / 2 - ttWidth / 2
         
     | 
| 
      
 2081 
     | 
    
         
            +
                            };
         
     | 
| 
      
 2082 
     | 
    
         
            +
                            break;
         
     | 
| 
      
 2083 
     | 
    
         
            +
                        }
         
     | 
| 
      
 2084 
     | 
    
         
            +
             
     | 
| 
      
 2085 
     | 
    
         
            +
                        ttPosition.top += 'px';
         
     | 
| 
      
 2086 
     | 
    
         
            +
                        ttPosition.left += 'px';
         
     | 
| 
      
 2087 
     | 
    
         
            +
             
     | 
| 
      
 2088 
     | 
    
         
            +
                        // Now set the calculated positioning.
         
     | 
| 
      
 2089 
     | 
    
         
            +
                        tooltip.css( ttPosition );
         
     | 
| 
      
 2090 
     | 
    
         
            +
             
     | 
| 
      
 2091 
     | 
    
         
            +
                      };
         
     | 
| 
      
 2092 
     | 
    
         
            +
             
     | 
| 
       2027 
2093 
     | 
    
         
             
                      // By default, the tooltip is not open.
         
     | 
| 
       2028 
2094 
     | 
    
         
             
                      // TODO add ability to start tooltip opened
         
     | 
| 
       2029 
2095 
     | 
    
         
             
                      scope.tt_isOpen = false;
         
     | 
| 
         @@ -2043,8 +2109,9 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2043 
2109 
     | 
    
         
             
                        }
         
     | 
| 
       2044 
2110 
     | 
    
         
             
                        if ( scope.tt_popupDelay ) {
         
     | 
| 
       2045 
2111 
     | 
    
         
             
                          popupTimeout = $timeout( show, scope.tt_popupDelay );
         
     | 
| 
      
 2112 
     | 
    
         
            +
                          popupTimeout.then(function(reposition){reposition();});
         
     | 
| 
       2046 
2113 
     | 
    
         
             
                        } else {
         
     | 
| 
       2047 
     | 
    
         
            -
                          scope.$apply( show );
         
     | 
| 
      
 2114 
     | 
    
         
            +
                          scope.$apply( show )();
         
     | 
| 
       2048 
2115 
     | 
    
         
             
                        }
         
     | 
| 
       2049 
2116 
     | 
    
         
             
                      }
         
     | 
| 
       2050 
2117 
     | 
    
         | 
| 
         @@ -2056,14 +2123,11 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2056 
2123 
     | 
    
         | 
| 
       2057 
2124 
     | 
    
         
             
                      // Show the tooltip popup element.
         
     | 
| 
       2058 
2125 
     | 
    
         
             
                      function show() {
         
     | 
| 
       2059 
     | 
    
         
            -
             
     | 
| 
       2060 
     | 
    
         
            -
                            ttWidth,
         
     | 
| 
       2061 
     | 
    
         
            -
                            ttHeight,
         
     | 
| 
       2062 
     | 
    
         
            -
                            ttPosition;
         
     | 
| 
      
 2126 
     | 
    
         
            +
             
     | 
| 
       2063 
2127 
     | 
    
         | 
| 
       2064 
2128 
     | 
    
         
             
                        // Don't show empty tooltips.
         
     | 
| 
       2065 
2129 
     | 
    
         
             
                        if ( ! scope.tt_content ) {
         
     | 
| 
       2066 
     | 
    
         
            -
                          return;
         
     | 
| 
      
 2130 
     | 
    
         
            +
                          return angular.noop;
         
     | 
| 
       2067 
2131 
     | 
    
         
             
                        }
         
     | 
| 
       2068 
2132 
     | 
    
         | 
| 
       2069 
2133 
     | 
    
         
             
                        // If there is a pending remove transition, we must cancel it, lest the
         
     | 
| 
         @@ -2078,56 +2142,19 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2078 
2142 
     | 
    
         
             
                        // Now we add it to the DOM because need some info about it. But it's not 
         
     | 
| 
       2079 
2143 
     | 
    
         
             
                        // visible yet anyway.
         
     | 
| 
       2080 
2144 
     | 
    
         
             
                        if ( appendToBody ) {
         
     | 
| 
       2081 
     | 
    
         
            -
                            $ 
     | 
| 
       2082 
     | 
    
         
            -
                            $body.append( tooltip );
         
     | 
| 
      
 2145 
     | 
    
         
            +
                            $document.find( 'body' ).append( tooltip );
         
     | 
| 
       2083 
2146 
     | 
    
         
             
                        } else {
         
     | 
| 
       2084 
2147 
     | 
    
         
             
                          element.after( tooltip );
         
     | 
| 
       2085 
2148 
     | 
    
         
             
                        }
         
     | 
| 
       2086 
2149 
     | 
    
         | 
| 
       2087 
     | 
    
         
            -
                         
     | 
| 
       2088 
     | 
    
         
            -
                        position = appendToBody ? $position.offset( element ) : $position.position( element );
         
     | 
| 
       2089 
     | 
    
         
            -
             
     | 
| 
       2090 
     | 
    
         
            -
                        // Get the height and width of the tooltip so we can center it.
         
     | 
| 
       2091 
     | 
    
         
            -
                        ttWidth = tooltip.prop( 'offsetWidth' );
         
     | 
| 
       2092 
     | 
    
         
            -
                        ttHeight = tooltip.prop( 'offsetHeight' );
         
     | 
| 
       2093 
     | 
    
         
            -
                        
         
     | 
| 
       2094 
     | 
    
         
            -
                        // Calculate the tooltip's top and left coordinates to center it with
         
     | 
| 
       2095 
     | 
    
         
            -
                        // this directive.
         
     | 
| 
       2096 
     | 
    
         
            -
                        switch ( scope.tt_placement ) {
         
     | 
| 
       2097 
     | 
    
         
            -
                          case 'right':
         
     | 
| 
       2098 
     | 
    
         
            -
                            ttPosition = {
         
     | 
| 
       2099 
     | 
    
         
            -
                              top: position.top + position.height / 2 - ttHeight / 2,
         
     | 
| 
       2100 
     | 
    
         
            -
                              left: position.left + position.width
         
     | 
| 
       2101 
     | 
    
         
            -
                            };
         
     | 
| 
       2102 
     | 
    
         
            -
                            break;
         
     | 
| 
       2103 
     | 
    
         
            -
                          case 'bottom':
         
     | 
| 
       2104 
     | 
    
         
            -
                            ttPosition = {
         
     | 
| 
       2105 
     | 
    
         
            -
                              top: position.top + position.height,
         
     | 
| 
       2106 
     | 
    
         
            -
                              left: position.left + position.width / 2 - ttWidth / 2
         
     | 
| 
       2107 
     | 
    
         
            -
                            };
         
     | 
| 
       2108 
     | 
    
         
            -
                            break;
         
     | 
| 
       2109 
     | 
    
         
            -
                          case 'left':
         
     | 
| 
       2110 
     | 
    
         
            -
                            ttPosition = {
         
     | 
| 
       2111 
     | 
    
         
            -
                              top: position.top + position.height / 2 - ttHeight / 2,
         
     | 
| 
       2112 
     | 
    
         
            -
                              left: position.left - ttWidth
         
     | 
| 
       2113 
     | 
    
         
            -
                            };
         
     | 
| 
       2114 
     | 
    
         
            -
                            break;
         
     | 
| 
       2115 
     | 
    
         
            -
                          default:
         
     | 
| 
       2116 
     | 
    
         
            -
                            ttPosition = {
         
     | 
| 
       2117 
     | 
    
         
            -
                              top: position.top - ttHeight,
         
     | 
| 
       2118 
     | 
    
         
            -
                              left: position.left + position.width / 2 - ttWidth / 2
         
     | 
| 
       2119 
     | 
    
         
            -
                            };
         
     | 
| 
       2120 
     | 
    
         
            -
                            break;
         
     | 
| 
       2121 
     | 
    
         
            -
                        }
         
     | 
| 
       2122 
     | 
    
         
            -
             
     | 
| 
       2123 
     | 
    
         
            -
                        ttPosition.top += 'px';
         
     | 
| 
       2124 
     | 
    
         
            -
                        ttPosition.left += 'px';
         
     | 
| 
      
 2150 
     | 
    
         
            +
                        positionTooltip();
         
     | 
| 
       2125 
2151 
     | 
    
         | 
| 
       2126 
     | 
    
         
            -
                        // Now set the calculated positioning.
         
     | 
| 
       2127 
     | 
    
         
            -
                        tooltip.css( ttPosition );
         
     | 
| 
       2128 
     | 
    
         
            -
                          
         
     | 
| 
       2129 
2152 
     | 
    
         
             
                        // And show the tooltip.
         
     | 
| 
       2130 
2153 
     | 
    
         
             
                        scope.tt_isOpen = true;
         
     | 
| 
      
 2154 
     | 
    
         
            +
             
     | 
| 
      
 2155 
     | 
    
         
            +
                        // Return positioning function as promise callback for correct
         
     | 
| 
      
 2156 
     | 
    
         
            +
                        // positioning after draw.
         
     | 
| 
      
 2157 
     | 
    
         
            +
                        return positionTooltip;
         
     | 
| 
       2131 
2158 
     | 
    
         
             
                      }
         
     | 
| 
       2132 
2159 
     | 
    
         | 
| 
       2133 
2160 
     | 
    
         
             
                      // Hide the tooltip popup element.
         
     | 
| 
         @@ -2141,8 +2168,10 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2141 
2168 
     | 
    
         
             
                        // And now we remove it from the DOM. However, if we have animation, we 
         
     | 
| 
       2142 
2169 
     | 
    
         
             
                        // need to wait for it to expire beforehand.
         
     | 
| 
       2143 
2170 
     | 
    
         
             
                        // FIXME: this is a placeholder for a port of the transitions library.
         
     | 
| 
       2144 
     | 
    
         
            -
                        if (  
     | 
| 
       2145 
     | 
    
         
            -
                          transitionTimeout = $timeout( 
     | 
| 
      
 2171 
     | 
    
         
            +
                        if ( scope.tt_animation ) {
         
     | 
| 
      
 2172 
     | 
    
         
            +
                          transitionTimeout = $timeout(function () {
         
     | 
| 
      
 2173 
     | 
    
         
            +
                            tooltip.remove();
         
     | 
| 
      
 2174 
     | 
    
         
            +
                          }, 500);
         
     | 
| 
       2146 
2175 
     | 
    
         
             
                        } else {
         
     | 
| 
       2147 
2176 
     | 
    
         
             
                          tooltip.remove();
         
     | 
| 
       2148 
2177 
     | 
    
         
             
                        }
         
     | 
| 
         @@ -2152,12 +2181,10 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2152 
2181 
     | 
    
         
             
                       * Observe the relevant attributes.
         
     | 
| 
       2153 
2182 
     | 
    
         
             
                       */
         
     | 
| 
       2154 
2183 
     | 
    
         
             
                      attrs.$observe( type, function ( val ) {
         
     | 
| 
       2155 
     | 
    
         
            -
                         
     | 
| 
       2156 
     | 
    
         
            -
             
     | 
| 
       2157 
     | 
    
         
            -
                         
     | 
| 
       2158 
     | 
    
         
            -
                           
     | 
| 
       2159 
     | 
    
         
            -
                            hide();
         
     | 
| 
       2160 
     | 
    
         
            -
                          }
         
     | 
| 
      
 2184 
     | 
    
         
            +
                        scope.tt_content = val;
         
     | 
| 
      
 2185 
     | 
    
         
            +
             
     | 
| 
      
 2186 
     | 
    
         
            +
                        if (!val && scope.tt_isOpen ) {
         
     | 
| 
      
 2187 
     | 
    
         
            +
                          hide();
         
     | 
| 
       2161 
2188 
     | 
    
         
             
                        }
         
     | 
| 
       2162 
2189 
     | 
    
         
             
                      });
         
     | 
| 
       2163 
2190 
     | 
    
         | 
| 
         @@ -2169,21 +2196,20 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2169 
2196 
     | 
    
         
             
                        scope.tt_placement = angular.isDefined( val ) ? val : options.placement;
         
     | 
| 
       2170 
2197 
     | 
    
         
             
                      });
         
     | 
| 
       2171 
2198 
     | 
    
         | 
| 
       2172 
     | 
    
         
            -
                      attrs.$observe( prefix+'Animation', function ( val ) {
         
     | 
| 
       2173 
     | 
    
         
            -
                        scope.tt_animation = angular.isDefined( val ) ? $parse( val ) : function(){ return options.animation; };
         
     | 
| 
       2174 
     | 
    
         
            -
                      });
         
     | 
| 
       2175 
     | 
    
         
            -
             
     | 
| 
       2176 
2199 
     | 
    
         
             
                      attrs.$observe( prefix+'PopupDelay', function ( val ) {
         
     | 
| 
       2177 
2200 
     | 
    
         
             
                        var delay = parseInt( val, 10 );
         
     | 
| 
       2178 
2201 
     | 
    
         
             
                        scope.tt_popupDelay = ! isNaN(delay) ? delay : options.popupDelay;
         
     | 
| 
       2179 
2202 
     | 
    
         
             
                      });
         
     | 
| 
       2180 
2203 
     | 
    
         | 
| 
       2181 
     | 
    
         
            -
                       
     | 
| 
       2182 
     | 
    
         
            -
             
     | 
| 
      
 2204 
     | 
    
         
            +
                      var unregisterTriggers = function() {
         
     | 
| 
       2183 
2205 
     | 
    
         
             
                        if (hasRegisteredTriggers) {
         
     | 
| 
       2184 
2206 
     | 
    
         
             
                          element.unbind( triggers.show, showTooltipBind );
         
     | 
| 
       2185 
2207 
     | 
    
         
             
                          element.unbind( triggers.hide, hideTooltipBind );
         
     | 
| 
       2186 
2208 
     | 
    
         
             
                        }
         
     | 
| 
      
 2209 
     | 
    
         
            +
                      };
         
     | 
| 
      
 2210 
     | 
    
         
            +
             
     | 
| 
      
 2211 
     | 
    
         
            +
                      attrs.$observe( prefix+'Trigger', function ( val ) {
         
     | 
| 
      
 2212 
     | 
    
         
            +
                        unregisterTriggers();
         
     | 
| 
       2187 
2213 
     | 
    
         | 
| 
       2188 
2214 
     | 
    
         
             
                        triggers = getTriggers( val );
         
     | 
| 
       2189 
2215 
     | 
    
         | 
| 
         @@ -2197,6 +2223,9 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2197 
2223 
     | 
    
         
             
                        hasRegisteredTriggers = true;
         
     | 
| 
       2198 
2224 
     | 
    
         
             
                      });
         
     | 
| 
       2199 
2225 
     | 
    
         | 
| 
      
 2226 
     | 
    
         
            +
                      var animation = scope.$eval(attrs[prefix + 'Animation']);
         
     | 
| 
      
 2227 
     | 
    
         
            +
                      scope.tt_animation = angular.isDefined(animation) ? !!animation : options.animation;
         
     | 
| 
      
 2228 
     | 
    
         
            +
             
     | 
| 
       2200 
2229 
     | 
    
         
             
                      attrs.$observe( prefix+'AppendToBody', function ( val ) {
         
     | 
| 
       2201 
2230 
     | 
    
         
             
                        appendToBody = angular.isDefined( val ) ? $parse( val )( scope ) : appendToBody;
         
     | 
| 
       2202 
2231 
     | 
    
         
             
                      });
         
     | 
| 
         @@ -2214,11 +2243,12 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2214 
2243 
     | 
    
         | 
| 
       2215 
2244 
     | 
    
         
             
                      // Make sure tooltip is destroyed and removed.
         
     | 
| 
       2216 
2245 
     | 
    
         
             
                      scope.$on('$destroy', function onDestroyTooltip() {
         
     | 
| 
       2217 
     | 
    
         
            -
                         
     | 
| 
       2218 
     | 
    
         
            -
             
     | 
| 
       2219 
     | 
    
         
            -
                         
     | 
| 
       2220 
     | 
    
         
            -
             
     | 
| 
       2221 
     | 
    
         
            -
                         
     | 
| 
      
 2246 
     | 
    
         
            +
                        $timeout.cancel( transitionTimeout );
         
     | 
| 
      
 2247 
     | 
    
         
            +
                        $timeout.cancel( popupTimeout );
         
     | 
| 
      
 2248 
     | 
    
         
            +
                        unregisterTriggers();
         
     | 
| 
      
 2249 
     | 
    
         
            +
                        tooltip.remove();
         
     | 
| 
      
 2250 
     | 
    
         
            +
                        tooltip.unbind();
         
     | 
| 
      
 2251 
     | 
    
         
            +
                        tooltip = null;
         
     | 
| 
       2222 
2252 
     | 
    
         
             
                      });
         
     | 
| 
       2223 
2253 
     | 
    
         
             
                    }
         
     | 
| 
       2224 
2254 
     | 
    
         
             
                  };
         
     | 
| 
         @@ -2228,7 +2258,7 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2228 
2258 
     | 
    
         | 
| 
       2229 
2259 
     | 
    
         
             
            .directive( 'tooltipPopup', function () {
         
     | 
| 
       2230 
2260 
     | 
    
         
             
              return {
         
     | 
| 
       2231 
     | 
    
         
            -
                restrict: ' 
     | 
| 
      
 2261 
     | 
    
         
            +
                restrict: 'EA',
         
     | 
| 
       2232 
2262 
     | 
    
         
             
                replace: true,
         
     | 
| 
       2233 
2263 
     | 
    
         
             
                scope: { content: '@', placement: '@', animation: '&', isOpen: '&' },
         
     | 
| 
       2234 
2264 
     | 
    
         
             
                templateUrl: 'template/tooltip/tooltip-popup.html'
         
     | 
| 
         @@ -2241,7 +2271,7 @@ angular.module( 'ui.bootstrap.tooltip', [ 'ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       2241 
2271 
     | 
    
         | 
| 
       2242 
2272 
     | 
    
         
             
            .directive( 'tooltipHtmlUnsafePopup', function () {
         
     | 
| 
       2243 
2273 
     | 
    
         
             
              return {
         
     | 
| 
       2244 
     | 
    
         
            -
                restrict: ' 
     | 
| 
      
 2274 
     | 
    
         
            +
                restrict: 'EA',
         
     | 
| 
       2245 
2275 
     | 
    
         
             
                replace: true,
         
     | 
| 
       2246 
2276 
     | 
    
         
             
                scope: { content: '@', placement: '@', animation: '&', isOpen: '&' },
         
     | 
| 
       2247 
2277 
     | 
    
         
             
                templateUrl: 'template/tooltip/tooltip-html-unsafe-popup.html'
         
     | 
| 
         @@ -2275,108 +2305,102 @@ angular.module('ui.bootstrap.progressbar', ['ui.bootstrap.transition']) 
     | 
|
| 
       2275 
2305 
     | 
    
         | 
| 
       2276 
2306 
     | 
    
         
             
            .constant('progressConfig', {
         
     | 
| 
       2277 
2307 
     | 
    
         
             
              animate: true,
         
     | 
| 
       2278 
     | 
    
         
            -
               
     | 
| 
       2279 
     | 
    
         
            -
              stackedTypes: ['success', 'info', 'warning', 'danger']
         
     | 
| 
      
 2308 
     | 
    
         
            +
              max: 100
         
     | 
| 
       2280 
2309 
     | 
    
         
             
            })
         
     | 
| 
       2281 
2310 
     | 
    
         | 
| 
       2282 
     | 
    
         
            -
            .controller(' 
     | 
| 
      
 2311 
     | 
    
         
            +
            .controller('ProgressController', ['$scope', '$attrs', 'progressConfig', '$transition', function($scope, $attrs, progressConfig, $transition) {
         
     | 
| 
      
 2312 
     | 
    
         
            +
                var self = this,
         
     | 
| 
      
 2313 
     | 
    
         
            +
                    bars = [],
         
     | 
| 
      
 2314 
     | 
    
         
            +
                    max = angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : progressConfig.max,
         
     | 
| 
      
 2315 
     | 
    
         
            +
                    animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;
         
     | 
| 
       2283 
2316 
     | 
    
         | 
| 
       2284 
     | 
    
         
            -
                 
     | 
| 
       2285 
     | 
    
         
            -
             
     | 
| 
       2286 
     | 
    
         
            -
             
     | 
| 
       2287 
     | 
    
         
            -
             
     | 
| 
      
 2317 
     | 
    
         
            +
                this.addBar = function(bar, element) {
         
     | 
| 
      
 2318 
     | 
    
         
            +
                    var oldValue = 0, index = bar.$parent.$index;
         
     | 
| 
      
 2319 
     | 
    
         
            +
                    if ( angular.isDefined(index) &&  bars[index] ) {
         
     | 
| 
      
 2320 
     | 
    
         
            +
                        oldValue = bars[index].value;
         
     | 
| 
      
 2321 
     | 
    
         
            +
                    }
         
     | 
| 
      
 2322 
     | 
    
         
            +
                    bars.push(bar);
         
     | 
| 
       2288 
2323 
     | 
    
         | 
| 
       2289 
     | 
    
         
            -
             
     | 
| 
       2290 
     | 
    
         
            -
                this.makeBar = function(newBar, oldBar, index) {
         
     | 
| 
       2291 
     | 
    
         
            -
                    var newValue = (angular.isObject(newBar)) ? newBar.value : (newBar || 0);
         
     | 
| 
       2292 
     | 
    
         
            -
                    var oldValue =  (angular.isObject(oldBar)) ? oldBar.value : (oldBar || 0);
         
     | 
| 
       2293 
     | 
    
         
            -
                    var type = (angular.isObject(newBar) && angular.isDefined(newBar.type)) ? newBar.type : (autoType) ? getStackedType(index || 0) : null;
         
     | 
| 
      
 2324 
     | 
    
         
            +
                    this.update(element, bar.value, oldValue);
         
     | 
| 
       2294 
2325 
     | 
    
         | 
| 
       2295 
     | 
    
         
            -
                     
     | 
| 
       2296 
     | 
    
         
            -
                         
     | 
| 
       2297 
     | 
    
         
            -
             
     | 
| 
       2298 
     | 
    
         
            -
                         
     | 
| 
       2299 
     | 
    
         
            -
             
     | 
| 
       2300 
     | 
    
         
            -
             
     | 
| 
      
 2326 
     | 
    
         
            +
                    bar.$watch('value', function(value, oldValue) {
         
     | 
| 
      
 2327 
     | 
    
         
            +
                        if (value !== oldValue) {
         
     | 
| 
      
 2328 
     | 
    
         
            +
                            self.update(element, value, oldValue);
         
     | 
| 
      
 2329 
     | 
    
         
            +
                        }
         
     | 
| 
      
 2330 
     | 
    
         
            +
                    });
         
     | 
| 
      
 2331 
     | 
    
         
            +
             
     | 
| 
      
 2332 
     | 
    
         
            +
                    bar.$on('$destroy', function() {
         
     | 
| 
      
 2333 
     | 
    
         
            +
                        self.removeBar(bar);
         
     | 
| 
      
 2334 
     | 
    
         
            +
                    });
         
     | 
| 
       2301 
2335 
     | 
    
         
             
                };
         
     | 
| 
       2302 
2336 
     | 
    
         | 
| 
       2303 
     | 
    
         
            -
                 
     | 
| 
       2304 
     | 
    
         
            -
             
     | 
| 
       2305 
     | 
    
         
            -
             
     | 
| 
      
 2337 
     | 
    
         
            +
                // Update bar element width
         
     | 
| 
      
 2338 
     | 
    
         
            +
                this.update = function(element, newValue, oldValue) {
         
     | 
| 
      
 2339 
     | 
    
         
            +
                    var percent = this.getPercentage(newValue);
         
     | 
| 
       2306 
2340 
     | 
    
         | 
| 
       2307 
     | 
    
         
            -
             
     | 
| 
       2308 
     | 
    
         
            -
             
     | 
| 
       2309 
     | 
    
         
            -
             
     | 
| 
      
 2341 
     | 
    
         
            +
                    if (animate) {
         
     | 
| 
      
 2342 
     | 
    
         
            +
                        element.css('width', this.getPercentage(oldValue) + '%');
         
     | 
| 
      
 2343 
     | 
    
         
            +
                        $transition(element, {width: percent + '%'});
         
     | 
| 
      
 2344 
     | 
    
         
            +
                    } else {
         
     | 
| 
      
 2345 
     | 
    
         
            +
                        element.css({'transition': 'none', 'width': percent + '%'});
         
     | 
| 
      
 2346 
     | 
    
         
            +
                    }
         
     | 
| 
      
 2347 
     | 
    
         
            +
                };
         
     | 
| 
      
 2348 
     | 
    
         
            +
             
     | 
| 
      
 2349 
     | 
    
         
            +
                this.removeBar = function(bar) {
         
     | 
| 
      
 2350 
     | 
    
         
            +
                    bars.splice(bars.indexOf(bar), 1);
         
     | 
| 
       2310 
2351 
     | 
    
         
             
                };
         
     | 
| 
       2311 
2352 
     | 
    
         | 
| 
       2312 
     | 
    
         
            -
                this. 
     | 
| 
       2313 
     | 
    
         
            -
                     
     | 
| 
       2314 
     | 
    
         
            -
                    $scope.totalPercent = 0;
         
     | 
| 
      
 2353 
     | 
    
         
            +
                this.getPercentage = function(value) {
         
     | 
| 
      
 2354 
     | 
    
         
            +
                    return Math.round(100 * value / max);
         
     | 
| 
       2315 
2355 
     | 
    
         
             
                };
         
     | 
| 
       2316 
     | 
    
         
            -
                this.clearBars();
         
     | 
| 
       2317 
2356 
     | 
    
         
             
            }])
         
     | 
| 
       2318 
2357 
     | 
    
         | 
| 
       2319 
2358 
     | 
    
         
             
            .directive('progress', function() {
         
     | 
| 
       2320 
2359 
     | 
    
         
             
                return {
         
     | 
| 
       2321 
2360 
     | 
    
         
             
                    restrict: 'EA',
         
     | 
| 
       2322 
2361 
     | 
    
         
             
                    replace: true,
         
     | 
| 
       2323 
     | 
    
         
            -
                     
     | 
| 
      
 2362 
     | 
    
         
            +
                    transclude: true,
         
     | 
| 
      
 2363 
     | 
    
         
            +
                    controller: 'ProgressController',
         
     | 
| 
      
 2364 
     | 
    
         
            +
                    require: 'progress',
         
     | 
| 
      
 2365 
     | 
    
         
            +
                    scope: {},
         
     | 
| 
      
 2366 
     | 
    
         
            +
                    template: '<div class="progress" ng-transclude></div>'
         
     | 
| 
      
 2367 
     | 
    
         
            +
                    //templateUrl: 'template/progressbar/progress.html' // Works in AngularJS 1.2
         
     | 
| 
      
 2368 
     | 
    
         
            +
                };
         
     | 
| 
      
 2369 
     | 
    
         
            +
            })
         
     | 
| 
      
 2370 
     | 
    
         
            +
             
     | 
| 
      
 2371 
     | 
    
         
            +
            .directive('bar', function() {
         
     | 
| 
      
 2372 
     | 
    
         
            +
                return {
         
     | 
| 
      
 2373 
     | 
    
         
            +
                    restrict: 'EA',
         
     | 
| 
      
 2374 
     | 
    
         
            +
                    replace: true,
         
     | 
| 
      
 2375 
     | 
    
         
            +
                    transclude: true,
         
     | 
| 
      
 2376 
     | 
    
         
            +
                    require: '^progress',
         
     | 
| 
       2324 
2377 
     | 
    
         
             
                    scope: {
         
     | 
| 
       2325 
     | 
    
         
            -
                        value: '= 
     | 
| 
       2326 
     | 
    
         
            -
                         
     | 
| 
       2327 
     | 
    
         
            -
                        onEmpty: '&'
         
     | 
| 
      
 2378 
     | 
    
         
            +
                        value: '=',
         
     | 
| 
      
 2379 
     | 
    
         
            +
                        type: '@'
         
     | 
| 
       2328 
2380 
     | 
    
         
             
                    },
         
     | 
| 
       2329 
     | 
    
         
            -
                    templateUrl: 'template/progressbar/ 
     | 
| 
       2330 
     | 
    
         
            -
                    link: function(scope, element, attrs,  
     | 
| 
       2331 
     | 
    
         
            -
                        scope 
     | 
| 
       2332 
     | 
    
         
            -
                            controller.clearBars();
         
     | 
| 
       2333 
     | 
    
         
            -
             
     | 
| 
       2334 
     | 
    
         
            -
                            if (angular.isArray(newValue)) {
         
     | 
| 
       2335 
     | 
    
         
            -
                                // Stacked progress bar
         
     | 
| 
       2336 
     | 
    
         
            -
                                for (var i=0, n=newValue.length; i < n; i++) {
         
     | 
| 
       2337 
     | 
    
         
            -
                                    controller.addBar(controller.makeBar(newValue[i], oldValue[i], i));
         
     | 
| 
       2338 
     | 
    
         
            -
                                }
         
     | 
| 
       2339 
     | 
    
         
            -
                            } else {
         
     | 
| 
       2340 
     | 
    
         
            -
                                // Simple bar
         
     | 
| 
       2341 
     | 
    
         
            -
                                controller.addBar(controller.makeBar(newValue, oldValue));
         
     | 
| 
       2342 
     | 
    
         
            -
                            }
         
     | 
| 
       2343 
     | 
    
         
            -
                        }, true);
         
     | 
| 
       2344 
     | 
    
         
            -
             
     | 
| 
       2345 
     | 
    
         
            -
                        // Total percent listeners
         
     | 
| 
       2346 
     | 
    
         
            -
                        scope.$watch('totalPercent', function(value) {
         
     | 
| 
       2347 
     | 
    
         
            -
                          if (value >= 100) {
         
     | 
| 
       2348 
     | 
    
         
            -
                            scope.onFull();
         
     | 
| 
       2349 
     | 
    
         
            -
                          } else if (value <= 0) {
         
     | 
| 
       2350 
     | 
    
         
            -
                            scope.onEmpty();
         
     | 
| 
       2351 
     | 
    
         
            -
                          }
         
     | 
| 
       2352 
     | 
    
         
            -
                        }, true);
         
     | 
| 
      
 2381 
     | 
    
         
            +
                    templateUrl: 'template/progressbar/bar.html',
         
     | 
| 
      
 2382 
     | 
    
         
            +
                    link: function(scope, element, attrs, progressCtrl) {
         
     | 
| 
      
 2383 
     | 
    
         
            +
                        progressCtrl.addBar(scope, element);
         
     | 
| 
       2353 
2384 
     | 
    
         
             
                    }
         
     | 
| 
       2354 
2385 
     | 
    
         
             
                };
         
     | 
| 
       2355 
2386 
     | 
    
         
             
            })
         
     | 
| 
       2356 
2387 
     | 
    
         | 
| 
       2357 
     | 
    
         
            -
            .directive('progressbar',  
     | 
| 
      
 2388 
     | 
    
         
            +
            .directive('progressbar', function() {
         
     | 
| 
       2358 
2389 
     | 
    
         
             
                return {
         
     | 
| 
       2359 
2390 
     | 
    
         
             
                    restrict: 'EA',
         
     | 
| 
       2360 
2391 
     | 
    
         
             
                    replace: true,
         
     | 
| 
      
 2392 
     | 
    
         
            +
                    transclude: true,
         
     | 
| 
      
 2393 
     | 
    
         
            +
                    controller: 'ProgressController',
         
     | 
| 
       2361 
2394 
     | 
    
         
             
                    scope: {
         
     | 
| 
       2362 
     | 
    
         
            -
                         
     | 
| 
       2363 
     | 
    
         
            -
                         
     | 
| 
       2364 
     | 
    
         
            -
                        type: '=',
         
     | 
| 
       2365 
     | 
    
         
            -
                        animate: '='
         
     | 
| 
      
 2395 
     | 
    
         
            +
                        value: '=',
         
     | 
| 
      
 2396 
     | 
    
         
            +
                        type: '@'
         
     | 
| 
       2366 
2397 
     | 
    
         
             
                    },
         
     | 
| 
       2367 
     | 
    
         
            -
                    templateUrl: 'template/progressbar/ 
     | 
| 
       2368 
     | 
    
         
            -
                    link: function(scope, element) {
         
     | 
| 
       2369 
     | 
    
         
            -
                        scope 
     | 
| 
       2370 
     | 
    
         
            -
                            if (scope.animate) {
         
     | 
| 
       2371 
     | 
    
         
            -
                                element.css('width', scope.old + '%');
         
     | 
| 
       2372 
     | 
    
         
            -
                                $transition(element, {width: value + '%'});
         
     | 
| 
       2373 
     | 
    
         
            -
                            } else {
         
     | 
| 
       2374 
     | 
    
         
            -
                                element.css('width', value + '%');
         
     | 
| 
       2375 
     | 
    
         
            -
                            }
         
     | 
| 
       2376 
     | 
    
         
            -
                        });
         
     | 
| 
      
 2398 
     | 
    
         
            +
                    templateUrl: 'template/progressbar/progressbar.html',
         
     | 
| 
      
 2399 
     | 
    
         
            +
                    link: function(scope, element, attrs, progressCtrl) {
         
     | 
| 
      
 2400 
     | 
    
         
            +
                        progressCtrl.addBar(scope, angular.element(element.children()[0]));
         
     | 
| 
       2377 
2401 
     | 
    
         
             
                    }
         
     | 
| 
       2378 
2402 
     | 
    
         
             
                };
         
     | 
| 
       2379 
     | 
    
         
            -
            } 
     | 
| 
      
 2403 
     | 
    
         
            +
            });
         
     | 
| 
       2380 
2404 
     | 
    
         
             
            angular.module('ui.bootstrap.rating', [])
         
     | 
| 
       2381 
2405 
     | 
    
         | 
| 
       2382 
2406 
     | 
    
         
             
            .constant('ratingConfig', {
         
     | 
| 
         @@ -2462,12 +2486,6 @@ angular.module('ui.bootstrap.rating', []) 
     | 
|
| 
       2462 
2486 
     | 
    
         | 
| 
       2463 
2487 
     | 
    
         
             
            angular.module('ui.bootstrap.tabs', [])
         
     | 
| 
       2464 
2488 
     | 
    
         | 
| 
       2465 
     | 
    
         
            -
            .directive('tabs', function() {
         
     | 
| 
       2466 
     | 
    
         
            -
              return function() {
         
     | 
| 
       2467 
     | 
    
         
            -
                throw new Error("The `tabs` directive is deprecated, please migrate to `tabset`. Instructions can be found at http://github.com/angular-ui/bootstrap/tree/master/CHANGELOG.md");
         
     | 
| 
       2468 
     | 
    
         
            -
              };
         
     | 
| 
       2469 
     | 
    
         
            -
            })
         
     | 
| 
       2470 
     | 
    
         
            -
             
     | 
| 
       2471 
2489 
     | 
    
         
             
            .controller('TabsetController', ['$scope', function TabsetCtrl($scope) {
         
     | 
| 
       2472 
2490 
     | 
    
         
             
              var ctrl = this,
         
     | 
| 
       2473 
2491 
     | 
    
         
             
                  tabs = ctrl.tabs = $scope.tabs = [];
         
     | 
| 
         @@ -2508,8 +2526,6 @@ angular.module('ui.bootstrap.tabs', []) 
     | 
|
| 
       2508 
2526 
     | 
    
         
             
             *
         
     | 
| 
       2509 
2527 
     | 
    
         
             
             * @param {boolean=} vertical Whether or not to use vertical styling for the tabs.
         
     | 
| 
       2510 
2528 
     | 
    
         
             
             * @param {boolean=} justified Whether or not to use justified styling for the tabs.
         
     | 
| 
       2511 
     | 
    
         
            -
             * @param {string=} direction  What direction the tabs should be rendered. Available:
         
     | 
| 
       2512 
     | 
    
         
            -
             * 'right', 'left', 'below'.
         
     | 
| 
       2513 
2529 
     | 
    
         
             
             *
         
     | 
| 
       2514 
2530 
     | 
    
         
             
             * @example
         
     | 
| 
       2515 
2531 
     | 
    
         
             
            <example module="ui.bootstrap">
         
     | 
| 
         @@ -2535,20 +2551,13 @@ angular.module('ui.bootstrap.tabs', []) 
     | 
|
| 
       2535 
2551 
     | 
    
         
             
                restrict: 'EA',
         
     | 
| 
       2536 
2552 
     | 
    
         
             
                transclude: true,
         
     | 
| 
       2537 
2553 
     | 
    
         
             
                replace: true,
         
     | 
| 
       2538 
     | 
    
         
            -
                require: '^tabset',
         
     | 
| 
       2539 
2554 
     | 
    
         
             
                scope: {},
         
     | 
| 
       2540 
2555 
     | 
    
         
             
                controller: 'TabsetController',
         
     | 
| 
       2541 
2556 
     | 
    
         
             
                templateUrl: 'template/tabs/tabset.html',
         
     | 
| 
       2542 
     | 
    
         
            -
                 
     | 
| 
       2543 
     | 
    
         
            -
                   
     | 
| 
       2544 
     | 
    
         
            -
             
     | 
| 
       2545 
     | 
    
         
            -
             
     | 
| 
       2546 
     | 
    
         
            -
                    scope.type = angular.isDefined(attrs.type) ? scope.$parent.$eval(attrs.type) : 'tabs';
         
     | 
| 
       2547 
     | 
    
         
            -
                    scope.direction = angular.isDefined(attrs.direction) ? scope.$parent.$eval(attrs.direction) : 'top';
         
     | 
| 
       2548 
     | 
    
         
            -
                    scope.tabsAbove = (scope.direction != 'below');
         
     | 
| 
       2549 
     | 
    
         
            -
                    tabsetCtrl.$scope = scope;
         
     | 
| 
       2550 
     | 
    
         
            -
                    tabsetCtrl.$transcludeFn = transclude;
         
     | 
| 
       2551 
     | 
    
         
            -
                  };
         
     | 
| 
      
 2557 
     | 
    
         
            +
                link: function(scope, element, attrs) {
         
     | 
| 
      
 2558 
     | 
    
         
            +
                  scope.vertical = angular.isDefined(attrs.vertical) ? scope.$parent.$eval(attrs.vertical) : false;
         
     | 
| 
      
 2559 
     | 
    
         
            +
                  scope.justified = angular.isDefined(attrs.justified) ? scope.$parent.$eval(attrs.justified) : false;
         
     | 
| 
      
 2560 
     | 
    
         
            +
                  scope.type = angular.isDefined(attrs.type) ? scope.$parent.$eval(attrs.type) : 'tabs';
         
     | 
| 
       2552 
2561 
     | 
    
         
             
                }
         
     | 
| 
       2553 
2562 
     | 
    
         
             
              };
         
     | 
| 
       2554 
2563 
     | 
    
         
             
            })
         
     | 
| 
         @@ -2753,24 +2762,7 @@ angular.module('ui.bootstrap.tabs', []) 
     | 
|
| 
       2753 
2762 
     | 
    
         
             
              }
         
     | 
| 
       2754 
2763 
     | 
    
         
             
            })
         
     | 
| 
       2755 
2764 
     | 
    
         | 
| 
       2756 
     | 
    
         
            -
             
     | 
| 
       2757 
     | 
    
         
            -
              return {
         
     | 
| 
       2758 
     | 
    
         
            -
                restrict: 'A',
         
     | 
| 
       2759 
     | 
    
         
            -
                require: '^tabset',
         
     | 
| 
       2760 
     | 
    
         
            -
                templateUrl: 'template/tabs/tabset-titles.html',
         
     | 
| 
       2761 
     | 
    
         
            -
                replace: true,
         
     | 
| 
       2762 
     | 
    
         
            -
                link: function(scope, elm, attrs, tabsetCtrl) {
         
     | 
| 
       2763 
     | 
    
         
            -
                  if (!scope.$eval(attrs.tabsetTitles)) {
         
     | 
| 
       2764 
     | 
    
         
            -
                    elm.remove();
         
     | 
| 
       2765 
     | 
    
         
            -
                  } else {
         
     | 
| 
       2766 
     | 
    
         
            -
                    //now that tabs location has been decided, transclude the tab titles in
         
     | 
| 
       2767 
     | 
    
         
            -
                    tabsetCtrl.$transcludeFn(tabsetCtrl.$scope.$parent, function(node) {
         
     | 
| 
       2768 
     | 
    
         
            -
                      elm.append(node);
         
     | 
| 
       2769 
     | 
    
         
            -
                    });
         
     | 
| 
       2770 
     | 
    
         
            -
                  }
         
     | 
| 
       2771 
     | 
    
         
            -
                }
         
     | 
| 
       2772 
     | 
    
         
            -
              };
         
     | 
| 
       2773 
     | 
    
         
            -
            });
         
     | 
| 
      
 2765 
     | 
    
         
            +
            ;
         
     | 
| 
       2774 
2766 
     | 
    
         | 
| 
       2775 
2767 
     | 
    
         
             
            angular.module('ui.bootstrap.timepicker', [])
         
     | 
| 
       2776 
2768 
     | 
    
         | 
| 
         @@ -2778,12 +2770,12 @@ angular.module('ui.bootstrap.timepicker', []) 
     | 
|
| 
       2778 
2770 
     | 
    
         
             
              hourStep: 1,
         
     | 
| 
       2779 
2771 
     | 
    
         
             
              minuteStep: 1,
         
     | 
| 
       2780 
2772 
     | 
    
         
             
              showMeridian: true,
         
     | 
| 
       2781 
     | 
    
         
            -
              meridians:  
     | 
| 
      
 2773 
     | 
    
         
            +
              meridians: null,
         
     | 
| 
       2782 
2774 
     | 
    
         
             
              readonlyInput: false,
         
     | 
| 
       2783 
2775 
     | 
    
         
             
              mousewheel: true
         
     | 
| 
       2784 
2776 
     | 
    
         
             
            })
         
     | 
| 
       2785 
2777 
     | 
    
         | 
| 
       2786 
     | 
    
         
            -
            .directive('timepicker', ['$parse', '$log', 'timepickerConfig', function ($parse, $log, timepickerConfig) {
         
     | 
| 
      
 2778 
     | 
    
         
            +
            .directive('timepicker', ['$parse', '$log', 'timepickerConfig', '$locale', function ($parse, $log, timepickerConfig, $locale) {
         
     | 
| 
       2787 
2779 
     | 
    
         
             
              return {
         
     | 
| 
       2788 
2780 
     | 
    
         
             
                restrict: 'EA',
         
     | 
| 
       2789 
2781 
     | 
    
         
             
                require:'?^ngModel',
         
     | 
| 
         @@ -2795,7 +2787,8 @@ angular.module('ui.bootstrap.timepicker', []) 
     | 
|
| 
       2795 
2787 
     | 
    
         
             
                    return; // do nothing if no ng-model
         
     | 
| 
       2796 
2788 
     | 
    
         
             
                  }
         
     | 
| 
       2797 
2789 
     | 
    
         | 
| 
       2798 
     | 
    
         
            -
                  var selected = new Date(), 
     | 
| 
      
 2790 
     | 
    
         
            +
                  var selected = new Date(),
         
     | 
| 
      
 2791 
     | 
    
         
            +
                      meridians = angular.isDefined(attrs.meridians) ? scope.$parent.$eval(attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS;
         
     | 
| 
       2799 
2792 
     | 
    
         | 
| 
       2800 
2793 
     | 
    
         
             
                  var hourStep = timepickerConfig.hourStep;
         
     | 
| 
       2801 
2794 
     | 
    
         
             
                  if (attrs.hourStep) {
         
     | 
| 
         @@ -3064,6 +3057,8 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3064 
3057 
     | 
    
         | 
| 
       3065 
3058 
     | 
    
         
             
                  var inputFormatter = attrs.typeaheadInputFormatter ? $parse(attrs.typeaheadInputFormatter) : undefined;
         
     | 
| 
       3066 
3059 
     | 
    
         | 
| 
      
 3060 
     | 
    
         
            +
                  var appendToBody =  attrs.typeaheadAppendToBody ? $parse(attrs.typeaheadAppendToBody) : false;
         
     | 
| 
      
 3061 
     | 
    
         
            +
             
     | 
| 
       3067 
3062 
     | 
    
         
             
                  //INTERNAL VARIABLES
         
     | 
| 
       3068 
3063 
     | 
    
         | 
| 
       3069 
3064 
     | 
    
         
             
                  //model setter executed upon match selection
         
     | 
| 
         @@ -3075,7 +3070,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3075 
3070 
     | 
    
         
             
                  var hasFocus;
         
     | 
| 
       3076 
3071 
     | 
    
         | 
| 
       3077 
3072 
     | 
    
         
             
                  //pop-up element used to display matches
         
     | 
| 
       3078 
     | 
    
         
            -
                  var popUpEl = angular.element('<typeahead-popup></ 
     | 
| 
      
 3073 
     | 
    
         
            +
                  var popUpEl = angular.element('<div typeahead-popup></div>');
         
     | 
| 
       3079 
3074 
     | 
    
         
             
                  popUpEl.attr({
         
     | 
| 
       3080 
3075 
     | 
    
         
             
                    matches: 'matches',
         
     | 
| 
       3081 
3076 
     | 
    
         
             
                    active: 'activeIdx',
         
     | 
| 
         @@ -3127,7 +3122,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3127 
3122 
     | 
    
         
             
                          //position pop-up with matches - we need to re-calculate its position each time we are opening a window
         
     | 
| 
       3128 
3123 
     | 
    
         
             
                          //with matches as a pop-up might be absolute-positioned and position of an input might have changed on a page
         
     | 
| 
       3129 
3124 
     | 
    
         
             
                          //due to other elements being rendered
         
     | 
| 
       3130 
     | 
    
         
            -
                          scope.position = $position.position(element);
         
     | 
| 
      
 3125 
     | 
    
         
            +
                          scope.position = appendToBody ? $position.offset(element) : $position.position(element);
         
     | 
| 
       3131 
3126 
     | 
    
         
             
                          scope.position.top = scope.position.top + element.prop('offsetHeight');
         
     | 
| 
       3132 
3127 
     | 
    
         | 
| 
       3133 
3128 
     | 
    
         
             
                        } else {
         
     | 
| 
         @@ -3235,9 +3230,6 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3235 
3230 
     | 
    
         | 
| 
       3236 
3231 
     | 
    
         
             
                    //typeahead is open and an "interesting" key was pressed
         
     | 
| 
       3237 
3232 
     | 
    
         
             
                    if (scope.matches.length === 0 || HOT_KEYS.indexOf(evt.which) === -1) {
         
     | 
| 
       3238 
     | 
    
         
            -
                      if (evt.which === 13) {
         
     | 
| 
       3239 
     | 
    
         
            -
                        evt.preventDefault();
         
     | 
| 
       3240 
     | 
    
         
            -
                      }
         
     | 
| 
       3241 
3233 
     | 
    
         
             
                      return;
         
     | 
| 
       3242 
3234 
     | 
    
         
             
                    }
         
     | 
| 
       3243 
3235 
     | 
    
         | 
| 
         @@ -3282,7 +3274,12 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3282 
3274 
     | 
    
         
             
                    $document.unbind('click', dismissClickHandler);
         
     | 
| 
       3283 
3275 
     | 
    
         
             
                  });
         
     | 
| 
       3284 
3276 
     | 
    
         | 
| 
       3285 
     | 
    
         
            -
                   
     | 
| 
      
 3277 
     | 
    
         
            +
                  var $popup = $compile(popUpEl)(scope);
         
     | 
| 
      
 3278 
     | 
    
         
            +
                  if ( appendToBody ) {
         
     | 
| 
      
 3279 
     | 
    
         
            +
                    $document.find('body').append($popup);
         
     | 
| 
      
 3280 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 3281 
     | 
    
         
            +
                    element.after($popup);
         
     | 
| 
      
 3282 
     | 
    
         
            +
                  }
         
     | 
| 
       3286 
3283 
     | 
    
         
             
                }
         
     | 
| 
       3287 
3284 
     | 
    
         
             
              };
         
     | 
| 
       3288 
3285 
     | 
    
         | 
| 
         @@ -3290,7 +3287,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3290 
3287 
     | 
    
         | 
| 
       3291 
3288 
     | 
    
         
             
              .directive('typeaheadPopup', function () {
         
     | 
| 
       3292 
3289 
     | 
    
         
             
                return {
         
     | 
| 
       3293 
     | 
    
         
            -
                  restrict:' 
     | 
| 
      
 3290 
     | 
    
         
            +
                  restrict:'EA',
         
     | 
| 
       3294 
3291 
     | 
    
         
             
                  scope:{
         
     | 
| 
       3295 
3292 
     | 
    
         
             
                    matches:'=',
         
     | 
| 
       3296 
3293 
     | 
    
         
             
                    query:'=',
         
     | 
| 
         @@ -3325,7 +3322,7 @@ angular.module('ui.bootstrap.typeahead', ['ui.bootstrap.position', 'ui.bootstrap 
     | 
|
| 
       3325 
3322 
     | 
    
         | 
| 
       3326 
3323 
     | 
    
         
             
              .directive('typeaheadMatch', ['$http', '$templateCache', '$compile', '$parse', function ($http, $templateCache, $compile, $parse) {
         
     | 
| 
       3327 
3324 
     | 
    
         
             
                return {
         
     | 
| 
       3328 
     | 
    
         
            -
                  restrict:' 
     | 
| 
      
 3325 
     | 
    
         
            +
                  restrict:'EA',
         
     | 
| 
       3329 
3326 
     | 
    
         
             
                  scope:{
         
     | 
| 
       3330 
3327 
     | 
    
         
             
                    index:'=',
         
     | 
| 
       3331 
3328 
     | 
    
         
             
                    match:'=',
         
     |