angular-gem 1.2.21 → 1.2.22
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.22/angular-animate.js +1689 -0
- data/vendor/assets/javascripts/1.2.22/angular-cookies.js +206 -0
- data/vendor/assets/javascripts/1.2.22/angular-loader.js +414 -0
- data/vendor/assets/javascripts/1.2.22/angular-mocks.js +2173 -0
- data/vendor/assets/javascripts/1.2.22/angular-resource.js +621 -0
- data/vendor/assets/javascripts/1.2.22/angular-route.js +925 -0
- data/vendor/assets/javascripts/1.2.22/angular-sanitize.js +647 -0
- data/vendor/assets/javascripts/1.2.22/angular-scenario.js +33922 -0
- data/vendor/assets/javascripts/1.2.22/angular-touch.js +584 -0
- data/vendor/assets/javascripts/1.2.22/angular.js +21922 -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 +2 -2
- data/vendor/assets/javascripts/angular-mocks.js +2 -2
- data/vendor/assets/javascripts/angular-resource.js +5 -3
- data/vendor/assets/javascripts/angular-route.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +8 -1
- data/vendor/assets/javascripts/angular-scenario.js +91 -52
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +91 -52
- metadata +12 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.22
|
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.22/' +
|
73
73
|
(module ? module + '/' : '') + code;
|
74
74
|
for (i = 2; i < arguments.length; i++) {
|
75
75
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.22
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -1786,7 +1786,7 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
|
|
1786
1786
|
* use the `passThrough` request handler of `when` instead of `respond`.
|
1787
1787
|
*
|
1788
1788
|
* Additionally, we don't want to manually have to flush mocked out requests like we do during unit
|
1789
|
-
* testing. For this reason the e2e $httpBackend
|
1789
|
+
* testing. For this reason the e2e $httpBackend flushes mocked out requests
|
1790
1790
|
* automatically, closely simulating the behavior of the XMLHttpRequest object.
|
1791
1791
|
*
|
1792
1792
|
* To setup the application to run with this http backend, you have to create a module that depends
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.22
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -99,8 +99,10 @@ function shallowClearAndCopy(src, dst) {
|
|
99
99
|
* Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in
|
100
100
|
* URL `/path/greet?salutation=Hello`.
|
101
101
|
*
|
102
|
-
* If the parameter value is prefixed with `@` then the value
|
103
|
-
* from the corresponding
|
102
|
+
* If the parameter value is prefixed with `@` then the value for that parameter will be extracted
|
103
|
+
* from the corresponding property on the `data` object (provided when calling an action method). For
|
104
|
+
* example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of `someParam`
|
105
|
+
* will be `data.someProp`.
|
104
106
|
*
|
105
107
|
* @param {Object.<Object>=} actions Hash with declaration of custom action that should extend
|
106
108
|
* the default set of resource actions. The declaration should be created in the format of {@link
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.22
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -237,6 +237,13 @@ function makeMap(str) {
|
|
237
237
|
* @param {object} handler
|
238
238
|
*/
|
239
239
|
function htmlParser( html, handler ) {
|
240
|
+
if (typeof html !== 'string') {
|
241
|
+
if (html === null || typeof html === 'undefined') {
|
242
|
+
html = '';
|
243
|
+
} else {
|
244
|
+
html = '' + html;
|
245
|
+
}
|
246
|
+
}
|
240
247
|
var index, chars, match, stack = [], last = html, text;
|
241
248
|
stack.last = function() { return stack[ stack.length - 1 ]; };
|
242
249
|
|
@@ -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.22
|
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.22/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -11769,11 +11769,11 @@ function setupModuleLoader(window) {
|
|
11769
11769
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11770
11770
|
*/
|
11771
11771
|
var version = {
|
11772
|
-
full: '1.2.
|
11772
|
+
full: '1.2.22', // all of these placeholder strings will be replaced by grunt's
|
11773
11773
|
major: 1, // package task
|
11774
11774
|
minor: 2,
|
11775
|
-
dot:
|
11776
|
-
codeName: '
|
11775
|
+
dot: 22,
|
11776
|
+
codeName: 'finicky-pleasure'
|
11777
11777
|
};
|
11778
11778
|
|
11779
11779
|
|
@@ -11786,11 +11786,11 @@ function publishExternalAPI(angular){
|
|
11786
11786
|
'element': jqLite,
|
11787
11787
|
'forEach': forEach,
|
11788
11788
|
'injector': createInjector,
|
11789
|
-
'noop':noop,
|
11790
|
-
'bind':bind,
|
11789
|
+
'noop': noop,
|
11790
|
+
'bind': bind,
|
11791
11791
|
'toJson': toJson,
|
11792
11792
|
'fromJson': fromJson,
|
11793
|
-
'identity':identity,
|
11793
|
+
'identity': identity,
|
11794
11794
|
'isUndefined': isUndefined,
|
11795
11795
|
'isDefined': isDefined,
|
11796
11796
|
'isString': isString,
|
@@ -12849,21 +12849,37 @@ forEach({
|
|
12849
12849
|
|
12850
12850
|
clone: jqLiteClone,
|
12851
12851
|
|
12852
|
-
triggerHandler: function(element,
|
12853
|
-
// Copy event handlers in case event handlers array is modified during execution.
|
12854
|
-
var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName],
|
12855
|
-
eventFnsCopy = shallowCopy(eventFns || []);
|
12852
|
+
triggerHandler: function(element, event, extraParameters) {
|
12856
12853
|
|
12857
|
-
|
12854
|
+
var dummyEvent, eventFnsCopy, handlerArgs;
|
12855
|
+
var eventName = event.type || event;
|
12856
|
+
var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName];
|
12858
12857
|
|
12859
|
-
|
12860
|
-
preventDefault: noop,
|
12861
|
-
stopPropagation: noop
|
12862
|
-
}];
|
12858
|
+
if (eventFns) {
|
12863
12859
|
|
12864
|
-
|
12865
|
-
|
12866
|
-
|
12860
|
+
// Create a dummy event to pass to the handlers
|
12861
|
+
dummyEvent = {
|
12862
|
+
preventDefault: function() { this.defaultPrevented = true; },
|
12863
|
+
isDefaultPrevented: function() { return this.defaultPrevented === true; },
|
12864
|
+
stopPropagation: noop,
|
12865
|
+
type: eventName,
|
12866
|
+
target: element
|
12867
|
+
};
|
12868
|
+
|
12869
|
+
// If a custom event was provided then extend our dummy event with it
|
12870
|
+
if (event.type) {
|
12871
|
+
dummyEvent = extend(dummyEvent, event);
|
12872
|
+
}
|
12873
|
+
|
12874
|
+
// Copy event handlers in case event handlers array is modified during execution.
|
12875
|
+
eventFnsCopy = shallowCopy(eventFns);
|
12876
|
+
handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
|
12877
|
+
|
12878
|
+
forEach(eventFnsCopy, function(fn) {
|
12879
|
+
fn.apply(element, handlerArgs);
|
12880
|
+
});
|
12881
|
+
|
12882
|
+
}
|
12867
12883
|
}
|
12868
12884
|
}, function(fn, name){
|
12869
12885
|
/**
|
@@ -15108,7 +15124,7 @@ function $TemplateCacheProvider() {
|
|
15108
15124
|
*
|
15109
15125
|
* #### `template`
|
15110
15126
|
* HTML markup that may:
|
15111
|
-
* * Replace the contents of the directive's element (
|
15127
|
+
* * Replace the contents of the directive's element (default).
|
15112
15128
|
* * Replace the directive's element itself (if `replace` is true - DEPRECATED).
|
15113
15129
|
* * Wrap the contents of the directive's element (if `transclude` is true).
|
15114
15130
|
*
|
@@ -16368,7 +16384,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16368
16384
|
if (parentGet.literal) {
|
16369
16385
|
compare = equals;
|
16370
16386
|
} else {
|
16371
|
-
compare = function(a,b) { return a === b; };
|
16387
|
+
compare = function(a,b) { return a === b || (a !== a && b !== b); };
|
16372
16388
|
}
|
16373
16389
|
parentSet = parentGet.assign || function() {
|
16374
16390
|
// reset the change, or we will throw this exception on every $digest
|
@@ -17396,6 +17412,7 @@ function $HttpProvider() {
|
|
17396
17412
|
* - {@link ng.$http#put $http.put}
|
17397
17413
|
* - {@link ng.$http#delete $http.delete}
|
17398
17414
|
* - {@link ng.$http#jsonp $http.jsonp}
|
17415
|
+
* - {@link ng.$http#patch $http.patch}
|
17399
17416
|
*
|
17400
17417
|
*
|
17401
17418
|
* # Setting HTTP Headers
|
@@ -17697,7 +17714,7 @@ function $HttpProvider() {
|
|
17697
17714
|
* - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}
|
17698
17715
|
* that should abort the request when resolved.
|
17699
17716
|
* - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the
|
17700
|
-
* XHR object. See [requests with credentials]https://developer.mozilla.org/
|
17717
|
+
* XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)
|
17701
17718
|
* for more information.
|
17702
17719
|
* - **responseType** - `{string}` - see
|
17703
17720
|
* [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
|
@@ -18066,7 +18083,8 @@ function $HttpProvider() {
|
|
18066
18083
|
promise.then(removePendingReq, removePendingReq);
|
18067
18084
|
|
18068
18085
|
|
18069
|
-
if ((config.cache || defaults.cache) && config.cache !== false &&
|
18086
|
+
if ((config.cache || defaults.cache) && config.cache !== false &&
|
18087
|
+
(config.method === 'GET' || config.method === 'JSONP')) {
|
18070
18088
|
cache = isObject(config.cache) ? config.cache
|
18071
18089
|
: isObject(defaults.cache) ? defaults.cache
|
18072
18090
|
: defaultCache;
|
@@ -19538,6 +19556,8 @@ function $LocationProvider(){
|
|
19538
19556
|
$location = new LocationMode(appBase, '#' + hashPrefix);
|
19539
19557
|
$location.$$parse($location.$$rewrite(initialUrl));
|
19540
19558
|
|
19559
|
+
var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
|
19560
|
+
|
19541
19561
|
$rootElement.on('click', function(event) {
|
19542
19562
|
// TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
|
19543
19563
|
// currently we open nice url link and redirect then
|
@@ -19560,6 +19580,9 @@ function $LocationProvider(){
|
|
19560
19580
|
absHref = urlResolve(absHref.animVal).href;
|
19561
19581
|
}
|
19562
19582
|
|
19583
|
+
// Ignore when url is started with javascript: or mailto:
|
19584
|
+
if (IGNORE_URI_REGEXP.test(absHref)) return;
|
19585
|
+
|
19563
19586
|
// Make relative links work in HTML5 mode for legacy browsers (or at least IE8 & 9)
|
19564
19587
|
// The href should be a regular url e.g. /link/somewhere or link/somewhere or ../somewhere or
|
19565
19588
|
// somewhere#anchor or http://example.com/somewhere
|
@@ -20431,9 +20454,9 @@ Parser.prototype = {
|
|
20431
20454
|
var middle;
|
20432
20455
|
var token;
|
20433
20456
|
if ((token = this.expect('?'))) {
|
20434
|
-
middle = this.
|
20457
|
+
middle = this.assignment();
|
20435
20458
|
if ((token = this.expect(':'))) {
|
20436
|
-
return this.ternaryFn(left, middle, this.
|
20459
|
+
return this.ternaryFn(left, middle, this.assignment());
|
20437
20460
|
} else {
|
20438
20461
|
this.throwError('expected :', token);
|
20439
20462
|
}
|
@@ -20521,7 +20544,9 @@ Parser.prototype = {
|
|
20521
20544
|
return getter(self || object(scope, locals));
|
20522
20545
|
}, {
|
20523
20546
|
assign: function(scope, value, locals) {
|
20524
|
-
|
20547
|
+
var o = object(scope, locals);
|
20548
|
+
if (!o) object.assign(scope, o = {});
|
20549
|
+
return setter(o, field, value, parser.text, parser.options);
|
20525
20550
|
}
|
20526
20551
|
});
|
20527
20552
|
},
|
@@ -20551,10 +20576,11 @@ Parser.prototype = {
|
|
20551
20576
|
return v;
|
20552
20577
|
}, {
|
20553
20578
|
assign: function(self, value, locals) {
|
20554
|
-
var key = indexFn(self, locals);
|
20579
|
+
var key = ensureSafeMemberName(indexFn(self, locals), parser.text);
|
20555
20580
|
// prevent overwriting of Function.constructor which would break ensureSafeObject check
|
20556
|
-
var
|
20557
|
-
|
20581
|
+
var o = ensureSafeObject(obj(self, locals), parser.text);
|
20582
|
+
if (!o) obj.assign(self, o = {});
|
20583
|
+
return o[key] = value;
|
20558
20584
|
}
|
20559
20585
|
});
|
20560
20586
|
},
|
@@ -24920,7 +24946,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
|
|
24920
24946
|
* (e.g. `"h 'o''clock'"`).
|
24921
24947
|
*
|
24922
24948
|
* @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
|
24923
|
-
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.
|
24949
|
+
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its
|
24924
24950
|
* shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
|
24925
24951
|
* specified in the string input, the time is considered to be in the local timezone.
|
24926
24952
|
* @param {string=} format Formatting rules (see Description). If not specified,
|
@@ -29084,6 +29110,13 @@ forEach(
|
|
29084
29110
|
* server and reloading the current page), but only if the form does not contain `action`,
|
29085
29111
|
* `data-action`, or `x-action` attributes.
|
29086
29112
|
*
|
29113
|
+
* <div class="alert alert-warning">
|
29114
|
+
* **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and
|
29115
|
+
* `ngSubmit` handlers together. See the
|
29116
|
+
* {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}
|
29117
|
+
* for a detailed discussion of when `ngSubmit` may be triggered.
|
29118
|
+
* </div>
|
29119
|
+
*
|
29087
29120
|
* @element form
|
29088
29121
|
* @priority 0
|
29089
29122
|
* @param {expression} ngSubmit {@link guide/expression Expression} to eval.
|
@@ -31401,21 +31434,37 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
31401
31434
|
value = valueFn(scope, locals);
|
31402
31435
|
}
|
31403
31436
|
}
|
31404
|
-
// Update the null option's selected property here so $render cleans it up correctly
|
31405
|
-
if (optionGroupsCache[0].length > 1) {
|
31406
|
-
if (optionGroupsCache[0][1].id !== key) {
|
31407
|
-
optionGroupsCache[0][1].selected = false;
|
31408
|
-
}
|
31409
|
-
}
|
31410
31437
|
}
|
31411
31438
|
ctrl.$setViewValue(value);
|
31439
|
+
render();
|
31412
31440
|
});
|
31413
31441
|
});
|
31414
31442
|
|
31415
31443
|
ctrl.$render = render;
|
31416
31444
|
|
31417
|
-
|
31418
|
-
|
31445
|
+
scope.$watchCollection(valuesFn, render);
|
31446
|
+
if ( multiple ) {
|
31447
|
+
scope.$watchCollection(function() { return ctrl.$modelValue; }, render);
|
31448
|
+
}
|
31449
|
+
|
31450
|
+
function getSelectedSet() {
|
31451
|
+
var selectedSet = false;
|
31452
|
+
if (multiple) {
|
31453
|
+
var modelValue = ctrl.$modelValue;
|
31454
|
+
if (trackFn && isArray(modelValue)) {
|
31455
|
+
selectedSet = new HashMap([]);
|
31456
|
+
var locals = {};
|
31457
|
+
for (var trackIndex = 0; trackIndex < modelValue.length; trackIndex++) {
|
31458
|
+
locals[valueName] = modelValue[trackIndex];
|
31459
|
+
selectedSet.put(trackFn(scope, locals), modelValue[trackIndex]);
|
31460
|
+
}
|
31461
|
+
} else {
|
31462
|
+
selectedSet = new HashMap(modelValue);
|
31463
|
+
}
|
31464
|
+
}
|
31465
|
+
return selectedSet;
|
31466
|
+
}
|
31467
|
+
|
31419
31468
|
|
31420
31469
|
function render() {
|
31421
31470
|
// Temporary location for the option groups before we render them
|
@@ -31433,22 +31482,11 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
31433
31482
|
groupIndex, index,
|
31434
31483
|
locals = {},
|
31435
31484
|
selected,
|
31436
|
-
selectedSet =
|
31485
|
+
selectedSet = getSelectedSet(),
|
31437
31486
|
lastElement,
|
31438
31487
|
element,
|
31439
31488
|
label;
|
31440
31489
|
|
31441
|
-
if (multiple) {
|
31442
|
-
if (trackFn && isArray(modelValue)) {
|
31443
|
-
selectedSet = new HashMap([]);
|
31444
|
-
for (var trackIndex = 0; trackIndex < modelValue.length; trackIndex++) {
|
31445
|
-
locals[valueName] = modelValue[trackIndex];
|
31446
|
-
selectedSet.put(trackFn(scope, locals), modelValue[trackIndex]);
|
31447
|
-
}
|
31448
|
-
} else {
|
31449
|
-
selectedSet = new HashMap(modelValue);
|
31450
|
-
}
|
31451
|
-
}
|
31452
31490
|
|
31453
31491
|
// We now build up the list of options we need (we merge later)
|
31454
31492
|
for (index = 0; length = keys.length, index < length; index++) {
|
@@ -31544,7 +31582,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
31544
31582
|
lastElement.val(existingOption.id = option.id);
|
31545
31583
|
}
|
31546
31584
|
// lastElement.prop('selected') provided by jQuery has side-effects
|
31547
|
-
if (
|
31585
|
+
if (lastElement[0].selected !== option.selected) {
|
31548
31586
|
lastElement.prop('selected', (existingOption.selected = option.selected));
|
31549
31587
|
if (msie) {
|
31550
31588
|
// See #7692
|
@@ -31567,6 +31605,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
31567
31605
|
(element = optionTemplate.clone())
|
31568
31606
|
.val(option.id)
|
31569
31607
|
.prop('selected', option.selected)
|
31608
|
+
.attr('selected', option.selected)
|
31570
31609
|
.text(option.label);
|
31571
31610
|
}
|
31572
31611
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.22
|
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.22/' +
|
72
72
|
(module ? module + '/' : '') + code;
|
73
73
|
for (i = 2; i < arguments.length; i++) {
|
74
74
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -1977,11 +1977,11 @@ function setupModuleLoader(window) {
|
|
1977
1977
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
1978
1978
|
*/
|
1979
1979
|
var version = {
|
1980
|
-
full: '1.2.
|
1980
|
+
full: '1.2.22', // all of these placeholder strings will be replaced by grunt's
|
1981
1981
|
major: 1, // package task
|
1982
1982
|
minor: 2,
|
1983
|
-
dot:
|
1984
|
-
codeName: '
|
1983
|
+
dot: 22,
|
1984
|
+
codeName: 'finicky-pleasure'
|
1985
1985
|
};
|
1986
1986
|
|
1987
1987
|
|
@@ -1994,11 +1994,11 @@ function publishExternalAPI(angular){
|
|
1994
1994
|
'element': jqLite,
|
1995
1995
|
'forEach': forEach,
|
1996
1996
|
'injector': createInjector,
|
1997
|
-
'noop':noop,
|
1998
|
-
'bind':bind,
|
1997
|
+
'noop': noop,
|
1998
|
+
'bind': bind,
|
1999
1999
|
'toJson': toJson,
|
2000
2000
|
'fromJson': fromJson,
|
2001
|
-
'identity':identity,
|
2001
|
+
'identity': identity,
|
2002
2002
|
'isUndefined': isUndefined,
|
2003
2003
|
'isDefined': isDefined,
|
2004
2004
|
'isString': isString,
|
@@ -3057,21 +3057,37 @@ forEach({
|
|
3057
3057
|
|
3058
3058
|
clone: jqLiteClone,
|
3059
3059
|
|
3060
|
-
triggerHandler: function(element,
|
3061
|
-
// Copy event handlers in case event handlers array is modified during execution.
|
3062
|
-
var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName],
|
3063
|
-
eventFnsCopy = shallowCopy(eventFns || []);
|
3060
|
+
triggerHandler: function(element, event, extraParameters) {
|
3064
3061
|
|
3065
|
-
|
3062
|
+
var dummyEvent, eventFnsCopy, handlerArgs;
|
3063
|
+
var eventName = event.type || event;
|
3064
|
+
var eventFns = (jqLiteExpandoStore(element, 'events') || {})[eventName];
|
3066
3065
|
|
3067
|
-
|
3068
|
-
preventDefault: noop,
|
3069
|
-
stopPropagation: noop
|
3070
|
-
}];
|
3066
|
+
if (eventFns) {
|
3071
3067
|
|
3072
|
-
|
3073
|
-
|
3074
|
-
|
3068
|
+
// Create a dummy event to pass to the handlers
|
3069
|
+
dummyEvent = {
|
3070
|
+
preventDefault: function() { this.defaultPrevented = true; },
|
3071
|
+
isDefaultPrevented: function() { return this.defaultPrevented === true; },
|
3072
|
+
stopPropagation: noop,
|
3073
|
+
type: eventName,
|
3074
|
+
target: element
|
3075
|
+
};
|
3076
|
+
|
3077
|
+
// If a custom event was provided then extend our dummy event with it
|
3078
|
+
if (event.type) {
|
3079
|
+
dummyEvent = extend(dummyEvent, event);
|
3080
|
+
}
|
3081
|
+
|
3082
|
+
// Copy event handlers in case event handlers array is modified during execution.
|
3083
|
+
eventFnsCopy = shallowCopy(eventFns);
|
3084
|
+
handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];
|
3085
|
+
|
3086
|
+
forEach(eventFnsCopy, function(fn) {
|
3087
|
+
fn.apply(element, handlerArgs);
|
3088
|
+
});
|
3089
|
+
|
3090
|
+
}
|
3075
3091
|
}
|
3076
3092
|
}, function(fn, name){
|
3077
3093
|
/**
|
@@ -5316,7 +5332,7 @@ function $TemplateCacheProvider() {
|
|
5316
5332
|
*
|
5317
5333
|
* #### `template`
|
5318
5334
|
* HTML markup that may:
|
5319
|
-
* * Replace the contents of the directive's element (
|
5335
|
+
* * Replace the contents of the directive's element (default).
|
5320
5336
|
* * Replace the directive's element itself (if `replace` is true - DEPRECATED).
|
5321
5337
|
* * Wrap the contents of the directive's element (if `transclude` is true).
|
5322
5338
|
*
|
@@ -6576,7 +6592,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6576
6592
|
if (parentGet.literal) {
|
6577
6593
|
compare = equals;
|
6578
6594
|
} else {
|
6579
|
-
compare = function(a,b) { return a === b; };
|
6595
|
+
compare = function(a,b) { return a === b || (a !== a && b !== b); };
|
6580
6596
|
}
|
6581
6597
|
parentSet = parentGet.assign || function() {
|
6582
6598
|
// reset the change, or we will throw this exception on every $digest
|
@@ -7604,6 +7620,7 @@ function $HttpProvider() {
|
|
7604
7620
|
* - {@link ng.$http#put $http.put}
|
7605
7621
|
* - {@link ng.$http#delete $http.delete}
|
7606
7622
|
* - {@link ng.$http#jsonp $http.jsonp}
|
7623
|
+
* - {@link ng.$http#patch $http.patch}
|
7607
7624
|
*
|
7608
7625
|
*
|
7609
7626
|
* # Setting HTTP Headers
|
@@ -7905,7 +7922,7 @@ function $HttpProvider() {
|
|
7905
7922
|
* - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise}
|
7906
7923
|
* that should abort the request when resolved.
|
7907
7924
|
* - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the
|
7908
|
-
* XHR object. See [requests with credentials]https://developer.mozilla.org/
|
7925
|
+
* XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials)
|
7909
7926
|
* for more information.
|
7910
7927
|
* - **responseType** - `{string}` - see
|
7911
7928
|
* [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
|
@@ -8274,7 +8291,8 @@ function $HttpProvider() {
|
|
8274
8291
|
promise.then(removePendingReq, removePendingReq);
|
8275
8292
|
|
8276
8293
|
|
8277
|
-
if ((config.cache || defaults.cache) && config.cache !== false &&
|
8294
|
+
if ((config.cache || defaults.cache) && config.cache !== false &&
|
8295
|
+
(config.method === 'GET' || config.method === 'JSONP')) {
|
8278
8296
|
cache = isObject(config.cache) ? config.cache
|
8279
8297
|
: isObject(defaults.cache) ? defaults.cache
|
8280
8298
|
: defaultCache;
|
@@ -9746,6 +9764,8 @@ function $LocationProvider(){
|
|
9746
9764
|
$location = new LocationMode(appBase, '#' + hashPrefix);
|
9747
9765
|
$location.$$parse($location.$$rewrite(initialUrl));
|
9748
9766
|
|
9767
|
+
var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i;
|
9768
|
+
|
9749
9769
|
$rootElement.on('click', function(event) {
|
9750
9770
|
// TODO(vojta): rewrite link when opening in new tab/window (in legacy browser)
|
9751
9771
|
// currently we open nice url link and redirect then
|
@@ -9768,6 +9788,9 @@ function $LocationProvider(){
|
|
9768
9788
|
absHref = urlResolve(absHref.animVal).href;
|
9769
9789
|
}
|
9770
9790
|
|
9791
|
+
// Ignore when url is started with javascript: or mailto:
|
9792
|
+
if (IGNORE_URI_REGEXP.test(absHref)) return;
|
9793
|
+
|
9771
9794
|
// Make relative links work in HTML5 mode for legacy browsers (or at least IE8 & 9)
|
9772
9795
|
// The href should be a regular url e.g. /link/somewhere or link/somewhere or ../somewhere or
|
9773
9796
|
// somewhere#anchor or http://example.com/somewhere
|
@@ -10639,9 +10662,9 @@ Parser.prototype = {
|
|
10639
10662
|
var middle;
|
10640
10663
|
var token;
|
10641
10664
|
if ((token = this.expect('?'))) {
|
10642
|
-
middle = this.
|
10665
|
+
middle = this.assignment();
|
10643
10666
|
if ((token = this.expect(':'))) {
|
10644
|
-
return this.ternaryFn(left, middle, this.
|
10667
|
+
return this.ternaryFn(left, middle, this.assignment());
|
10645
10668
|
} else {
|
10646
10669
|
this.throwError('expected :', token);
|
10647
10670
|
}
|
@@ -10729,7 +10752,9 @@ Parser.prototype = {
|
|
10729
10752
|
return getter(self || object(scope, locals));
|
10730
10753
|
}, {
|
10731
10754
|
assign: function(scope, value, locals) {
|
10732
|
-
|
10755
|
+
var o = object(scope, locals);
|
10756
|
+
if (!o) object.assign(scope, o = {});
|
10757
|
+
return setter(o, field, value, parser.text, parser.options);
|
10733
10758
|
}
|
10734
10759
|
});
|
10735
10760
|
},
|
@@ -10759,10 +10784,11 @@ Parser.prototype = {
|
|
10759
10784
|
return v;
|
10760
10785
|
}, {
|
10761
10786
|
assign: function(self, value, locals) {
|
10762
|
-
var key = indexFn(self, locals);
|
10787
|
+
var key = ensureSafeMemberName(indexFn(self, locals), parser.text);
|
10763
10788
|
// prevent overwriting of Function.constructor which would break ensureSafeObject check
|
10764
|
-
var
|
10765
|
-
|
10789
|
+
var o = ensureSafeObject(obj(self, locals), parser.text);
|
10790
|
+
if (!o) obj.assign(self, o = {});
|
10791
|
+
return o[key] = value;
|
10766
10792
|
}
|
10767
10793
|
});
|
10768
10794
|
},
|
@@ -15128,7 +15154,7 @@ var DATE_FORMATS_SPLIT = /((?:[^yMdHhmsaZE']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+
|
|
15128
15154
|
* (e.g. `"h 'o''clock'"`).
|
15129
15155
|
*
|
15130
15156
|
* @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or
|
15131
|
-
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.
|
15157
|
+
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its
|
15132
15158
|
* shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is
|
15133
15159
|
* specified in the string input, the time is considered to be in the local timezone.
|
15134
15160
|
* @param {string=} format Formatting rules (see Description). If not specified,
|
@@ -19292,6 +19318,13 @@ forEach(
|
|
19292
19318
|
* server and reloading the current page), but only if the form does not contain `action`,
|
19293
19319
|
* `data-action`, or `x-action` attributes.
|
19294
19320
|
*
|
19321
|
+
* <div class="alert alert-warning">
|
19322
|
+
* **Warning:** Be careful not to cause "double-submission" by using both the `ngClick` and
|
19323
|
+
* `ngSubmit` handlers together. See the
|
19324
|
+
* {@link form#submitting-a-form-and-preventing-the-default-action `form` directive documentation}
|
19325
|
+
* for a detailed discussion of when `ngSubmit` may be triggered.
|
19326
|
+
* </div>
|
19327
|
+
*
|
19295
19328
|
* @element form
|
19296
19329
|
* @priority 0
|
19297
19330
|
* @param {expression} ngSubmit {@link guide/expression Expression} to eval.
|
@@ -21609,21 +21642,37 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
21609
21642
|
value = valueFn(scope, locals);
|
21610
21643
|
}
|
21611
21644
|
}
|
21612
|
-
// Update the null option's selected property here so $render cleans it up correctly
|
21613
|
-
if (optionGroupsCache[0].length > 1) {
|
21614
|
-
if (optionGroupsCache[0][1].id !== key) {
|
21615
|
-
optionGroupsCache[0][1].selected = false;
|
21616
|
-
}
|
21617
|
-
}
|
21618
21645
|
}
|
21619
21646
|
ctrl.$setViewValue(value);
|
21647
|
+
render();
|
21620
21648
|
});
|
21621
21649
|
});
|
21622
21650
|
|
21623
21651
|
ctrl.$render = render;
|
21624
21652
|
|
21625
|
-
|
21626
|
-
|
21653
|
+
scope.$watchCollection(valuesFn, render);
|
21654
|
+
if ( multiple ) {
|
21655
|
+
scope.$watchCollection(function() { return ctrl.$modelValue; }, render);
|
21656
|
+
}
|
21657
|
+
|
21658
|
+
function getSelectedSet() {
|
21659
|
+
var selectedSet = false;
|
21660
|
+
if (multiple) {
|
21661
|
+
var modelValue = ctrl.$modelValue;
|
21662
|
+
if (trackFn && isArray(modelValue)) {
|
21663
|
+
selectedSet = new HashMap([]);
|
21664
|
+
var locals = {};
|
21665
|
+
for (var trackIndex = 0; trackIndex < modelValue.length; trackIndex++) {
|
21666
|
+
locals[valueName] = modelValue[trackIndex];
|
21667
|
+
selectedSet.put(trackFn(scope, locals), modelValue[trackIndex]);
|
21668
|
+
}
|
21669
|
+
} else {
|
21670
|
+
selectedSet = new HashMap(modelValue);
|
21671
|
+
}
|
21672
|
+
}
|
21673
|
+
return selectedSet;
|
21674
|
+
}
|
21675
|
+
|
21627
21676
|
|
21628
21677
|
function render() {
|
21629
21678
|
// Temporary location for the option groups before we render them
|
@@ -21641,22 +21690,11 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
21641
21690
|
groupIndex, index,
|
21642
21691
|
locals = {},
|
21643
21692
|
selected,
|
21644
|
-
selectedSet =
|
21693
|
+
selectedSet = getSelectedSet(),
|
21645
21694
|
lastElement,
|
21646
21695
|
element,
|
21647
21696
|
label;
|
21648
21697
|
|
21649
|
-
if (multiple) {
|
21650
|
-
if (trackFn && isArray(modelValue)) {
|
21651
|
-
selectedSet = new HashMap([]);
|
21652
|
-
for (var trackIndex = 0; trackIndex < modelValue.length; trackIndex++) {
|
21653
|
-
locals[valueName] = modelValue[trackIndex];
|
21654
|
-
selectedSet.put(trackFn(scope, locals), modelValue[trackIndex]);
|
21655
|
-
}
|
21656
|
-
} else {
|
21657
|
-
selectedSet = new HashMap(modelValue);
|
21658
|
-
}
|
21659
|
-
}
|
21660
21698
|
|
21661
21699
|
// We now build up the list of options we need (we merge later)
|
21662
21700
|
for (index = 0; length = keys.length, index < length; index++) {
|
@@ -21752,7 +21790,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
21752
21790
|
lastElement.val(existingOption.id = option.id);
|
21753
21791
|
}
|
21754
21792
|
// lastElement.prop('selected') provided by jQuery has side-effects
|
21755
|
-
if (
|
21793
|
+
if (lastElement[0].selected !== option.selected) {
|
21756
21794
|
lastElement.prop('selected', (existingOption.selected = option.selected));
|
21757
21795
|
if (msie) {
|
21758
21796
|
// See #7692
|
@@ -21775,6 +21813,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
|
|
21775
21813
|
(element = optionTemplate.clone())
|
21776
21814
|
.val(option.id)
|
21777
21815
|
.prop('selected', option.selected)
|
21816
|
+
.attr('selected', option.selected)
|
21778
21817
|
.text(option.label);
|
21779
21818
|
}
|
21780
21819
|
|