angularjs-rails 1.2.6 → 1.2.7
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/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
|