angularjs-rails 1.3.9 → 1.3.10
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 +2 -2
- data/vendor/assets/javascripts/angular-animate.js +2 -2
- data/vendor/assets/javascripts/angular-aria.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +2 -2
- data/vendor/assets/javascripts/angular-messages.js +2 -2
- data/vendor/assets/javascripts/angular-mocks.js +1 -1
- data/vendor/assets/javascripts/angular-resource.js +1 -1
- data/vendor/assets/javascripts/angular-route.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +69 -37
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +69 -37
- data/vendor/assets/javascripts/unstable/angular-animate.js +2 -2
- data/vendor/assets/javascripts/unstable/angular-aria.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-loader.js +2 -2
- data/vendor/assets/javascripts/unstable/angular-messages.js +2 -2
- data/vendor/assets/javascripts/unstable/angular-mocks.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-resource.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-route.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-scenario.js +69 -37
- data/vendor/assets/javascripts/unstable/angular-touch.js +1 -1
- data/vendor/assets/javascripts/unstable/angular.js +69 -37
- 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: 5a121dbbf6f1ca3f7e7398f18c2dc67475ef4747
|
4
|
+
data.tar.gz: 4156411033215270bb5a45f65efd6b5e92cc3ae3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1d0ecd81cd37e143a25d9a1dbfff375a89b4e0eede79dcfecf37bc0539a685d97d125bdfb647046d0211ca1c509fdd7abb52f3399f7594945b14c9b8549d167
|
7
|
+
data.tar.gz: 27032be69e3320d65b331e8e93a265201d1b81060a4648919d620eb9d862fa5ede2fd1d3dffabd3e6c1d9b7883794a49cdd57ad731dd28cd28683df58306f7f9
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.10
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -1875,7 +1875,7 @@ angular.module('ngAnimate', ['ng'])
|
|
1875
1875
|
return;
|
1876
1876
|
}
|
1877
1877
|
|
1878
|
-
if (!staggerTime && styles) {
|
1878
|
+
if (!staggerTime && styles && Object.keys(styles).length > 0) {
|
1879
1879
|
if (!timings.transitionDuration) {
|
1880
1880
|
element.css('transition', timings.animationDuration + 's linear all');
|
1881
1881
|
appliedStyles.push('transition');
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.10
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -55,7 +55,7 @@ function minErr(module, ErrorConstructor) {
|
|
55
55
|
return match;
|
56
56
|
});
|
57
57
|
|
58
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
58
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.10/' +
|
59
59
|
(module ? module + '/' : '') + code;
|
60
60
|
for (i = 2; i < arguments.length; i++) {
|
61
61
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.10
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -178,7 +178,7 @@ angular.module('ngMessages', [])
|
|
178
178
|
* at a time and this depends on the prioritization of the messages within the template. (This can
|
179
179
|
* be changed by using the ng-messages-multiple on the directive container.)
|
180
180
|
*
|
181
|
-
* A remote template can also be used to promote message
|
181
|
+
* A remote template can also be used to promote message reusability and messages can also be
|
182
182
|
* overridden.
|
183
183
|
*
|
184
184
|
* {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`.
|
@@ -9190,7 +9190,7 @@ return jQuery;
|
|
9190
9190
|
}));
|
9191
9191
|
|
9192
9192
|
/**
|
9193
|
-
* @license AngularJS v1.3.
|
9193
|
+
* @license AngularJS v1.3.10
|
9194
9194
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
9195
9195
|
* License: MIT
|
9196
9196
|
*/
|
@@ -9246,7 +9246,7 @@ function minErr(module, ErrorConstructor) {
|
|
9246
9246
|
return match;
|
9247
9247
|
});
|
9248
9248
|
|
9249
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
9249
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.10/' +
|
9250
9250
|
(module ? module + '/' : '') + code;
|
9251
9251
|
for (i = 2; i < arguments.length; i++) {
|
9252
9252
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -10594,7 +10594,7 @@ function angularInit(element, bootstrap) {
|
|
10594
10594
|
* @param {DOMElement} element DOM element which is the root of angular application.
|
10595
10595
|
* @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
|
10596
10596
|
* Each item in the array should be the name of a predefined module or a (DI annotated)
|
10597
|
-
* function that will be invoked by the injector as a
|
10597
|
+
* function that will be invoked by the injector as a `config` block.
|
10598
10598
|
* See: {@link angular.module modules}
|
10599
10599
|
* @param {Object=} config an object for defining configuration options for the application. The
|
10600
10600
|
* following keys are supported:
|
@@ -11310,11 +11310,11 @@ function toDebugString(obj) {
|
|
11310
11310
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11311
11311
|
*/
|
11312
11312
|
var version = {
|
11313
|
-
full: '1.3.
|
11313
|
+
full: '1.3.10', // all of these placeholder strings will be replaced by grunt's
|
11314
11314
|
major: 1, // package task
|
11315
11315
|
minor: 3,
|
11316
|
-
dot:
|
11317
|
-
codeName: '
|
11316
|
+
dot: 10,
|
11317
|
+
codeName: 'heliotropic-sundial'
|
11318
11318
|
};
|
11319
11319
|
|
11320
11320
|
|
@@ -13378,7 +13378,7 @@ function createInjector(modulesToLoad, strictDi) {
|
|
13378
13378
|
// Check if Type is annotated and use just the given function at n-1 as parameter
|
13379
13379
|
// e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
|
13380
13380
|
// Object creation: http://jsperf.com/create-constructor/2
|
13381
|
-
var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype);
|
13381
|
+
var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
|
13382
13382
|
var returnedValue = invoke(Type, instance, locals, serviceName);
|
13383
13383
|
|
13384
13384
|
return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
|
@@ -16357,6 +16357,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16357
16357
|
|
16358
16358
|
// use class as directive
|
16359
16359
|
className = node.className;
|
16360
|
+
if (isObject(className)) {
|
16361
|
+
// Maybe SVGAnimatedString
|
16362
|
+
className = className.animVal;
|
16363
|
+
}
|
16360
16364
|
if (isString(className) && className !== '') {
|
16361
16365
|
while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
|
16362
16366
|
nName = directiveNormalize(match[2]);
|
@@ -17623,7 +17627,7 @@ function $ControllerProvider() {
|
|
17623
17627
|
// Object creation: http://jsperf.com/create-constructor/2
|
17624
17628
|
var controllerPrototype = (isArray(expression) ?
|
17625
17629
|
expression[expression.length - 1] : expression).prototype;
|
17626
|
-
instance = Object.create(controllerPrototype);
|
17630
|
+
instance = Object.create(controllerPrototype || null);
|
17627
17631
|
|
17628
17632
|
if (identifier) {
|
17629
17633
|
addIdentifier(locals, identifier, instance, constructor || expression.name);
|
@@ -23692,7 +23696,7 @@ function $RootScopeProvider() {
|
|
23692
23696
|
* @kind function
|
23693
23697
|
*
|
23694
23698
|
* @description
|
23695
|
-
* Schedule the
|
23699
|
+
* Schedule the invocation of $apply to occur at a later time. The actual time difference
|
23696
23700
|
* varies across browsers, but is typically around ~10 milliseconds.
|
23697
23701
|
*
|
23698
23702
|
* This can be used to queue up multiple expressions which need to be evaluated in the same
|
@@ -25202,8 +25206,7 @@ var $compileMinErr = minErr('$compile');
|
|
25202
25206
|
function $TemplateRequestProvider() {
|
25203
25207
|
this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) {
|
25204
25208
|
function handleRequestFn(tpl, ignoreRequestError) {
|
25205
|
-
|
25206
|
-
self.totalPendingRequests++;
|
25209
|
+
handleRequestFn.totalPendingRequests++;
|
25207
25210
|
|
25208
25211
|
var transformResponse = $http.defaults && $http.defaults.transformResponse;
|
25209
25212
|
|
@@ -25221,13 +25224,14 @@ function $TemplateRequestProvider() {
|
|
25221
25224
|
};
|
25222
25225
|
|
25223
25226
|
return $http.get(tpl, httpOptions)
|
25227
|
+
.finally(function() {
|
25228
|
+
handleRequestFn.totalPendingRequests--;
|
25229
|
+
})
|
25224
25230
|
.then(function(response) {
|
25225
|
-
self.totalPendingRequests--;
|
25226
25231
|
return response.data;
|
25227
25232
|
}, handleError);
|
25228
25233
|
|
25229
25234
|
function handleError(resp) {
|
25230
|
-
self.totalPendingRequests--;
|
25231
25235
|
if (!ignoreRequestError) {
|
25232
25236
|
throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl);
|
25233
25237
|
}
|
@@ -26317,7 +26321,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d
|
|
26317
26321
|
* * `'m'`: Minute in hour (0-59)
|
26318
26322
|
* * `'ss'`: Second in minute, padded (00-59)
|
26319
26323
|
* * `'s'`: Second in minute (0-59)
|
26320
|
-
* * `'
|
26324
|
+
* * `'sss'`: Millisecond in second, padded (000-999)
|
26321
26325
|
* * `'a'`: AM/PM marker
|
26322
26326
|
* * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
|
26323
26327
|
* * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
|
@@ -27453,6 +27457,9 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
|
|
27453
27457
|
forEach(form.$error, function(value, name) {
|
27454
27458
|
form.$setValidity(name, null, control);
|
27455
27459
|
});
|
27460
|
+
forEach(form.$$success, function(value, name) {
|
27461
|
+
form.$setValidity(name, null, control);
|
27462
|
+
});
|
27456
27463
|
|
27457
27464
|
arrayRemove(controls, control);
|
27458
27465
|
};
|
@@ -27470,23 +27477,23 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
|
|
27470
27477
|
addSetValidityMethod({
|
27471
27478
|
ctrl: this,
|
27472
27479
|
$element: element,
|
27473
|
-
set: function(object, property,
|
27480
|
+
set: function(object, property, controller) {
|
27474
27481
|
var list = object[property];
|
27475
27482
|
if (!list) {
|
27476
|
-
object[property] = [
|
27483
|
+
object[property] = [controller];
|
27477
27484
|
} else {
|
27478
|
-
var index = list.indexOf(
|
27485
|
+
var index = list.indexOf(controller);
|
27479
27486
|
if (index === -1) {
|
27480
|
-
list.push(
|
27487
|
+
list.push(controller);
|
27481
27488
|
}
|
27482
27489
|
}
|
27483
27490
|
},
|
27484
|
-
unset: function(object, property,
|
27491
|
+
unset: function(object, property, controller) {
|
27485
27492
|
var list = object[property];
|
27486
27493
|
if (!list) {
|
27487
27494
|
return;
|
27488
27495
|
}
|
27489
|
-
arrayRemove(list,
|
27496
|
+
arrayRemove(list, controller);
|
27490
27497
|
if (list.length === 0) {
|
27491
27498
|
delete object[property];
|
27492
27499
|
}
|
@@ -29831,8 +29838,9 @@ function classDirective(name, selector) {
|
|
29831
29838
|
* new classes are added.
|
29832
29839
|
*
|
29833
29840
|
* @animations
|
29834
|
-
* add - happens just before the class is applied to the
|
29835
|
-
*
|
29841
|
+
* **add** - happens just before the class is applied to the elements
|
29842
|
+
*
|
29843
|
+
* **remove** - happens just before the class is removed from the element
|
29836
29844
|
*
|
29837
29845
|
* @element ANY
|
29838
29846
|
* @param {expression} ngClass {@link guide/expression Expression} to eval. The result
|
@@ -31298,7 +31306,7 @@ var ngIfDirective = ['$animate', function($animate) {
|
|
31298
31306
|
* @name ngInclude#$includeContentError
|
31299
31307
|
* @eventType emit on the scope ngInclude was declared in
|
31300
31308
|
* @description
|
31301
|
-
* Emitted when a template HTTP request yields an
|
31309
|
+
* Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
|
31302
31310
|
*
|
31303
31311
|
* @param {Object} angularEvent Synthetic event object.
|
31304
31312
|
* @param {String} src URL of content to load.
|
@@ -32855,22 +32863,22 @@ function addSetValidityMethod(context) {
|
|
32855
32863
|
|
32856
32864
|
ctrl.$setValidity = setValidity;
|
32857
32865
|
|
32858
|
-
function setValidity(validationErrorKey, state,
|
32866
|
+
function setValidity(validationErrorKey, state, controller) {
|
32859
32867
|
if (state === undefined) {
|
32860
|
-
createAndSet('$pending', validationErrorKey,
|
32868
|
+
createAndSet('$pending', validationErrorKey, controller);
|
32861
32869
|
} else {
|
32862
|
-
unsetAndCleanup('$pending', validationErrorKey,
|
32870
|
+
unsetAndCleanup('$pending', validationErrorKey, controller);
|
32863
32871
|
}
|
32864
32872
|
if (!isBoolean(state)) {
|
32865
|
-
unset(ctrl.$error, validationErrorKey,
|
32866
|
-
unset(ctrl.$$success, validationErrorKey,
|
32873
|
+
unset(ctrl.$error, validationErrorKey, controller);
|
32874
|
+
unset(ctrl.$$success, validationErrorKey, controller);
|
32867
32875
|
} else {
|
32868
32876
|
if (state) {
|
32869
|
-
unset(ctrl.$error, validationErrorKey,
|
32870
|
-
set(ctrl.$$success, validationErrorKey,
|
32877
|
+
unset(ctrl.$error, validationErrorKey, controller);
|
32878
|
+
set(ctrl.$$success, validationErrorKey, controller);
|
32871
32879
|
} else {
|
32872
|
-
set(ctrl.$error, validationErrorKey,
|
32873
|
-
unset(ctrl.$$success, validationErrorKey,
|
32880
|
+
set(ctrl.$error, validationErrorKey, controller);
|
32881
|
+
unset(ctrl.$$success, validationErrorKey, controller);
|
32874
32882
|
}
|
32875
32883
|
}
|
32876
32884
|
if (ctrl.$pending) {
|
@@ -32898,20 +32906,21 @@ function addSetValidityMethod(context) {
|
|
32898
32906
|
} else {
|
32899
32907
|
combinedState = null;
|
32900
32908
|
}
|
32909
|
+
|
32901
32910
|
toggleValidationCss(validationErrorKey, combinedState);
|
32902
32911
|
parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
|
32903
32912
|
}
|
32904
32913
|
|
32905
|
-
function createAndSet(name, value,
|
32914
|
+
function createAndSet(name, value, controller) {
|
32906
32915
|
if (!ctrl[name]) {
|
32907
32916
|
ctrl[name] = {};
|
32908
32917
|
}
|
32909
|
-
set(ctrl[name], value,
|
32918
|
+
set(ctrl[name], value, controller);
|
32910
32919
|
}
|
32911
32920
|
|
32912
|
-
function unsetAndCleanup(name, value,
|
32921
|
+
function unsetAndCleanup(name, value, controller) {
|
32913
32922
|
if (ctrl[name]) {
|
32914
|
-
unset(ctrl[name], value,
|
32923
|
+
unset(ctrl[name], value, controller);
|
32915
32924
|
}
|
32916
32925
|
if (isObjectEmpty(ctrl[name])) {
|
32917
32926
|
ctrl[name] = undefined;
|
@@ -33230,6 +33239,29 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
|
|
33230
33239
|
* Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
|
33231
33240
|
* This may be useful when, for instance, nesting ngRepeats.
|
33232
33241
|
*
|
33242
|
+
* # Iterating over object properties
|
33243
|
+
*
|
33244
|
+
* It is possible to get `ngRepeat` to iterate over the properties of an object using the following
|
33245
|
+
* syntax:
|
33246
|
+
*
|
33247
|
+
* ```js
|
33248
|
+
* <div ng-repeat="(key, value) in myObj"> ... </div>
|
33249
|
+
* ```
|
33250
|
+
*
|
33251
|
+
* You need to be aware that the JavaScript specification does not define what order
|
33252
|
+
* it will return the keys for an object. In order to have a guaranteed deterministic order
|
33253
|
+
* for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**.
|
33254
|
+
*
|
33255
|
+
* If this is not desired, the recommended workaround is to convert your object into an array
|
33256
|
+
* that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
|
33257
|
+
* do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
|
33258
|
+
* or implement a `$watch` on the object yourself.
|
33259
|
+
*
|
33260
|
+
* In version 1.4 we will remove the sorting, since it seems that browsers generally follow the
|
33261
|
+
* strategy of providing keys in the order in which they were defined, although there are exceptions
|
33262
|
+
* when keys are deleted and reinstated.
|
33263
|
+
*
|
33264
|
+
*
|
33233
33265
|
* # Special repeat start and end points
|
33234
33266
|
* To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
|
33235
33267
|
* the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
|
@@ -33474,7 +33506,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
33474
33506
|
var keyIdentifier = match[2];
|
33475
33507
|
|
33476
33508
|
if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
|
33477
|
-
/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(aliasAs))) {
|
33509
|
+
/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
|
33478
33510
|
throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
|
33479
33511
|
aliasAs);
|
33480
33512
|
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.10
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -54,7 +54,7 @@ function minErr(module, ErrorConstructor) {
|
|
54
54
|
return match;
|
55
55
|
});
|
56
56
|
|
57
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
57
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.10/' +
|
58
58
|
(module ? module + '/' : '') + code;
|
59
59
|
for (i = 2; i < arguments.length; i++) {
|
60
60
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -1402,7 +1402,7 @@ function angularInit(element, bootstrap) {
|
|
1402
1402
|
* @param {DOMElement} element DOM element which is the root of angular application.
|
1403
1403
|
* @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
|
1404
1404
|
* Each item in the array should be the name of a predefined module or a (DI annotated)
|
1405
|
-
* function that will be invoked by the injector as a
|
1405
|
+
* function that will be invoked by the injector as a `config` block.
|
1406
1406
|
* See: {@link angular.module modules}
|
1407
1407
|
* @param {Object=} config an object for defining configuration options for the application. The
|
1408
1408
|
* following keys are supported:
|
@@ -2118,11 +2118,11 @@ function toDebugString(obj) {
|
|
2118
2118
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
2119
2119
|
*/
|
2120
2120
|
var version = {
|
2121
|
-
full: '1.3.
|
2121
|
+
full: '1.3.10', // all of these placeholder strings will be replaced by grunt's
|
2122
2122
|
major: 1, // package task
|
2123
2123
|
minor: 3,
|
2124
|
-
dot:
|
2125
|
-
codeName: '
|
2124
|
+
dot: 10,
|
2125
|
+
codeName: 'heliotropic-sundial'
|
2126
2126
|
};
|
2127
2127
|
|
2128
2128
|
|
@@ -4186,7 +4186,7 @@ function createInjector(modulesToLoad, strictDi) {
|
|
4186
4186
|
// Check if Type is annotated and use just the given function at n-1 as parameter
|
4187
4187
|
// e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
|
4188
4188
|
// Object creation: http://jsperf.com/create-constructor/2
|
4189
|
-
var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype);
|
4189
|
+
var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype || null);
|
4190
4190
|
var returnedValue = invoke(Type, instance, locals, serviceName);
|
4191
4191
|
|
4192
4192
|
return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
|
@@ -7165,6 +7165,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
7165
7165
|
|
7166
7166
|
// use class as directive
|
7167
7167
|
className = node.className;
|
7168
|
+
if (isObject(className)) {
|
7169
|
+
// Maybe SVGAnimatedString
|
7170
|
+
className = className.animVal;
|
7171
|
+
}
|
7168
7172
|
if (isString(className) && className !== '') {
|
7169
7173
|
while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) {
|
7170
7174
|
nName = directiveNormalize(match[2]);
|
@@ -8431,7 +8435,7 @@ function $ControllerProvider() {
|
|
8431
8435
|
// Object creation: http://jsperf.com/create-constructor/2
|
8432
8436
|
var controllerPrototype = (isArray(expression) ?
|
8433
8437
|
expression[expression.length - 1] : expression).prototype;
|
8434
|
-
instance = Object.create(controllerPrototype);
|
8438
|
+
instance = Object.create(controllerPrototype || null);
|
8435
8439
|
|
8436
8440
|
if (identifier) {
|
8437
8441
|
addIdentifier(locals, identifier, instance, constructor || expression.name);
|
@@ -14500,7 +14504,7 @@ function $RootScopeProvider() {
|
|
14500
14504
|
* @kind function
|
14501
14505
|
*
|
14502
14506
|
* @description
|
14503
|
-
* Schedule the
|
14507
|
+
* Schedule the invocation of $apply to occur at a later time. The actual time difference
|
14504
14508
|
* varies across browsers, but is typically around ~10 milliseconds.
|
14505
14509
|
*
|
14506
14510
|
* This can be used to queue up multiple expressions which need to be evaluated in the same
|
@@ -16010,8 +16014,7 @@ var $compileMinErr = minErr('$compile');
|
|
16010
16014
|
function $TemplateRequestProvider() {
|
16011
16015
|
this.$get = ['$templateCache', '$http', '$q', function($templateCache, $http, $q) {
|
16012
16016
|
function handleRequestFn(tpl, ignoreRequestError) {
|
16013
|
-
|
16014
|
-
self.totalPendingRequests++;
|
16017
|
+
handleRequestFn.totalPendingRequests++;
|
16015
16018
|
|
16016
16019
|
var transformResponse = $http.defaults && $http.defaults.transformResponse;
|
16017
16020
|
|
@@ -16029,13 +16032,14 @@ function $TemplateRequestProvider() {
|
|
16029
16032
|
};
|
16030
16033
|
|
16031
16034
|
return $http.get(tpl, httpOptions)
|
16035
|
+
.finally(function() {
|
16036
|
+
handleRequestFn.totalPendingRequests--;
|
16037
|
+
})
|
16032
16038
|
.then(function(response) {
|
16033
|
-
self.totalPendingRequests--;
|
16034
16039
|
return response.data;
|
16035
16040
|
}, handleError);
|
16036
16041
|
|
16037
16042
|
function handleError(resp) {
|
16038
|
-
self.totalPendingRequests--;
|
16039
16043
|
if (!ignoreRequestError) {
|
16040
16044
|
throw $compileMinErr('tpload', 'Failed to load template: {0}', tpl);
|
16041
16045
|
}
|
@@ -17125,7 +17129,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d
|
|
17125
17129
|
* * `'m'`: Minute in hour (0-59)
|
17126
17130
|
* * `'ss'`: Second in minute, padded (00-59)
|
17127
17131
|
* * `'s'`: Second in minute (0-59)
|
17128
|
-
* * `'
|
17132
|
+
* * `'sss'`: Millisecond in second, padded (000-999)
|
17129
17133
|
* * `'a'`: AM/PM marker
|
17130
17134
|
* * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200)
|
17131
17135
|
* * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year
|
@@ -18261,6 +18265,9 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
|
|
18261
18265
|
forEach(form.$error, function(value, name) {
|
18262
18266
|
form.$setValidity(name, null, control);
|
18263
18267
|
});
|
18268
|
+
forEach(form.$$success, function(value, name) {
|
18269
|
+
form.$setValidity(name, null, control);
|
18270
|
+
});
|
18264
18271
|
|
18265
18272
|
arrayRemove(controls, control);
|
18266
18273
|
};
|
@@ -18278,23 +18285,23 @@ function FormController(element, attrs, $scope, $animate, $interpolate) {
|
|
18278
18285
|
addSetValidityMethod({
|
18279
18286
|
ctrl: this,
|
18280
18287
|
$element: element,
|
18281
|
-
set: function(object, property,
|
18288
|
+
set: function(object, property, controller) {
|
18282
18289
|
var list = object[property];
|
18283
18290
|
if (!list) {
|
18284
|
-
object[property] = [
|
18291
|
+
object[property] = [controller];
|
18285
18292
|
} else {
|
18286
|
-
var index = list.indexOf(
|
18293
|
+
var index = list.indexOf(controller);
|
18287
18294
|
if (index === -1) {
|
18288
|
-
list.push(
|
18295
|
+
list.push(controller);
|
18289
18296
|
}
|
18290
18297
|
}
|
18291
18298
|
},
|
18292
|
-
unset: function(object, property,
|
18299
|
+
unset: function(object, property, controller) {
|
18293
18300
|
var list = object[property];
|
18294
18301
|
if (!list) {
|
18295
18302
|
return;
|
18296
18303
|
}
|
18297
|
-
arrayRemove(list,
|
18304
|
+
arrayRemove(list, controller);
|
18298
18305
|
if (list.length === 0) {
|
18299
18306
|
delete object[property];
|
18300
18307
|
}
|
@@ -20639,8 +20646,9 @@ function classDirective(name, selector) {
|
|
20639
20646
|
* new classes are added.
|
20640
20647
|
*
|
20641
20648
|
* @animations
|
20642
|
-
* add - happens just before the class is applied to the
|
20643
|
-
*
|
20649
|
+
* **add** - happens just before the class is applied to the elements
|
20650
|
+
*
|
20651
|
+
* **remove** - happens just before the class is removed from the element
|
20644
20652
|
*
|
20645
20653
|
* @element ANY
|
20646
20654
|
* @param {expression} ngClass {@link guide/expression Expression} to eval. The result
|
@@ -22106,7 +22114,7 @@ var ngIfDirective = ['$animate', function($animate) {
|
|
22106
22114
|
* @name ngInclude#$includeContentError
|
22107
22115
|
* @eventType emit on the scope ngInclude was declared in
|
22108
22116
|
* @description
|
22109
|
-
* Emitted when a template HTTP request yields an
|
22117
|
+
* Emitted when a template HTTP request yields an erroneous response (status < 200 || status > 299)
|
22110
22118
|
*
|
22111
22119
|
* @param {Object} angularEvent Synthetic event object.
|
22112
22120
|
* @param {String} src URL of content to load.
|
@@ -23663,22 +23671,22 @@ function addSetValidityMethod(context) {
|
|
23663
23671
|
|
23664
23672
|
ctrl.$setValidity = setValidity;
|
23665
23673
|
|
23666
|
-
function setValidity(validationErrorKey, state,
|
23674
|
+
function setValidity(validationErrorKey, state, controller) {
|
23667
23675
|
if (state === undefined) {
|
23668
|
-
createAndSet('$pending', validationErrorKey,
|
23676
|
+
createAndSet('$pending', validationErrorKey, controller);
|
23669
23677
|
} else {
|
23670
|
-
unsetAndCleanup('$pending', validationErrorKey,
|
23678
|
+
unsetAndCleanup('$pending', validationErrorKey, controller);
|
23671
23679
|
}
|
23672
23680
|
if (!isBoolean(state)) {
|
23673
|
-
unset(ctrl.$error, validationErrorKey,
|
23674
|
-
unset(ctrl.$$success, validationErrorKey,
|
23681
|
+
unset(ctrl.$error, validationErrorKey, controller);
|
23682
|
+
unset(ctrl.$$success, validationErrorKey, controller);
|
23675
23683
|
} else {
|
23676
23684
|
if (state) {
|
23677
|
-
unset(ctrl.$error, validationErrorKey,
|
23678
|
-
set(ctrl.$$success, validationErrorKey,
|
23685
|
+
unset(ctrl.$error, validationErrorKey, controller);
|
23686
|
+
set(ctrl.$$success, validationErrorKey, controller);
|
23679
23687
|
} else {
|
23680
|
-
set(ctrl.$error, validationErrorKey,
|
23681
|
-
unset(ctrl.$$success, validationErrorKey,
|
23688
|
+
set(ctrl.$error, validationErrorKey, controller);
|
23689
|
+
unset(ctrl.$$success, validationErrorKey, controller);
|
23682
23690
|
}
|
23683
23691
|
}
|
23684
23692
|
if (ctrl.$pending) {
|
@@ -23706,20 +23714,21 @@ function addSetValidityMethod(context) {
|
|
23706
23714
|
} else {
|
23707
23715
|
combinedState = null;
|
23708
23716
|
}
|
23717
|
+
|
23709
23718
|
toggleValidationCss(validationErrorKey, combinedState);
|
23710
23719
|
parentForm.$setValidity(validationErrorKey, combinedState, ctrl);
|
23711
23720
|
}
|
23712
23721
|
|
23713
|
-
function createAndSet(name, value,
|
23722
|
+
function createAndSet(name, value, controller) {
|
23714
23723
|
if (!ctrl[name]) {
|
23715
23724
|
ctrl[name] = {};
|
23716
23725
|
}
|
23717
|
-
set(ctrl[name], value,
|
23726
|
+
set(ctrl[name], value, controller);
|
23718
23727
|
}
|
23719
23728
|
|
23720
|
-
function unsetAndCleanup(name, value,
|
23729
|
+
function unsetAndCleanup(name, value, controller) {
|
23721
23730
|
if (ctrl[name]) {
|
23722
|
-
unset(ctrl[name], value,
|
23731
|
+
unset(ctrl[name], value, controller);
|
23723
23732
|
}
|
23724
23733
|
if (isObjectEmpty(ctrl[name])) {
|
23725
23734
|
ctrl[name] = undefined;
|
@@ -24038,6 +24047,29 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
|
|
24038
24047
|
* Creating aliases for these properties is possible with {@link ng.directive:ngInit `ngInit`}.
|
24039
24048
|
* This may be useful when, for instance, nesting ngRepeats.
|
24040
24049
|
*
|
24050
|
+
* # Iterating over object properties
|
24051
|
+
*
|
24052
|
+
* It is possible to get `ngRepeat` to iterate over the properties of an object using the following
|
24053
|
+
* syntax:
|
24054
|
+
*
|
24055
|
+
* ```js
|
24056
|
+
* <div ng-repeat="(key, value) in myObj"> ... </div>
|
24057
|
+
* ```
|
24058
|
+
*
|
24059
|
+
* You need to be aware that the JavaScript specification does not define what order
|
24060
|
+
* it will return the keys for an object. In order to have a guaranteed deterministic order
|
24061
|
+
* for the keys, Angular versions up to and including 1.3 **sort the keys alphabetically**.
|
24062
|
+
*
|
24063
|
+
* If this is not desired, the recommended workaround is to convert your object into an array
|
24064
|
+
* that is sorted into the order that you prefer before providing it to `ngRepeat`. You could
|
24065
|
+
* do this with a filter such as [toArrayFilter](http://ngmodules.org/modules/angular-toArrayFilter)
|
24066
|
+
* or implement a `$watch` on the object yourself.
|
24067
|
+
*
|
24068
|
+
* In version 1.4 we will remove the sorting, since it seems that browsers generally follow the
|
24069
|
+
* strategy of providing keys in the order in which they were defined, although there are exceptions
|
24070
|
+
* when keys are deleted and reinstated.
|
24071
|
+
*
|
24072
|
+
*
|
24041
24073
|
* # Special repeat start and end points
|
24042
24074
|
* To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
|
24043
24075
|
* the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
|
@@ -24282,7 +24314,7 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
24282
24314
|
var keyIdentifier = match[2];
|
24283
24315
|
|
24284
24316
|
if (aliasAs && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(aliasAs) ||
|
24285
|
-
/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(aliasAs))) {
|
24317
|
+
/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(aliasAs))) {
|
24286
24318
|
throw ngRepeatMinErr('badident', "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
|
24287
24319
|
aliasAs);
|
24288
24320
|
}
|