angularjs-rails 1.2.6 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +8 -3
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +2 -2
- data/vendor/assets/javascripts/angular-mocks.js +5 -1
- data/vendor/assets/javascripts/angular-resource.js +2 -2
- data/vendor/assets/javascripts/angular-route.js +2 -2
- data/vendor/assets/javascripts/angular-sanitize.js +2 -2
- data/vendor/assets/javascripts/angular-scenario.js +97 -47
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +95 -46
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d9ac90904b1e170ac32c2d76876dd40aa82cbf0
|
4
|
+
data.tar.gz: 44e31d21d4fb9ebf89e7b862f1bb577459ca1b6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64e6a0c25a45fd978306e1121ca67cfc63af74d3d8bbcf45c9f00b722380737363f52eff40caed62760ff0ae88c5b4d56e0f1924f77fb1310ab843d77e969e19
|
7
|
+
data.tar.gz: 194046bb67a6b5fb4c97ced2a850bda0cd5cd9ac948172a50963743e97c2f74d920921fec493a4c4d060d2adbd1a28e948820872430aebdb50e4d5ef3be901fa
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -616,9 +616,14 @@ angular.module('ngAnimate', ['ng'])
|
|
616
616
|
}
|
617
617
|
|
618
618
|
var animations = [];
|
619
|
+
|
619
620
|
//only add animations if the currently running animation is not structural
|
620
621
|
//or if there is no animation running at all
|
621
|
-
|
622
|
+
var allowAnimations = isClassBased ?
|
623
|
+
!ngAnimateState.disabled && (!ngAnimateState.running || !ngAnimateState.structural) :
|
624
|
+
true;
|
625
|
+
|
626
|
+
if(allowAnimations) {
|
622
627
|
forEach(matches, function(animation) {
|
623
628
|
//add the animation to the queue to if it is allowed to be cancelled
|
624
629
|
if(!animation.allowCancel || animation.allowCancel(element, animationEvent, className)) {
|
@@ -1147,7 +1152,7 @@ angular.module('ngAnimate', ['ng'])
|
|
1147
1152
|
var propertyStyle = timings.transitionPropertyStyle;
|
1148
1153
|
if(propertyStyle.indexOf('all') == -1) {
|
1149
1154
|
style += CSS_PREFIX + 'transition-property: ' + propertyStyle + ';';
|
1150
|
-
style += CSS_PREFIX + 'transition-duration: ' + timings.transitionDurationStyle + '
|
1155
|
+
style += CSS_PREFIX + 'transition-duration: ' + timings.transitionDurationStyle + ';';
|
1151
1156
|
appliedStyles.push(CSS_PREFIX + 'transition-property');
|
1152
1157
|
appliedStyles.push(CSS_PREFIX + 'transition-duration');
|
1153
1158
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -69,7 +69,7 @@ function minErr(module) {
|
|
69
69
|
return match;
|
70
70
|
});
|
71
71
|
|
72
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
72
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.7/' +
|
73
73
|
(module ? module + '/' : '') + code;
|
74
74
|
for (i = 2; i < arguments.length; i++) {
|
75
75
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -1579,6 +1579,10 @@ function MockHttpExpectation(method, url, data, headers) {
|
|
1579
1579
|
};
|
1580
1580
|
}
|
1581
1581
|
|
1582
|
+
function createMockXhr() {
|
1583
|
+
return new MockXhr();
|
1584
|
+
}
|
1585
|
+
|
1582
1586
|
function MockXhr() {
|
1583
1587
|
|
1584
1588
|
// hack for testing $http, $httpBackend
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -406,7 +406,7 @@ angular.module('ngResource', ['ng']).
|
|
406
406
|
});
|
407
407
|
|
408
408
|
// strip trailing slashes and set the url
|
409
|
-
url = url.replace(/\/+$/, '');
|
409
|
+
url = url.replace(/\/+$/, '') || '/';
|
410
410
|
// then replace collapse `/.` if found in the last URL path segment before the query
|
411
411
|
// E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x`
|
412
412
|
url = url.replace(/\/\.(?=\w+($|\?))/, '.');
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -842,7 +842,7 @@ function ngViewFactory( $route, $anchorScroll, $animate) {
|
|
842
842
|
var locals = $route.current && $route.current.locals,
|
843
843
|
template = locals && locals.$template;
|
844
844
|
|
845
|
-
if (template) {
|
845
|
+
if (angular.isDefined(template)) {
|
846
846
|
var newScope = scope.$new();
|
847
847
|
var current = $route.current;
|
848
848
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -211,7 +211,7 @@ var validAttrs = angular.extend({}, uriAttrs, makeMap(
|
|
211
211
|
'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,'+
|
212
212
|
'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,'+
|
213
213
|
'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,'+
|
214
|
-
'scope,scrolling,shape,span,start,summary,target,title,type,'+
|
214
|
+
'scope,scrolling,shape,size,span,start,summary,target,title,type,'+
|
215
215
|
'valign,value,vspace,width'));
|
216
216
|
|
217
217
|
function makeMap(str) {
|
@@ -9790,7 +9790,7 @@ if ( typeof module === "object" && module && typeof module.exports === "object"
|
|
9790
9790
|
})( window );
|
9791
9791
|
|
9792
9792
|
/**
|
9793
|
-
* @license AngularJS v1.2.
|
9793
|
+
* @license AngularJS v1.2.7
|
9794
9794
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
9795
9795
|
* License: MIT
|
9796
9796
|
*/
|
@@ -9860,7 +9860,7 @@ function minErr(module) {
|
|
9860
9860
|
return match;
|
9861
9861
|
});
|
9862
9862
|
|
9863
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
9863
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.7/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -10830,7 +10830,9 @@ function fromJson(json) {
|
|
10830
10830
|
|
10831
10831
|
|
10832
10832
|
function toBoolean(value) {
|
10833
|
-
if (
|
10833
|
+
if (typeof value === 'function') {
|
10834
|
+
value = true;
|
10835
|
+
} else if (value && value.length !== 0) {
|
10834
10836
|
var v = lowercase("" + value);
|
10835
10837
|
value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');
|
10836
10838
|
} else {
|
@@ -11623,11 +11625,11 @@ function setupModuleLoader(window) {
|
|
11623
11625
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11624
11626
|
*/
|
11625
11627
|
var version = {
|
11626
|
-
full: '1.2.
|
11628
|
+
full: '1.2.7', // all of these placeholder strings will be replaced by grunt's
|
11627
11629
|
major: 1, // package task
|
11628
11630
|
minor: 2,
|
11629
|
-
dot:
|
11630
|
-
codeName: '
|
11631
|
+
dot: 7,
|
11632
|
+
codeName: 'emoji-clairvoyance'
|
11631
11633
|
};
|
11632
11634
|
|
11633
11635
|
|
@@ -13455,6 +13457,11 @@ function createInjector(modulesToLoad) {
|
|
13455
13457
|
path.unshift(serviceName);
|
13456
13458
|
cache[serviceName] = INSTANTIATING;
|
13457
13459
|
return cache[serviceName] = factory(serviceName);
|
13460
|
+
} catch (err) {
|
13461
|
+
if (cache[serviceName] === INSTANTIATING) {
|
13462
|
+
delete cache[serviceName];
|
13463
|
+
}
|
13464
|
+
throw err;
|
13458
13465
|
} finally {
|
13459
13466
|
path.shift();
|
13460
13467
|
}
|
@@ -13989,8 +13996,9 @@ function Browser(window, document, $log, $sniffer) {
|
|
13989
13996
|
* @param {boolean=} replace Should new url replace current history record ?
|
13990
13997
|
*/
|
13991
13998
|
self.url = function(url, replace) {
|
13992
|
-
// Android Browser BFCache causes location reference to become stale.
|
13999
|
+
// Android Browser BFCache causes location, history reference to become stale.
|
13993
14000
|
if (location !== window.location) location = window.location;
|
14001
|
+
if (history !== window.history) history = window.history;
|
13994
14002
|
|
13995
14003
|
// setter
|
13996
14004
|
if (url) {
|
@@ -14042,7 +14050,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
14042
14050
|
* @description
|
14043
14051
|
* Register callback function that will be called, when url changes.
|
14044
14052
|
*
|
14045
|
-
* It's only called when the url is changed
|
14053
|
+
* It's only called when the url is changed from outside of angular:
|
14046
14054
|
* - user types different url into address bar
|
14047
14055
|
* - user clicks on history (forward/back) button
|
14048
14056
|
* - user clicks on a link
|
@@ -14084,7 +14092,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
14084
14092
|
/**
|
14085
14093
|
* @name ng.$browser#baseHref
|
14086
14094
|
* @methodOf ng.$browser
|
14087
|
-
*
|
14095
|
+
*
|
14088
14096
|
* @description
|
14089
14097
|
* Returns current <base href>
|
14090
14098
|
* (always relative - without domain)
|
@@ -14093,7 +14101,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
14093
14101
|
*/
|
14094
14102
|
self.baseHref = function() {
|
14095
14103
|
var href = baseElement.attr('href');
|
14096
|
-
return href ? href.replace(/^https
|
14104
|
+
return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : '';
|
14097
14105
|
};
|
14098
14106
|
|
14099
14107
|
//////////////////////////////////////////////////////////////
|
@@ -14115,13 +14123,13 @@ function Browser(window, document, $log, $sniffer) {
|
|
14115
14123
|
* It is not meant to be used directly, use the $cookie service instead.
|
14116
14124
|
*
|
14117
14125
|
* The return values vary depending on the arguments that the method was called with as follows:
|
14118
|
-
*
|
14126
|
+
*
|
14119
14127
|
* - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify
|
14120
14128
|
* it
|
14121
14129
|
* - cookies(name, value) -> set name to value, if value is undefined delete the cookie
|
14122
14130
|
* - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that
|
14123
14131
|
* way)
|
14124
|
-
*
|
14132
|
+
*
|
14125
14133
|
* @returns {Object} Hash of all cookies (if called without any parameter)
|
14126
14134
|
*/
|
14127
14135
|
self.cookies = function(name, value) {
|
@@ -14499,7 +14507,7 @@ function $TemplateCacheProvider() {
|
|
14499
14507
|
* @function
|
14500
14508
|
*
|
14501
14509
|
* @description
|
14502
|
-
* Compiles
|
14510
|
+
* Compiles an HTML string or DOM into a template and produces a template function, which
|
14503
14511
|
* can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
|
14504
14512
|
*
|
14505
14513
|
* The compilation is a process of walking the DOM tree and matching DOM elements to
|
@@ -16841,7 +16849,7 @@ function $HttpProvider() {
|
|
16841
16849
|
* will result in the success callback being called. Note that if the response is a redirect,
|
16842
16850
|
* XMLHttpRequest will transparently follow it, meaning that the error callback will not be
|
16843
16851
|
* called for such responses.
|
16844
|
-
*
|
16852
|
+
*
|
16845
16853
|
* # Calling $http from outside AngularJS
|
16846
16854
|
* The `$http` service will not actually send the request until the next `$digest()` is
|
16847
16855
|
* executed. Normally this is not an issue, since almost all the time your call to `$http` will
|
@@ -17028,19 +17036,20 @@ function $HttpProvider() {
|
|
17028
17036
|
* return responseOrNewPromise
|
17029
17037
|
* }
|
17030
17038
|
* return $q.reject(rejection);
|
17031
|
-
* }
|
17032
|
-
* }
|
17039
|
+
* }
|
17040
|
+
* };
|
17033
17041
|
* });
|
17034
17042
|
*
|
17035
17043
|
* $httpProvider.interceptors.push('myHttpInterceptor');
|
17036
17044
|
*
|
17037
17045
|
*
|
17038
|
-
* // register the interceptor via an anonymous factory
|
17046
|
+
* // alternatively, register the interceptor via an anonymous factory
|
17039
17047
|
* $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
|
17040
17048
|
* return {
|
17041
17049
|
* 'request': function(config) {
|
17042
17050
|
* // same as above
|
17043
17051
|
* },
|
17052
|
+
*
|
17044
17053
|
* 'response': function(response) {
|
17045
17054
|
* // same as above
|
17046
17055
|
* }
|
@@ -17656,13 +17665,13 @@ function $HttpProvider() {
|
|
17656
17665
|
}];
|
17657
17666
|
}
|
17658
17667
|
|
17659
|
-
|
17668
|
+
function createXhr(method) {
|
17669
|
+
// IE8 doesn't support PATCH method, but the ActiveX object does
|
17660
17670
|
/* global ActiveXObject */
|
17661
|
-
|
17662
|
-
|
17663
|
-
|
17664
|
-
|
17665
|
-
};
|
17671
|
+
return (msie <= 8 && lowercase(method) === 'patch')
|
17672
|
+
? new ActiveXObject('Microsoft.XMLHTTP')
|
17673
|
+
: new window.XMLHttpRequest();
|
17674
|
+
}
|
17666
17675
|
|
17667
17676
|
|
17668
17677
|
/**
|
@@ -17684,11 +17693,11 @@ var XHR = window.XMLHttpRequest || function() {
|
|
17684
17693
|
*/
|
17685
17694
|
function $HttpBackendProvider() {
|
17686
17695
|
this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
|
17687
|
-
return createHttpBackend($browser,
|
17696
|
+
return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);
|
17688
17697
|
}];
|
17689
17698
|
}
|
17690
17699
|
|
17691
|
-
function createHttpBackend($browser,
|
17700
|
+
function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
|
17692
17701
|
var ABORTED = -1;
|
17693
17702
|
|
17694
17703
|
// TODO(vojta): fix the signature
|
@@ -17713,7 +17722,9 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument)
|
|
17713
17722
|
delete callbacks[callbackId];
|
17714
17723
|
});
|
17715
17724
|
} else {
|
17716
|
-
|
17725
|
+
|
17726
|
+
var xhr = createXhr(method);
|
17727
|
+
|
17717
17728
|
xhr.open(method, url, true);
|
17718
17729
|
forEach(headers, function(value, key) {
|
17719
17730
|
if (isDefined(value)) {
|
@@ -17725,7 +17736,14 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument)
|
|
17725
17736
|
// response is in the cache. the promise api will ensure that to the app code the api is
|
17726
17737
|
// always async
|
17727
17738
|
xhr.onreadystatechange = function() {
|
17728
|
-
|
17739
|
+
// onreadystatechange might by called multiple times with readyState === 4 on mobile webkit caused by
|
17740
|
+
// xhrs that are resolved while the app is in the background (see #5426).
|
17741
|
+
// since calling completeRequest sets the `xhr` variable to null, we just check if it's not null before
|
17742
|
+
// continuing
|
17743
|
+
//
|
17744
|
+
// we can't set xhr.onreadystatechange to undefined or delete it because that breaks IE8 (method=PATCH) and
|
17745
|
+
// Safari respectively.
|
17746
|
+
if (xhr && xhr.readyState == 4) {
|
17729
17747
|
var responseHeaders = null,
|
17730
17748
|
response = null;
|
17731
17749
|
|
@@ -18972,16 +18990,17 @@ function $LocationProvider(){
|
|
18972
18990
|
// update $location when $browser url changes
|
18973
18991
|
$browser.onUrlChange(function(newUrl) {
|
18974
18992
|
if ($location.absUrl() != newUrl) {
|
18975
|
-
if ($rootScope.$broadcast('$locationChangeStart', newUrl,
|
18976
|
-
$location.absUrl()).defaultPrevented) {
|
18977
|
-
$browser.url($location.absUrl());
|
18978
|
-
return;
|
18979
|
-
}
|
18980
18993
|
$rootScope.$evalAsync(function() {
|
18981
18994
|
var oldUrl = $location.absUrl();
|
18982
18995
|
|
18983
18996
|
$location.$$parse(newUrl);
|
18984
|
-
|
18997
|
+
if ($rootScope.$broadcast('$locationChangeStart', newUrl,
|
18998
|
+
oldUrl).defaultPrevented) {
|
18999
|
+
$location.$$parse(oldUrl);
|
19000
|
+
$browser.url(oldUrl);
|
19001
|
+
} else {
|
19002
|
+
afterLocationChange(oldUrl);
|
19003
|
+
}
|
18985
19004
|
});
|
18986
19005
|
if (!$rootScope.$$phase) $rootScope.$digest();
|
18987
19006
|
}
|
@@ -21091,6 +21110,7 @@ function $RootScopeProvider(){
|
|
21091
21110
|
this.$$asyncQueue = [];
|
21092
21111
|
this.$$postDigestQueue = [];
|
21093
21112
|
this.$$listeners = {};
|
21113
|
+
this.$$listenerCount = {};
|
21094
21114
|
this.$$isolateBindings = {};
|
21095
21115
|
}
|
21096
21116
|
|
@@ -21150,6 +21170,7 @@ function $RootScopeProvider(){
|
|
21150
21170
|
}
|
21151
21171
|
child['this'] = child;
|
21152
21172
|
child.$$listeners = {};
|
21173
|
+
child.$$listenerCount = {};
|
21153
21174
|
child.$parent = this;
|
21154
21175
|
child.$$watchers = child.$$nextSibling = child.$$childHead = child.$$childTail = null;
|
21155
21176
|
child.$$prevSibling = this.$$childTail;
|
@@ -21309,6 +21330,7 @@ function $RootScopeProvider(){
|
|
21309
21330
|
|
21310
21331
|
return function() {
|
21311
21332
|
arrayRemove(array, watcher);
|
21333
|
+
lastDirtyWatch = null;
|
21312
21334
|
};
|
21313
21335
|
},
|
21314
21336
|
|
@@ -21654,6 +21676,8 @@ function $RootScopeProvider(){
|
|
21654
21676
|
this.$$destroyed = true;
|
21655
21677
|
if (this === $rootScope) return;
|
21656
21678
|
|
21679
|
+
forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));
|
21680
|
+
|
21657
21681
|
if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
|
21658
21682
|
if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
|
21659
21683
|
if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
|
@@ -21843,8 +21867,18 @@ function $RootScopeProvider(){
|
|
21843
21867
|
}
|
21844
21868
|
namedListeners.push(listener);
|
21845
21869
|
|
21870
|
+
var current = this;
|
21871
|
+
do {
|
21872
|
+
if (!current.$$listenerCount[name]) {
|
21873
|
+
current.$$listenerCount[name] = 0;
|
21874
|
+
}
|
21875
|
+
current.$$listenerCount[name]++;
|
21876
|
+
} while ((current = current.$parent));
|
21877
|
+
|
21878
|
+
var self = this;
|
21846
21879
|
return function() {
|
21847
21880
|
namedListeners[indexOf(namedListeners, listener)] = null;
|
21881
|
+
decrementListenerCount(self, 1, name);
|
21848
21882
|
};
|
21849
21883
|
},
|
21850
21884
|
|
@@ -21956,8 +21990,7 @@ function $RootScopeProvider(){
|
|
21956
21990
|
listeners, i, length;
|
21957
21991
|
|
21958
21992
|
//down while you can, then up and next sibling or up and next sibling until back at root
|
21959
|
-
|
21960
|
-
current = next;
|
21993
|
+
while ((current = next)) {
|
21961
21994
|
event.currentScope = current;
|
21962
21995
|
listeners = current.$$listeners[name] || [];
|
21963
21996
|
for (i=0, length = listeners.length; i<length; i++) {
|
@@ -21979,12 +22012,14 @@ function $RootScopeProvider(){
|
|
21979
22012
|
// Insanity Warning: scope depth-first traversal
|
21980
22013
|
// yes, this code is a bit crazy, but it works and we have tests to prove it!
|
21981
22014
|
// this piece should be kept in sync with the traversal in $digest
|
21982
|
-
|
22015
|
+
// (though it differs due to having the extra check for $$listenerCount)
|
22016
|
+
if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||
|
22017
|
+
(current !== target && current.$$nextSibling)))) {
|
21983
22018
|
while(current !== target && !(next = current.$$nextSibling)) {
|
21984
22019
|
current = current.$parent;
|
21985
22020
|
}
|
21986
22021
|
}
|
21987
|
-
}
|
22022
|
+
}
|
21988
22023
|
|
21989
22024
|
return event;
|
21990
22025
|
}
|
@@ -22013,6 +22048,16 @@ function $RootScopeProvider(){
|
|
22013
22048
|
return fn;
|
22014
22049
|
}
|
22015
22050
|
|
22051
|
+
function decrementListenerCount(current, count, name) {
|
22052
|
+
do {
|
22053
|
+
current.$$listenerCount[name] -= count;
|
22054
|
+
|
22055
|
+
if (current.$$listenerCount[name] === 0) {
|
22056
|
+
delete current.$$listenerCount[name];
|
22057
|
+
}
|
22058
|
+
} while ((current = current.$parent));
|
22059
|
+
}
|
22060
|
+
|
22016
22061
|
/**
|
22017
22062
|
* function used as an initial value for watchers.
|
22018
22063
|
* because it's unique we can easily tell it apart from other values
|
@@ -23231,7 +23276,7 @@ function $SnifferProvider() {
|
|
23231
23276
|
// http://code.google.com/p/android/issues/detail?id=17471
|
23232
23277
|
// https://github.com/angular/angular.js/issues/904
|
23233
23278
|
|
23234
|
-
// older
|
23279
|
+
// older webkit browser (533.9) on Boxee box has exactly the same problem as Android has
|
23235
23280
|
// so let's not use the history API also
|
23236
23281
|
// We are purposefully using `!(android < 4)` to cover the case when `android` is undefined
|
23237
23282
|
// jshint -W018
|
@@ -23653,21 +23698,21 @@ function $FilterProvider($provide) {
|
|
23653
23698
|
* property of the object. That's equivalent to the simple substring match with a `string`
|
23654
23699
|
* as described above.
|
23655
23700
|
*
|
23656
|
-
* - `function`: A predicate function can be used to write arbitrary filters. The function is
|
23701
|
+
* - `function(value)`: A predicate function can be used to write arbitrary filters. The function is
|
23657
23702
|
* called for each element of `array`. The final result is an array of those elements that
|
23658
23703
|
* the predicate returned true for.
|
23659
23704
|
*
|
23660
|
-
* @param {function(
|
23705
|
+
* @param {function(actual, expected)|true|undefined} comparator Comparator which is used in
|
23661
23706
|
* determining if the expected value (from the filter expression) and actual value (from
|
23662
23707
|
* the object in the array) should be considered a match.
|
23663
23708
|
*
|
23664
23709
|
* Can be one of:
|
23665
23710
|
*
|
23666
|
-
* - `function(
|
23711
|
+
* - `function(actual, expected)`:
|
23667
23712
|
* The function will be given the object value and the predicate value to compare and
|
23668
23713
|
* should return true if the item should be included in filtered result.
|
23669
23714
|
*
|
23670
|
-
* - `true`: A shorthand for `function(
|
23715
|
+
* - `true`: A shorthand for `function(actual, expected) { return angular.equals(expected, actual)}`.
|
23671
23716
|
* this is essentially strict comparison of expected and actual.
|
23672
23717
|
*
|
23673
23718
|
* - `false|undefined`: A short hand for a function which will look for a substring match in case
|
@@ -25772,9 +25817,13 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
25772
25817
|
}
|
25773
25818
|
|
25774
25819
|
if (ctrl.$viewValue !== value) {
|
25775
|
-
scope
|
25820
|
+
if (scope.$$phase) {
|
25776
25821
|
ctrl.$setViewValue(value);
|
25777
|
-
}
|
25822
|
+
} else {
|
25823
|
+
scope.$apply(function() {
|
25824
|
+
ctrl.$setViewValue(value);
|
25825
|
+
});
|
25826
|
+
}
|
25778
25827
|
}
|
25779
25828
|
};
|
25780
25829
|
|
@@ -28853,7 +28902,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
28853
28902
|
$$tlb: true,
|
28854
28903
|
link: function($scope, $element, $attr, ctrl, $transclude){
|
28855
28904
|
var expression = $attr.ngRepeat;
|
28856
|
-
var match = expression.match(/^\s*(
|
28905
|
+
var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),
|
28857
28906
|
trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,
|
28858
28907
|
lhs, rhs, valueIdentifier, keyIdentifier,
|
28859
28908
|
hashFnLocals = {$id: hashKey};
|
@@ -28865,7 +28914,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
28865
28914
|
|
28866
28915
|
lhs = match[1];
|
28867
28916
|
rhs = match[2];
|
28868
|
-
trackByExp = match[
|
28917
|
+
trackByExp = match[3];
|
28869
28918
|
|
28870
28919
|
if (trackByExp) {
|
28871
28920
|
trackByExpGetter = $parse(trackByExp);
|
@@ -30554,7 +30603,8 @@ function callerFile(offset) {
|
|
30554
30603
|
* To work around this we instead use our own handler that fires a real event.
|
30555
30604
|
*/
|
30556
30605
|
(function(fn){
|
30557
|
-
|
30606
|
+
// We need a handle to the original trigger function for input tests.
|
30607
|
+
var parentTrigger = fn._originalTrigger = fn.trigger;
|
30558
30608
|
fn.trigger = function(type) {
|
30559
30609
|
if (/(click|change|keydown|blur|input|mousedown|mouseup)/.test(type)) {
|
30560
30610
|
var processDefaults = [];
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.7
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -68,7 +68,7 @@ function minErr(module) {
|
|
68
68
|
return match;
|
69
69
|
});
|
70
70
|
|
71
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
71
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.7/' +
|
72
72
|
(module ? module + '/' : '') + code;
|
73
73
|
for (i = 2; i < arguments.length; i++) {
|
74
74
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -1038,7 +1038,9 @@ function fromJson(json) {
|
|
1038
1038
|
|
1039
1039
|
|
1040
1040
|
function toBoolean(value) {
|
1041
|
-
if (
|
1041
|
+
if (typeof value === 'function') {
|
1042
|
+
value = true;
|
1043
|
+
} else if (value && value.length !== 0) {
|
1042
1044
|
var v = lowercase("" + value);
|
1043
1045
|
value = !(v == 'f' || v == '0' || v == 'false' || v == 'no' || v == 'n' || v == '[]');
|
1044
1046
|
} else {
|
@@ -1831,11 +1833,11 @@ function setupModuleLoader(window) {
|
|
1831
1833
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
1832
1834
|
*/
|
1833
1835
|
var version = {
|
1834
|
-
full: '1.2.
|
1836
|
+
full: '1.2.7', // all of these placeholder strings will be replaced by grunt's
|
1835
1837
|
major: 1, // package task
|
1836
1838
|
minor: 2,
|
1837
|
-
dot:
|
1838
|
-
codeName: '
|
1839
|
+
dot: 7,
|
1840
|
+
codeName: 'emoji-clairvoyance'
|
1839
1841
|
};
|
1840
1842
|
|
1841
1843
|
|
@@ -3663,6 +3665,11 @@ function createInjector(modulesToLoad) {
|
|
3663
3665
|
path.unshift(serviceName);
|
3664
3666
|
cache[serviceName] = INSTANTIATING;
|
3665
3667
|
return cache[serviceName] = factory(serviceName);
|
3668
|
+
} catch (err) {
|
3669
|
+
if (cache[serviceName] === INSTANTIATING) {
|
3670
|
+
delete cache[serviceName];
|
3671
|
+
}
|
3672
|
+
throw err;
|
3666
3673
|
} finally {
|
3667
3674
|
path.shift();
|
3668
3675
|
}
|
@@ -4197,8 +4204,9 @@ function Browser(window, document, $log, $sniffer) {
|
|
4197
4204
|
* @param {boolean=} replace Should new url replace current history record ?
|
4198
4205
|
*/
|
4199
4206
|
self.url = function(url, replace) {
|
4200
|
-
// Android Browser BFCache causes location reference to become stale.
|
4207
|
+
// Android Browser BFCache causes location, history reference to become stale.
|
4201
4208
|
if (location !== window.location) location = window.location;
|
4209
|
+
if (history !== window.history) history = window.history;
|
4202
4210
|
|
4203
4211
|
// setter
|
4204
4212
|
if (url) {
|
@@ -4250,7 +4258,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
4250
4258
|
* @description
|
4251
4259
|
* Register callback function that will be called, when url changes.
|
4252
4260
|
*
|
4253
|
-
* It's only called when the url is changed
|
4261
|
+
* It's only called when the url is changed from outside of angular:
|
4254
4262
|
* - user types different url into address bar
|
4255
4263
|
* - user clicks on history (forward/back) button
|
4256
4264
|
* - user clicks on a link
|
@@ -4292,7 +4300,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
4292
4300
|
/**
|
4293
4301
|
* @name ng.$browser#baseHref
|
4294
4302
|
* @methodOf ng.$browser
|
4295
|
-
*
|
4303
|
+
*
|
4296
4304
|
* @description
|
4297
4305
|
* Returns current <base href>
|
4298
4306
|
* (always relative - without domain)
|
@@ -4301,7 +4309,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
4301
4309
|
*/
|
4302
4310
|
self.baseHref = function() {
|
4303
4311
|
var href = baseElement.attr('href');
|
4304
|
-
return href ? href.replace(/^https
|
4312
|
+
return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : '';
|
4305
4313
|
};
|
4306
4314
|
|
4307
4315
|
//////////////////////////////////////////////////////////////
|
@@ -4323,13 +4331,13 @@ function Browser(window, document, $log, $sniffer) {
|
|
4323
4331
|
* It is not meant to be used directly, use the $cookie service instead.
|
4324
4332
|
*
|
4325
4333
|
* The return values vary depending on the arguments that the method was called with as follows:
|
4326
|
-
*
|
4334
|
+
*
|
4327
4335
|
* - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify
|
4328
4336
|
* it
|
4329
4337
|
* - cookies(name, value) -> set name to value, if value is undefined delete the cookie
|
4330
4338
|
* - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that
|
4331
4339
|
* way)
|
4332
|
-
*
|
4340
|
+
*
|
4333
4341
|
* @returns {Object} Hash of all cookies (if called without any parameter)
|
4334
4342
|
*/
|
4335
4343
|
self.cookies = function(name, value) {
|
@@ -4707,7 +4715,7 @@ function $TemplateCacheProvider() {
|
|
4707
4715
|
* @function
|
4708
4716
|
*
|
4709
4717
|
* @description
|
4710
|
-
* Compiles
|
4718
|
+
* Compiles an HTML string or DOM into a template and produces a template function, which
|
4711
4719
|
* can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.
|
4712
4720
|
*
|
4713
4721
|
* The compilation is a process of walking the DOM tree and matching DOM elements to
|
@@ -7049,7 +7057,7 @@ function $HttpProvider() {
|
|
7049
7057
|
* will result in the success callback being called. Note that if the response is a redirect,
|
7050
7058
|
* XMLHttpRequest will transparently follow it, meaning that the error callback will not be
|
7051
7059
|
* called for such responses.
|
7052
|
-
*
|
7060
|
+
*
|
7053
7061
|
* # Calling $http from outside AngularJS
|
7054
7062
|
* The `$http` service will not actually send the request until the next `$digest()` is
|
7055
7063
|
* executed. Normally this is not an issue, since almost all the time your call to `$http` will
|
@@ -7236,19 +7244,20 @@ function $HttpProvider() {
|
|
7236
7244
|
* return responseOrNewPromise
|
7237
7245
|
* }
|
7238
7246
|
* return $q.reject(rejection);
|
7239
|
-
* }
|
7240
|
-
* }
|
7247
|
+
* }
|
7248
|
+
* };
|
7241
7249
|
* });
|
7242
7250
|
*
|
7243
7251
|
* $httpProvider.interceptors.push('myHttpInterceptor');
|
7244
7252
|
*
|
7245
7253
|
*
|
7246
|
-
* // register the interceptor via an anonymous factory
|
7254
|
+
* // alternatively, register the interceptor via an anonymous factory
|
7247
7255
|
* $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
|
7248
7256
|
* return {
|
7249
7257
|
* 'request': function(config) {
|
7250
7258
|
* // same as above
|
7251
7259
|
* },
|
7260
|
+
*
|
7252
7261
|
* 'response': function(response) {
|
7253
7262
|
* // same as above
|
7254
7263
|
* }
|
@@ -7864,13 +7873,13 @@ function $HttpProvider() {
|
|
7864
7873
|
}];
|
7865
7874
|
}
|
7866
7875
|
|
7867
|
-
|
7876
|
+
function createXhr(method) {
|
7877
|
+
// IE8 doesn't support PATCH method, but the ActiveX object does
|
7868
7878
|
/* global ActiveXObject */
|
7869
|
-
|
7870
|
-
|
7871
|
-
|
7872
|
-
|
7873
|
-
};
|
7879
|
+
return (msie <= 8 && lowercase(method) === 'patch')
|
7880
|
+
? new ActiveXObject('Microsoft.XMLHTTP')
|
7881
|
+
: new window.XMLHttpRequest();
|
7882
|
+
}
|
7874
7883
|
|
7875
7884
|
|
7876
7885
|
/**
|
@@ -7892,11 +7901,11 @@ var XHR = window.XMLHttpRequest || function() {
|
|
7892
7901
|
*/
|
7893
7902
|
function $HttpBackendProvider() {
|
7894
7903
|
this.$get = ['$browser', '$window', '$document', function($browser, $window, $document) {
|
7895
|
-
return createHttpBackend($browser,
|
7904
|
+
return createHttpBackend($browser, createXhr, $browser.defer, $window.angular.callbacks, $document[0]);
|
7896
7905
|
}];
|
7897
7906
|
}
|
7898
7907
|
|
7899
|
-
function createHttpBackend($browser,
|
7908
|
+
function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
|
7900
7909
|
var ABORTED = -1;
|
7901
7910
|
|
7902
7911
|
// TODO(vojta): fix the signature
|
@@ -7921,7 +7930,9 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument)
|
|
7921
7930
|
delete callbacks[callbackId];
|
7922
7931
|
});
|
7923
7932
|
} else {
|
7924
|
-
|
7933
|
+
|
7934
|
+
var xhr = createXhr(method);
|
7935
|
+
|
7925
7936
|
xhr.open(method, url, true);
|
7926
7937
|
forEach(headers, function(value, key) {
|
7927
7938
|
if (isDefined(value)) {
|
@@ -7933,7 +7944,14 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument)
|
|
7933
7944
|
// response is in the cache. the promise api will ensure that to the app code the api is
|
7934
7945
|
// always async
|
7935
7946
|
xhr.onreadystatechange = function() {
|
7936
|
-
|
7947
|
+
// onreadystatechange might by called multiple times with readyState === 4 on mobile webkit caused by
|
7948
|
+
// xhrs that are resolved while the app is in the background (see #5426).
|
7949
|
+
// since calling completeRequest sets the `xhr` variable to null, we just check if it's not null before
|
7950
|
+
// continuing
|
7951
|
+
//
|
7952
|
+
// we can't set xhr.onreadystatechange to undefined or delete it because that breaks IE8 (method=PATCH) and
|
7953
|
+
// Safari respectively.
|
7954
|
+
if (xhr && xhr.readyState == 4) {
|
7937
7955
|
var responseHeaders = null,
|
7938
7956
|
response = null;
|
7939
7957
|
|
@@ -9180,16 +9198,17 @@ function $LocationProvider(){
|
|
9180
9198
|
// update $location when $browser url changes
|
9181
9199
|
$browser.onUrlChange(function(newUrl) {
|
9182
9200
|
if ($location.absUrl() != newUrl) {
|
9183
|
-
if ($rootScope.$broadcast('$locationChangeStart', newUrl,
|
9184
|
-
$location.absUrl()).defaultPrevented) {
|
9185
|
-
$browser.url($location.absUrl());
|
9186
|
-
return;
|
9187
|
-
}
|
9188
9201
|
$rootScope.$evalAsync(function() {
|
9189
9202
|
var oldUrl = $location.absUrl();
|
9190
9203
|
|
9191
9204
|
$location.$$parse(newUrl);
|
9192
|
-
|
9205
|
+
if ($rootScope.$broadcast('$locationChangeStart', newUrl,
|
9206
|
+
oldUrl).defaultPrevented) {
|
9207
|
+
$location.$$parse(oldUrl);
|
9208
|
+
$browser.url(oldUrl);
|
9209
|
+
} else {
|
9210
|
+
afterLocationChange(oldUrl);
|
9211
|
+
}
|
9193
9212
|
});
|
9194
9213
|
if (!$rootScope.$$phase) $rootScope.$digest();
|
9195
9214
|
}
|
@@ -11299,6 +11318,7 @@ function $RootScopeProvider(){
|
|
11299
11318
|
this.$$asyncQueue = [];
|
11300
11319
|
this.$$postDigestQueue = [];
|
11301
11320
|
this.$$listeners = {};
|
11321
|
+
this.$$listenerCount = {};
|
11302
11322
|
this.$$isolateBindings = {};
|
11303
11323
|
}
|
11304
11324
|
|
@@ -11358,6 +11378,7 @@ function $RootScopeProvider(){
|
|
11358
11378
|
}
|
11359
11379
|
child['this'] = child;
|
11360
11380
|
child.$$listeners = {};
|
11381
|
+
child.$$listenerCount = {};
|
11361
11382
|
child.$parent = this;
|
11362
11383
|
child.$$watchers = child.$$nextSibling = child.$$childHead = child.$$childTail = null;
|
11363
11384
|
child.$$prevSibling = this.$$childTail;
|
@@ -11517,6 +11538,7 @@ function $RootScopeProvider(){
|
|
11517
11538
|
|
11518
11539
|
return function() {
|
11519
11540
|
arrayRemove(array, watcher);
|
11541
|
+
lastDirtyWatch = null;
|
11520
11542
|
};
|
11521
11543
|
},
|
11522
11544
|
|
@@ -11862,6 +11884,8 @@ function $RootScopeProvider(){
|
|
11862
11884
|
this.$$destroyed = true;
|
11863
11885
|
if (this === $rootScope) return;
|
11864
11886
|
|
11887
|
+
forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));
|
11888
|
+
|
11865
11889
|
if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
|
11866
11890
|
if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
|
11867
11891
|
if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
|
@@ -12051,8 +12075,18 @@ function $RootScopeProvider(){
|
|
12051
12075
|
}
|
12052
12076
|
namedListeners.push(listener);
|
12053
12077
|
|
12078
|
+
var current = this;
|
12079
|
+
do {
|
12080
|
+
if (!current.$$listenerCount[name]) {
|
12081
|
+
current.$$listenerCount[name] = 0;
|
12082
|
+
}
|
12083
|
+
current.$$listenerCount[name]++;
|
12084
|
+
} while ((current = current.$parent));
|
12085
|
+
|
12086
|
+
var self = this;
|
12054
12087
|
return function() {
|
12055
12088
|
namedListeners[indexOf(namedListeners, listener)] = null;
|
12089
|
+
decrementListenerCount(self, 1, name);
|
12056
12090
|
};
|
12057
12091
|
},
|
12058
12092
|
|
@@ -12164,8 +12198,7 @@ function $RootScopeProvider(){
|
|
12164
12198
|
listeners, i, length;
|
12165
12199
|
|
12166
12200
|
//down while you can, then up and next sibling or up and next sibling until back at root
|
12167
|
-
|
12168
|
-
current = next;
|
12201
|
+
while ((current = next)) {
|
12169
12202
|
event.currentScope = current;
|
12170
12203
|
listeners = current.$$listeners[name] || [];
|
12171
12204
|
for (i=0, length = listeners.length; i<length; i++) {
|
@@ -12187,12 +12220,14 @@ function $RootScopeProvider(){
|
|
12187
12220
|
// Insanity Warning: scope depth-first traversal
|
12188
12221
|
// yes, this code is a bit crazy, but it works and we have tests to prove it!
|
12189
12222
|
// this piece should be kept in sync with the traversal in $digest
|
12190
|
-
|
12223
|
+
// (though it differs due to having the extra check for $$listenerCount)
|
12224
|
+
if (!(next = ((current.$$listenerCount[name] && current.$$childHead) ||
|
12225
|
+
(current !== target && current.$$nextSibling)))) {
|
12191
12226
|
while(current !== target && !(next = current.$$nextSibling)) {
|
12192
12227
|
current = current.$parent;
|
12193
12228
|
}
|
12194
12229
|
}
|
12195
|
-
}
|
12230
|
+
}
|
12196
12231
|
|
12197
12232
|
return event;
|
12198
12233
|
}
|
@@ -12221,6 +12256,16 @@ function $RootScopeProvider(){
|
|
12221
12256
|
return fn;
|
12222
12257
|
}
|
12223
12258
|
|
12259
|
+
function decrementListenerCount(current, count, name) {
|
12260
|
+
do {
|
12261
|
+
current.$$listenerCount[name] -= count;
|
12262
|
+
|
12263
|
+
if (current.$$listenerCount[name] === 0) {
|
12264
|
+
delete current.$$listenerCount[name];
|
12265
|
+
}
|
12266
|
+
} while ((current = current.$parent));
|
12267
|
+
}
|
12268
|
+
|
12224
12269
|
/**
|
12225
12270
|
* function used as an initial value for watchers.
|
12226
12271
|
* because it's unique we can easily tell it apart from other values
|
@@ -13439,7 +13484,7 @@ function $SnifferProvider() {
|
|
13439
13484
|
// http://code.google.com/p/android/issues/detail?id=17471
|
13440
13485
|
// https://github.com/angular/angular.js/issues/904
|
13441
13486
|
|
13442
|
-
// older
|
13487
|
+
// older webkit browser (533.9) on Boxee box has exactly the same problem as Android has
|
13443
13488
|
// so let's not use the history API also
|
13444
13489
|
// We are purposefully using `!(android < 4)` to cover the case when `android` is undefined
|
13445
13490
|
// jshint -W018
|
@@ -13861,21 +13906,21 @@ function $FilterProvider($provide) {
|
|
13861
13906
|
* property of the object. That's equivalent to the simple substring match with a `string`
|
13862
13907
|
* as described above.
|
13863
13908
|
*
|
13864
|
-
* - `function`: A predicate function can be used to write arbitrary filters. The function is
|
13909
|
+
* - `function(value)`: A predicate function can be used to write arbitrary filters. The function is
|
13865
13910
|
* called for each element of `array`. The final result is an array of those elements that
|
13866
13911
|
* the predicate returned true for.
|
13867
13912
|
*
|
13868
|
-
* @param {function(
|
13913
|
+
* @param {function(actual, expected)|true|undefined} comparator Comparator which is used in
|
13869
13914
|
* determining if the expected value (from the filter expression) and actual value (from
|
13870
13915
|
* the object in the array) should be considered a match.
|
13871
13916
|
*
|
13872
13917
|
* Can be one of:
|
13873
13918
|
*
|
13874
|
-
* - `function(
|
13919
|
+
* - `function(actual, expected)`:
|
13875
13920
|
* The function will be given the object value and the predicate value to compare and
|
13876
13921
|
* should return true if the item should be included in filtered result.
|
13877
13922
|
*
|
13878
|
-
* - `true`: A shorthand for `function(
|
13923
|
+
* - `true`: A shorthand for `function(actual, expected) { return angular.equals(expected, actual)}`.
|
13879
13924
|
* this is essentially strict comparison of expected and actual.
|
13880
13925
|
*
|
13881
13926
|
* - `false|undefined`: A short hand for a function which will look for a substring match in case
|
@@ -15980,9 +16025,13 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
15980
16025
|
}
|
15981
16026
|
|
15982
16027
|
if (ctrl.$viewValue !== value) {
|
15983
|
-
scope
|
16028
|
+
if (scope.$$phase) {
|
15984
16029
|
ctrl.$setViewValue(value);
|
15985
|
-
}
|
16030
|
+
} else {
|
16031
|
+
scope.$apply(function() {
|
16032
|
+
ctrl.$setViewValue(value);
|
16033
|
+
});
|
16034
|
+
}
|
15986
16035
|
}
|
15987
16036
|
};
|
15988
16037
|
|
@@ -19061,7 +19110,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
19061
19110
|
$$tlb: true,
|
19062
19111
|
link: function($scope, $element, $attr, ctrl, $transclude){
|
19063
19112
|
var expression = $attr.ngRepeat;
|
19064
|
-
var match = expression.match(/^\s*(
|
19113
|
+
var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),
|
19065
19114
|
trackByExp, trackByExpGetter, trackByIdExpFn, trackByIdArrayFn, trackByIdObjFn,
|
19066
19115
|
lhs, rhs, valueIdentifier, keyIdentifier,
|
19067
19116
|
hashFnLocals = {$id: hashKey};
|
@@ -19073,7 +19122,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
19073
19122
|
|
19074
19123
|
lhs = match[1];
|
19075
19124
|
rhs = match[2];
|
19076
|
-
trackByExp = match[
|
19125
|
+
trackByExp = match[3];
|
19077
19126
|
|
19078
19127
|
if (trackByExp) {
|
19079
19128
|
trackByExpGetter = $parse(trackByExp);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angularjs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hirav Gandhi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|