angular-gem 1.2.22 → 1.2.23
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 +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">
|