angular-gem 1.2.22 → 1.2.23
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/angular-gem/version.rb +1 -1
- data/vendor/assets/javascripts/1.2.23/angular-animate.js +1689 -0
- data/vendor/assets/javascripts/1.2.23/angular-cookies.js +206 -0
- data/vendor/assets/javascripts/1.2.23/angular-loader.js +415 -0
- data/vendor/assets/javascripts/1.2.23/angular-mocks.js +2175 -0
- data/vendor/assets/javascripts/1.2.23/angular-resource.js +621 -0
- data/vendor/assets/javascripts/1.2.23/angular-route.js +925 -0
- data/vendor/assets/javascripts/1.2.23/angular-sanitize.js +647 -0
- data/vendor/assets/javascripts/1.2.23/angular-scenario.js +33954 -0
- data/vendor/assets/javascripts/1.2.23/angular-touch.js +584 -0
- data/vendor/assets/javascripts/1.2.23/angular.js +21954 -0
- data/vendor/assets/javascripts/angular-animate.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +5 -4
- data/vendor/assets/javascripts/angular-mocks.js +3 -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 +2 -2
- data/vendor/assets/javascripts/angular-scenario.js +65 -33
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +65 -33
- metadata +12 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.23
|
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.23/' +
|
73
73
|
(module ? module + '/' : '') + code;
|
74
74
|
for (i = 2; i < arguments.length; i++) {
|
75
75
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -194,7 +194,7 @@ function setupModuleLoader(window) {
|
|
194
194
|
* @ngdoc property
|
195
195
|
* @name angular.Module#requires
|
196
196
|
* @module ng
|
197
|
-
*
|
197
|
+
*
|
198
198
|
* @description
|
199
199
|
* Holds the list of modules which the injector will load before the current module is
|
200
200
|
* loaded.
|
@@ -205,8 +205,9 @@ function setupModuleLoader(window) {
|
|
205
205
|
* @ngdoc property
|
206
206
|
* @name angular.Module#name
|
207
207
|
* @module ng
|
208
|
-
*
|
208
|
+
*
|
209
209
|
* @description
|
210
|
+
* Name of the module.
|
210
211
|
*/
|
211
212
|
name: name,
|
212
213
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.23
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -2003,6 +2003,7 @@ if(window.jasmine || window.mocha) {
|
|
2003
2003
|
* @description
|
2004
2004
|
*
|
2005
2005
|
* *NOTE*: This function is also published on window for easy access.<br>
|
2006
|
+
* *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha
|
2006
2007
|
*
|
2007
2008
|
* This function registers a module configuration code. It collects the configuration information
|
2008
2009
|
* which will be used when the injector is created by {@link angular.mock.inject inject}.
|
@@ -2045,6 +2046,7 @@ if(window.jasmine || window.mocha) {
|
|
2045
2046
|
* @description
|
2046
2047
|
*
|
2047
2048
|
* *NOTE*: This function is also published on window for easy access.<br>
|
2049
|
+
* *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha
|
2048
2050
|
*
|
2049
2051
|
* The inject function wraps a function into an injectable function. The inject() creates new
|
2050
2052
|
* instance of {@link auto.$injector $injector} per test, which is then used for
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.23
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -597,7 +597,7 @@ angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider);
|
|
597
597
|
*/
|
598
598
|
angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
|
599
599
|
var LINKY_URL_REGEXP =
|
600
|
-
/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>]/,
|
600
|
+
/((ftp|https?):\/\/|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"]/,
|
601
601
|
MAILTO_REGEXP = /^mailto:/;
|
602
602
|
|
603
603
|
return function(text, target) {
|
@@ -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.23
|
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.23/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -10691,9 +10691,13 @@ function copy(source, destination, stackSource, stackDest) {
|
|
10691
10691
|
}
|
10692
10692
|
} else {
|
10693
10693
|
var h = destination.$$hashKey;
|
10694
|
-
|
10695
|
-
|
10696
|
-
}
|
10694
|
+
if (isArray(destination)) {
|
10695
|
+
destination.length = 0;
|
10696
|
+
} else {
|
10697
|
+
forEach(destination, function(value, key) {
|
10698
|
+
delete destination[key];
|
10699
|
+
});
|
10700
|
+
}
|
10697
10701
|
for ( var key in source) {
|
10698
10702
|
result = copy(source[key], null, stackSource, stackDest);
|
10699
10703
|
if (isObject(source[key])) {
|
@@ -10778,7 +10782,8 @@ function equals(o1, o2) {
|
|
10778
10782
|
return true;
|
10779
10783
|
}
|
10780
10784
|
} else if (isDate(o1)) {
|
10781
|
-
|
10785
|
+
if (!isDate(o2)) return false;
|
10786
|
+
return (isNaN(o1.getTime()) && isNaN(o2.getTime())) || (o1.getTime() === o2.getTime());
|
10782
10787
|
} else if (isRegExp(o1) && isRegExp(o2)) {
|
10783
10788
|
return o1.toString() == o2.toString();
|
10784
10789
|
} else {
|
@@ -11216,7 +11221,11 @@ function bootstrap(element, modules) {
|
|
11216
11221
|
|
11217
11222
|
if (element.injector()) {
|
11218
11223
|
var tag = (element[0] === document) ? 'document' : startingTag(element);
|
11219
|
-
|
11224
|
+
//Encode angle brackets to prevent input from being sanitized to empty string #8683
|
11225
|
+
throw ngMinErr(
|
11226
|
+
'btstrpd',
|
11227
|
+
"App Already Bootstrapped with this Element '{0}'",
|
11228
|
+
tag.replace(/</,'<').replace(/>/,'>'));
|
11220
11229
|
}
|
11221
11230
|
|
11222
11231
|
modules = modules || [];
|
@@ -11480,7 +11489,7 @@ function setupModuleLoader(window) {
|
|
11480
11489
|
* @ngdoc property
|
11481
11490
|
* @name angular.Module#requires
|
11482
11491
|
* @module ng
|
11483
|
-
*
|
11492
|
+
*
|
11484
11493
|
* @description
|
11485
11494
|
* Holds the list of modules which the injector will load before the current module is
|
11486
11495
|
* loaded.
|
@@ -11491,8 +11500,9 @@ function setupModuleLoader(window) {
|
|
11491
11500
|
* @ngdoc property
|
11492
11501
|
* @name angular.Module#name
|
11493
11502
|
* @module ng
|
11494
|
-
*
|
11503
|
+
*
|
11495
11504
|
* @description
|
11505
|
+
* Name of the module.
|
11496
11506
|
*/
|
11497
11507
|
name: name,
|
11498
11508
|
|
@@ -11769,11 +11779,11 @@ function setupModuleLoader(window) {
|
|
11769
11779
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11770
11780
|
*/
|
11771
11781
|
var version = {
|
11772
|
-
full: '1.2.
|
11782
|
+
full: '1.2.23', // all of these placeholder strings will be replaced by grunt's
|
11773
11783
|
major: 1, // package task
|
11774
11784
|
minor: 2,
|
11775
|
-
dot:
|
11776
|
-
codeName: '
|
11785
|
+
dot: 23,
|
11786
|
+
codeName: 'superficial-malady'
|
11777
11787
|
};
|
11778
11788
|
|
11779
11789
|
|
@@ -14580,8 +14590,10 @@ function $BrowserProvider(){
|
|
14580
14590
|
$scope.keys = [];
|
14581
14591
|
$scope.cache = $cacheFactory('cacheId');
|
14582
14592
|
$scope.put = function(key, value) {
|
14583
|
-
$scope.cache.
|
14584
|
-
|
14593
|
+
if ($scope.cache.get(key) === undefined) {
|
14594
|
+
$scope.keys.push(key);
|
14595
|
+
}
|
14596
|
+
$scope.cache.put(key, value === undefined ? null : value);
|
14585
14597
|
};
|
14586
14598
|
}]);
|
14587
14599
|
</file>
|
@@ -15101,9 +15113,9 @@ function $TemplateCacheProvider() {
|
|
15101
15113
|
*
|
15102
15114
|
* * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
|
15103
15115
|
* * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
|
15104
|
-
* * `^` - Locate the required controller by searching the element
|
15105
|
-
* * `?^` - Attempt to locate the required controller by searching the element
|
15106
|
-
* `link` fn if not found.
|
15116
|
+
* * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
|
15117
|
+
* * `?^` - Attempt to locate the required controller by searching the element and its parents or pass
|
15118
|
+
* `null` to the `link` fn if not found.
|
15107
15119
|
*
|
15108
15120
|
*
|
15109
15121
|
* #### `controllerAs`
|
@@ -16921,8 +16933,10 @@ function directiveNormalize(name) {
|
|
16921
16933
|
/**
|
16922
16934
|
* @ngdoc property
|
16923
16935
|
* @name $compile.directive.Attributes#$attr
|
16924
|
-
*
|
16925
|
-
*
|
16936
|
+
*
|
16937
|
+
* @description
|
16938
|
+
* A map of DOM element attribute names to the normalized name. This is
|
16939
|
+
* needed to do reverse lookup from normalized name back to actual name.
|
16926
16940
|
*/
|
16927
16941
|
|
16928
16942
|
|
@@ -17677,7 +17691,7 @@ function $HttpProvider() {
|
|
17677
17691
|
* that only JavaScript running on your domain could have sent the request. The token must be
|
17678
17692
|
* unique for each user and must be verifiable by the server (to prevent the JavaScript from
|
17679
17693
|
* making up its own tokens). We recommend that the token is a digest of your site's
|
17680
|
-
* authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography)
|
17694
|
+
* authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))
|
17681
17695
|
* for added security.
|
17682
17696
|
*
|
17683
17697
|
* The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName
|
@@ -18743,7 +18757,7 @@ function $IntervalProvider() {
|
|
18743
18757
|
* };
|
18744
18758
|
*
|
18745
18759
|
* $scope.$on('$destroy', function() {
|
18746
|
-
* // Make sure that the interval
|
18760
|
+
* // Make sure that the interval is destroyed too
|
18747
18761
|
* $scope.stopFight();
|
18748
18762
|
* });
|
18749
18763
|
* }])
|
@@ -19591,7 +19605,7 @@ function $LocationProvider(){
|
|
19591
19605
|
// http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx
|
19592
19606
|
var href = elm.attr('href') || elm.attr('xlink:href');
|
19593
19607
|
|
19594
|
-
if (href.indexOf('://') < 0) { // Ignore absolute URLs
|
19608
|
+
if (href && href.indexOf('://') < 0) { // Ignore absolute URLs
|
19595
19609
|
var prefix = '#' + hashPrefix;
|
19596
19610
|
if (href[0] == '/') {
|
19597
19611
|
// absolute path - replace old path
|
@@ -19603,6 +19617,7 @@ function $LocationProvider(){
|
|
19603
19617
|
// relative path - join with current path
|
19604
19618
|
var stack = $location.path().split("/"),
|
19605
19619
|
parts = href.split("/");
|
19620
|
+
if (stack.length === 2 && !stack[1]) stack.length = 1;
|
19606
19621
|
for (var i=0; i<parts.length; i++) {
|
19607
19622
|
if (parts[i] == ".")
|
19608
19623
|
continue;
|
@@ -22795,7 +22810,7 @@ function $RootScopeProvider(){
|
|
22795
22810
|
*/
|
22796
22811
|
function $$SanitizeUriProvider() {
|
22797
22812
|
var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
|
22798
|
-
imgSrcSanitizationWhitelist = /^\s*(https?|ftp|file):|data:image
|
22813
|
+
imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file):|data:image\/)/;
|
22799
22814
|
|
22800
22815
|
/**
|
22801
22816
|
* @description
|
@@ -25235,9 +25250,13 @@ function limitToFilter(){
|
|
25235
25250
|
*
|
25236
25251
|
* - `function`: Getter function. The result of this function will be sorted using the
|
25237
25252
|
* `<`, `=`, `>` operator.
|
25238
|
-
* - `string`: An Angular expression
|
25239
|
-
* to sort by a property called
|
25240
|
-
*
|
25253
|
+
* - `string`: An Angular expression. The result of this expression is used to compare elements
|
25254
|
+
* (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by
|
25255
|
+
* 3 first characters of a property called `name`). The result of a constant expression
|
25256
|
+
* is interpreted as a property name to be used in comparisons (for example `"special name"`
|
25257
|
+
* to sort object by the value of their `special name` property). An expression can be
|
25258
|
+
* optionally prefixed with `+` or `-` to control ascending or descending sort order
|
25259
|
+
* (for example, `+name` or `-name`).
|
25241
25260
|
* - `Array`: An array of function or string predicates. The first predicate in the array
|
25242
25261
|
* is used for sorting, but when two items are equivalent, the next predicate is used.
|
25243
25262
|
*
|
@@ -25605,7 +25624,7 @@ var htmlAnchorDirective = valueFn({
|
|
25605
25624
|
*
|
25606
25625
|
* @description
|
25607
25626
|
*
|
25608
|
-
*
|
25627
|
+
* We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:
|
25609
25628
|
* ```html
|
25610
25629
|
* <div ng-init="scope = { isDisabled: false }">
|
25611
25630
|
* <button disabled="{{scope.isDisabled}}">Disabled</button>
|
@@ -25825,8 +25844,12 @@ forEach(['src', 'srcset', 'href'], function(attrName) {
|
|
25825
25844
|
}
|
25826
25845
|
|
25827
25846
|
attr.$observe(normalized, function(value) {
|
25828
|
-
if (!value)
|
25829
|
-
|
25847
|
+
if (!value) {
|
25848
|
+
if (attrName === 'href') {
|
25849
|
+
attr.$set(name, null);
|
25850
|
+
}
|
25851
|
+
return;
|
25852
|
+
}
|
25830
25853
|
|
25831
25854
|
attr.$set(name, value);
|
25832
25855
|
|
@@ -26284,7 +26307,9 @@ var inputType = {
|
|
26284
26307
|
* @name input[text]
|
26285
26308
|
*
|
26286
26309
|
* @description
|
26287
|
-
* Standard HTML text input with angular data binding.
|
26310
|
+
* Standard HTML text input with angular data binding, inherited by most of the `input` elements.
|
26311
|
+
*
|
26312
|
+
* *NOTE* Not every feature offered is available for all input types.
|
26288
26313
|
*
|
26289
26314
|
* @param {string} ngModel Assignable angular expression to data-bind to.
|
26290
26315
|
* @param {string=} name Property name of the form under which the control is published.
|
@@ -26302,6 +26327,8 @@ var inputType = {
|
|
26302
26327
|
* @param {string=} ngChange Angular expression to be executed when input changes due to user
|
26303
26328
|
* interaction with the input element.
|
26304
26329
|
* @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
|
26330
|
+
* This parameter is ignored for input[type=password] controls, which will never trim the
|
26331
|
+
* input.
|
26305
26332
|
*
|
26306
26333
|
* @example
|
26307
26334
|
<example name="text-input-directive" module="textInputExample">
|
@@ -26741,6 +26768,7 @@ function addNativeHtml5Validators(ctrl, validatorName, badFlags, ignoreFlags, va
|
|
26741
26768
|
function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
26742
26769
|
var validity = element.prop(VALIDITY_STATE_PROPERTY);
|
26743
26770
|
var placeholder = element[0].placeholder, noevent = {};
|
26771
|
+
var type = lowercase(element[0].type);
|
26744
26772
|
ctrl.$$validityState = validity;
|
26745
26773
|
|
26746
26774
|
// In composition mode, users are still inputing intermediate text buffer,
|
@@ -26774,8 +26802,8 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
26774
26802
|
|
26775
26803
|
// By default we will trim the value
|
26776
26804
|
// If the attribute ng-trim exists we will avoid trimming
|
26777
|
-
//
|
26778
|
-
if (toBoolean(attr.ngTrim || 'T')) {
|
26805
|
+
// If input type is 'password', the value is never trimmed
|
26806
|
+
if (type !== 'password' && (toBoolean(attr.ngTrim || 'T'))) {
|
26779
26807
|
value = trim(value);
|
26780
26808
|
}
|
26781
26809
|
|
@@ -27050,6 +27078,8 @@ function checkboxInputType(scope, element, attr, ctrl) {
|
|
27050
27078
|
* HTML input element control with angular data-binding. Input control follows HTML5 input types
|
27051
27079
|
* and polyfills the HTML5 validation behavior for older browsers.
|
27052
27080
|
*
|
27081
|
+
* *NOTE* Not every feature offered is available for all input types.
|
27082
|
+
*
|
27053
27083
|
* @param {string} ngModel Assignable angular expression to data-bind to.
|
27054
27084
|
* @param {string=} name Property name of the form under which the control is published.
|
27055
27085
|
* @param {string=} required Sets `required` validation error key if the value is not entered.
|
@@ -27063,6 +27093,9 @@ function checkboxInputType(scope, element, attr, ctrl) {
|
|
27063
27093
|
* patterns defined as scope expressions.
|
27064
27094
|
* @param {string=} ngChange Angular expression to be executed when input changes due to user
|
27065
27095
|
* interaction with the input element.
|
27096
|
+
* @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
|
27097
|
+
* This parameter is ignored for input[type=password] controls, which will never trim the
|
27098
|
+
* input.
|
27066
27099
|
*
|
27067
27100
|
* @example
|
27068
27101
|
<example name="input-directive" module="inputExample">
|
@@ -28052,7 +28085,6 @@ var ngBindTemplateDirective = ['$interpolate', function($interpolate) {
|
|
28052
28085
|
* @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
|
28053
28086
|
*
|
28054
28087
|
* @example
|
28055
|
-
Try it here: enter text in text box and watch the greeting change.
|
28056
28088
|
|
28057
28089
|
<example module="bindHtmlExample" deps="angular-sanitize.js">
|
28058
28090
|
<file name="index.html">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.23
|
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.23/' +
|
72
72
|
(module ? module + '/' : '') + code;
|
73
73
|
for (i = 2; i < arguments.length; i++) {
|
74
74
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -899,9 +899,13 @@ function copy(source, destination, stackSource, stackDest) {
|
|
899
899
|
}
|
900
900
|
} else {
|
901
901
|
var h = destination.$$hashKey;
|
902
|
-
|
903
|
-
|
904
|
-
}
|
902
|
+
if (isArray(destination)) {
|
903
|
+
destination.length = 0;
|
904
|
+
} else {
|
905
|
+
forEach(destination, function(value, key) {
|
906
|
+
delete destination[key];
|
907
|
+
});
|
908
|
+
}
|
905
909
|
for ( var key in source) {
|
906
910
|
result = copy(source[key], null, stackSource, stackDest);
|
907
911
|
if (isObject(source[key])) {
|
@@ -986,7 +990,8 @@ function equals(o1, o2) {
|
|
986
990
|
return true;
|
987
991
|
}
|
988
992
|
} else if (isDate(o1)) {
|
989
|
-
|
993
|
+
if (!isDate(o2)) return false;
|
994
|
+
return (isNaN(o1.getTime()) && isNaN(o2.getTime())) || (o1.getTime() === o2.getTime());
|
990
995
|
} else if (isRegExp(o1) && isRegExp(o2)) {
|
991
996
|
return o1.toString() == o2.toString();
|
992
997
|
} else {
|
@@ -1424,7 +1429,11 @@ function bootstrap(element, modules) {
|
|
1424
1429
|
|
1425
1430
|
if (element.injector()) {
|
1426
1431
|
var tag = (element[0] === document) ? 'document' : startingTag(element);
|
1427
|
-
|
1432
|
+
//Encode angle brackets to prevent input from being sanitized to empty string #8683
|
1433
|
+
throw ngMinErr(
|
1434
|
+
'btstrpd',
|
1435
|
+
"App Already Bootstrapped with this Element '{0}'",
|
1436
|
+
tag.replace(/</,'<').replace(/>/,'>'));
|
1428
1437
|
}
|
1429
1438
|
|
1430
1439
|
modules = modules || [];
|
@@ -1688,7 +1697,7 @@ function setupModuleLoader(window) {
|
|
1688
1697
|
* @ngdoc property
|
1689
1698
|
* @name angular.Module#requires
|
1690
1699
|
* @module ng
|
1691
|
-
*
|
1700
|
+
*
|
1692
1701
|
* @description
|
1693
1702
|
* Holds the list of modules which the injector will load before the current module is
|
1694
1703
|
* loaded.
|
@@ -1699,8 +1708,9 @@ function setupModuleLoader(window) {
|
|
1699
1708
|
* @ngdoc property
|
1700
1709
|
* @name angular.Module#name
|
1701
1710
|
* @module ng
|
1702
|
-
*
|
1711
|
+
*
|
1703
1712
|
* @description
|
1713
|
+
* Name of the module.
|
1704
1714
|
*/
|
1705
1715
|
name: name,
|
1706
1716
|
|
@@ -1977,11 +1987,11 @@ function setupModuleLoader(window) {
|
|
1977
1987
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
1978
1988
|
*/
|
1979
1989
|
var version = {
|
1980
|
-
full: '1.2.
|
1990
|
+
full: '1.2.23', // all of these placeholder strings will be replaced by grunt's
|
1981
1991
|
major: 1, // package task
|
1982
1992
|
minor: 2,
|
1983
|
-
dot:
|
1984
|
-
codeName: '
|
1993
|
+
dot: 23,
|
1994
|
+
codeName: 'superficial-malady'
|
1985
1995
|
};
|
1986
1996
|
|
1987
1997
|
|
@@ -4788,8 +4798,10 @@ function $BrowserProvider(){
|
|
4788
4798
|
$scope.keys = [];
|
4789
4799
|
$scope.cache = $cacheFactory('cacheId');
|
4790
4800
|
$scope.put = function(key, value) {
|
4791
|
-
$scope.cache.
|
4792
|
-
|
4801
|
+
if ($scope.cache.get(key) === undefined) {
|
4802
|
+
$scope.keys.push(key);
|
4803
|
+
}
|
4804
|
+
$scope.cache.put(key, value === undefined ? null : value);
|
4793
4805
|
};
|
4794
4806
|
}]);
|
4795
4807
|
</file>
|
@@ -5309,9 +5321,9 @@ function $TemplateCacheProvider() {
|
|
5309
5321
|
*
|
5310
5322
|
* * (no prefix) - Locate the required controller on the current element. Throw an error if not found.
|
5311
5323
|
* * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.
|
5312
|
-
* * `^` - Locate the required controller by searching the element
|
5313
|
-
* * `?^` - Attempt to locate the required controller by searching the element
|
5314
|
-
* `link` fn if not found.
|
5324
|
+
* * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.
|
5325
|
+
* * `?^` - Attempt to locate the required controller by searching the element and its parents or pass
|
5326
|
+
* `null` to the `link` fn if not found.
|
5315
5327
|
*
|
5316
5328
|
*
|
5317
5329
|
* #### `controllerAs`
|
@@ -7129,8 +7141,10 @@ function directiveNormalize(name) {
|
|
7129
7141
|
/**
|
7130
7142
|
* @ngdoc property
|
7131
7143
|
* @name $compile.directive.Attributes#$attr
|
7132
|
-
*
|
7133
|
-
*
|
7144
|
+
*
|
7145
|
+
* @description
|
7146
|
+
* A map of DOM element attribute names to the normalized name. This is
|
7147
|
+
* needed to do reverse lookup from normalized name back to actual name.
|
7134
7148
|
*/
|
7135
7149
|
|
7136
7150
|
|
@@ -7885,7 +7899,7 @@ function $HttpProvider() {
|
|
7885
7899
|
* that only JavaScript running on your domain could have sent the request. The token must be
|
7886
7900
|
* unique for each user and must be verifiable by the server (to prevent the JavaScript from
|
7887
7901
|
* making up its own tokens). We recommend that the token is a digest of your site's
|
7888
|
-
* authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography)
|
7902
|
+
* authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography))
|
7889
7903
|
* for added security.
|
7890
7904
|
*
|
7891
7905
|
* The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName
|
@@ -8951,7 +8965,7 @@ function $IntervalProvider() {
|
|
8951
8965
|
* };
|
8952
8966
|
*
|
8953
8967
|
* $scope.$on('$destroy', function() {
|
8954
|
-
* // Make sure that the interval
|
8968
|
+
* // Make sure that the interval is destroyed too
|
8955
8969
|
* $scope.stopFight();
|
8956
8970
|
* });
|
8957
8971
|
* }])
|
@@ -9799,7 +9813,7 @@ function $LocationProvider(){
|
|
9799
9813
|
// http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx
|
9800
9814
|
var href = elm.attr('href') || elm.attr('xlink:href');
|
9801
9815
|
|
9802
|
-
if (href.indexOf('://') < 0) { // Ignore absolute URLs
|
9816
|
+
if (href && href.indexOf('://') < 0) { // Ignore absolute URLs
|
9803
9817
|
var prefix = '#' + hashPrefix;
|
9804
9818
|
if (href[0] == '/') {
|
9805
9819
|
// absolute path - replace old path
|
@@ -9811,6 +9825,7 @@ function $LocationProvider(){
|
|
9811
9825
|
// relative path - join with current path
|
9812
9826
|
var stack = $location.path().split("/"),
|
9813
9827
|
parts = href.split("/");
|
9828
|
+
if (stack.length === 2 && !stack[1]) stack.length = 1;
|
9814
9829
|
for (var i=0; i<parts.length; i++) {
|
9815
9830
|
if (parts[i] == ".")
|
9816
9831
|
continue;
|
@@ -13003,7 +13018,7 @@ function $RootScopeProvider(){
|
|
13003
13018
|
*/
|
13004
13019
|
function $$SanitizeUriProvider() {
|
13005
13020
|
var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/,
|
13006
|
-
imgSrcSanitizationWhitelist = /^\s*(https?|ftp|file):|data:image
|
13021
|
+
imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file):|data:image\/)/;
|
13007
13022
|
|
13008
13023
|
/**
|
13009
13024
|
* @description
|
@@ -15443,9 +15458,13 @@ function limitToFilter(){
|
|
15443
15458
|
*
|
15444
15459
|
* - `function`: Getter function. The result of this function will be sorted using the
|
15445
15460
|
* `<`, `=`, `>` operator.
|
15446
|
-
* - `string`: An Angular expression
|
15447
|
-
* to sort by a property called
|
15448
|
-
*
|
15461
|
+
* - `string`: An Angular expression. The result of this expression is used to compare elements
|
15462
|
+
* (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by
|
15463
|
+
* 3 first characters of a property called `name`). The result of a constant expression
|
15464
|
+
* is interpreted as a property name to be used in comparisons (for example `"special name"`
|
15465
|
+
* to sort object by the value of their `special name` property). An expression can be
|
15466
|
+
* optionally prefixed with `+` or `-` to control ascending or descending sort order
|
15467
|
+
* (for example, `+name` or `-name`).
|
15449
15468
|
* - `Array`: An array of function or string predicates. The first predicate in the array
|
15450
15469
|
* is used for sorting, but when two items are equivalent, the next predicate is used.
|
15451
15470
|
*
|
@@ -15813,7 +15832,7 @@ var htmlAnchorDirective = valueFn({
|
|
15813
15832
|
*
|
15814
15833
|
* @description
|
15815
15834
|
*
|
15816
|
-
*
|
15835
|
+
* We shouldn't do this, because it will make the button enabled on Chrome/Firefox but not on IE8 and older IEs:
|
15817
15836
|
* ```html
|
15818
15837
|
* <div ng-init="scope = { isDisabled: false }">
|
15819
15838
|
* <button disabled="{{scope.isDisabled}}">Disabled</button>
|
@@ -16033,8 +16052,12 @@ forEach(['src', 'srcset', 'href'], function(attrName) {
|
|
16033
16052
|
}
|
16034
16053
|
|
16035
16054
|
attr.$observe(normalized, function(value) {
|
16036
|
-
if (!value)
|
16037
|
-
|
16055
|
+
if (!value) {
|
16056
|
+
if (attrName === 'href') {
|
16057
|
+
attr.$set(name, null);
|
16058
|
+
}
|
16059
|
+
return;
|
16060
|
+
}
|
16038
16061
|
|
16039
16062
|
attr.$set(name, value);
|
16040
16063
|
|
@@ -16492,7 +16515,9 @@ var inputType = {
|
|
16492
16515
|
* @name input[text]
|
16493
16516
|
*
|
16494
16517
|
* @description
|
16495
|
-
* Standard HTML text input with angular data binding.
|
16518
|
+
* Standard HTML text input with angular data binding, inherited by most of the `input` elements.
|
16519
|
+
*
|
16520
|
+
* *NOTE* Not every feature offered is available for all input types.
|
16496
16521
|
*
|
16497
16522
|
* @param {string} ngModel Assignable angular expression to data-bind to.
|
16498
16523
|
* @param {string=} name Property name of the form under which the control is published.
|
@@ -16510,6 +16535,8 @@ var inputType = {
|
|
16510
16535
|
* @param {string=} ngChange Angular expression to be executed when input changes due to user
|
16511
16536
|
* interaction with the input element.
|
16512
16537
|
* @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
|
16538
|
+
* This parameter is ignored for input[type=password] controls, which will never trim the
|
16539
|
+
* input.
|
16513
16540
|
*
|
16514
16541
|
* @example
|
16515
16542
|
<example name="text-input-directive" module="textInputExample">
|
@@ -16949,6 +16976,7 @@ function addNativeHtml5Validators(ctrl, validatorName, badFlags, ignoreFlags, va
|
|
16949
16976
|
function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
16950
16977
|
var validity = element.prop(VALIDITY_STATE_PROPERTY);
|
16951
16978
|
var placeholder = element[0].placeholder, noevent = {};
|
16979
|
+
var type = lowercase(element[0].type);
|
16952
16980
|
ctrl.$$validityState = validity;
|
16953
16981
|
|
16954
16982
|
// In composition mode, users are still inputing intermediate text buffer,
|
@@ -16982,8 +17010,8 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
16982
17010
|
|
16983
17011
|
// By default we will trim the value
|
16984
17012
|
// If the attribute ng-trim exists we will avoid trimming
|
16985
|
-
//
|
16986
|
-
if (toBoolean(attr.ngTrim || 'T')) {
|
17013
|
+
// If input type is 'password', the value is never trimmed
|
17014
|
+
if (type !== 'password' && (toBoolean(attr.ngTrim || 'T'))) {
|
16987
17015
|
value = trim(value);
|
16988
17016
|
}
|
16989
17017
|
|
@@ -17258,6 +17286,8 @@ function checkboxInputType(scope, element, attr, ctrl) {
|
|
17258
17286
|
* HTML input element control with angular data-binding. Input control follows HTML5 input types
|
17259
17287
|
* and polyfills the HTML5 validation behavior for older browsers.
|
17260
17288
|
*
|
17289
|
+
* *NOTE* Not every feature offered is available for all input types.
|
17290
|
+
*
|
17261
17291
|
* @param {string} ngModel Assignable angular expression to data-bind to.
|
17262
17292
|
* @param {string=} name Property name of the form under which the control is published.
|
17263
17293
|
* @param {string=} required Sets `required` validation error key if the value is not entered.
|
@@ -17271,6 +17301,9 @@ function checkboxInputType(scope, element, attr, ctrl) {
|
|
17271
17301
|
* patterns defined as scope expressions.
|
17272
17302
|
* @param {string=} ngChange Angular expression to be executed when input changes due to user
|
17273
17303
|
* interaction with the input element.
|
17304
|
+
* @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input.
|
17305
|
+
* This parameter is ignored for input[type=password] controls, which will never trim the
|
17306
|
+
* input.
|
17274
17307
|
*
|
17275
17308
|
* @example
|
17276
17309
|
<example name="input-directive" module="inputExample">
|
@@ -18260,7 +18293,6 @@ var ngBindTemplateDirective = ['$interpolate', function($interpolate) {
|
|
18260
18293
|
* @param {expression} ngBindHtml {@link guide/expression Expression} to evaluate.
|
18261
18294
|
*
|
18262
18295
|
* @example
|
18263
|
-
Try it here: enter text in text box and watch the greeting change.
|
18264
18296
|
|
18265
18297
|
<example module="bindHtmlExample" deps="angular-sanitize.js">
|
18266
18298
|
<file name="index.html">
|