angularjs-rails 1.6.0 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +1 -1
- data/vendor/assets/javascripts/angular-aria.js +1 -1
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +2 -2
- data/vendor/assets/javascripts/angular-message-format.js +1 -1
- data/vendor/assets/javascripts/angular-messages.js +3 -5
- data/vendor/assets/javascripts/angular-mocks.js +9 -5
- data/vendor/assets/javascripts/angular-parse-ext.js +1 -1
- data/vendor/assets/javascripts/angular-resource.js +1 -1
- data/vendor/assets/javascripts/angular-route.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +206 -119
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +206 -119
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c6054787e9a21da18e36bf15006d4dc05983f54
|
4
|
+
data.tar.gz: 88f127f2e0252380d89c9fee6fd4db293eeab648
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 188734c17139521f26d60aca6c61fc42fb6c389576b054bb9589127eca34ebbcbc7b8335600a581296806fb409d0a0f448e7913bd220d2cc1f22f5e6d1d4d4da
|
7
|
+
data.tar.gz: 2e8fe69fda52a3cbef08c0a266ac849962242b71f8b12956b90831d9deadd0a30f8911dc7765aa943a5e82f950d1775bc680f8f46462b95bae8ee8ba15f57661
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.6.
|
2
|
+
* @license AngularJS v1.6.1
|
3
3
|
* (c) 2010-2016 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -87,7 +87,7 @@ function minErr(module, ErrorConstructor) {
|
|
87
87
|
return match;
|
88
88
|
});
|
89
89
|
|
90
|
-
message += '\nhttp://errors.angularjs.org/1.6.
|
90
|
+
message += '\nhttp://errors.angularjs.org/1.6.1/' +
|
91
91
|
(module ? module + '/' : '') + code;
|
92
92
|
|
93
93
|
for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.6.
|
2
|
+
* @license AngularJS v1.6.1
|
3
3
|
* (c) 2010-2016 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -634,10 +634,8 @@ angular.module('ngMessages', [], function initAngularHelpers() {
|
|
634
634
|
* @scope
|
635
635
|
*
|
636
636
|
* @description
|
637
|
-
* `ngMessageExp` is
|
638
|
-
*
|
639
|
-
* must be situated since it determines which messages are visible based on the state
|
640
|
-
* of the provided key/value map that `ngMessages` listens on.
|
637
|
+
* `ngMessageExp` is the same as {@link directive:ngMessage `ngMessage`}, but instead of a static
|
638
|
+
* value, it accepts an expression to be evaluated for the message key.
|
641
639
|
*
|
642
640
|
* @usage
|
643
641
|
* ```html
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.6.
|
2
|
+
* @license AngularJS v1.6.1
|
3
3
|
* (c) 2010-2016 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -2534,7 +2534,8 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
|
|
2534
2534
|
* @param {string} method HTTP method.
|
2535
2535
|
* @param {string|RegExp|function(string)=} url HTTP url or function that receives a url
|
2536
2536
|
* and returns true if the url matches the current definition.
|
2537
|
-
* @param {(string|RegExp)=} data HTTP request body
|
2537
|
+
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
|
2538
|
+
* data string and returns true if the data is as expected.
|
2538
2539
|
* @param {(Object|function(Object))=} headers HTTP headers or function that receives http header
|
2539
2540
|
* object and returns true if the headers match the current definition.
|
2540
2541
|
* @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
|
@@ -2617,7 +2618,8 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
|
|
2617
2618
|
*
|
2618
2619
|
* @param {string|RegExp|function(string)=} url HTTP url or function that receives a url
|
2619
2620
|
* and returns true if the url matches the current definition.
|
2620
|
-
* @param {(string|RegExp)=} data HTTP request body
|
2621
|
+
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
|
2622
|
+
* data string and returns true if the data is as expected.
|
2621
2623
|
* @param {(Object|function(Object))=} headers HTTP headers.
|
2622
2624
|
* @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
|
2623
2625
|
* {@link ngMock.$httpBackend $httpBackend mock}.
|
@@ -2635,7 +2637,8 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
|
|
2635
2637
|
*
|
2636
2638
|
* @param {string|RegExp|function(string)=} url HTTP url or function that receives a url
|
2637
2639
|
* and returns true if the url matches the current definition.
|
2638
|
-
* @param {(string|RegExp)=} data HTTP request body
|
2640
|
+
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
|
2641
|
+
* data string and returns true if the data is as expected.
|
2639
2642
|
* @param {(Object|function(Object))=} headers HTTP headers.
|
2640
2643
|
* @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
|
2641
2644
|
* {@link ngMock.$httpBackend $httpBackend mock}.
|
@@ -2653,7 +2656,8 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
|
|
2653
2656
|
*
|
2654
2657
|
* @param {string|RegExp|function(string)=} url HTTP url or function that receives a url
|
2655
2658
|
* and returns true if the url matches the current definition.
|
2656
|
-
* @param {(string|RegExp)=} data HTTP request body
|
2659
|
+
* @param {(string|RegExp|function(string))=} data HTTP request body or function that receives
|
2660
|
+
* data string and returns true if the data is as expected.
|
2657
2661
|
* @param {(Object|function(Object))=} headers HTTP headers.
|
2658
2662
|
* @param {(Array)=} keys Array of keys to assign to regex matches in request url described on
|
2659
2663
|
* {@link ngMock.$httpBackend $httpBackend mock}.
|
@@ -10071,7 +10071,7 @@ return jQuery;
|
|
10071
10071
|
} );
|
10072
10072
|
|
10073
10073
|
/**
|
10074
|
-
* @license AngularJS v1.6.
|
10074
|
+
* @license AngularJS v1.6.1
|
10075
10075
|
* (c) 2010-2016 Google, Inc. http://angularjs.org
|
10076
10076
|
* License: MIT
|
10077
10077
|
*/
|
@@ -10130,7 +10130,7 @@ function minErr(module, ErrorConstructor) {
|
|
10130
10130
|
return match;
|
10131
10131
|
});
|
10132
10132
|
|
10133
|
-
message += '\nhttp://errors.angularjs.org/1.6.
|
10133
|
+
message += '\nhttp://errors.angularjs.org/1.6.1/' +
|
10134
10134
|
(module ? module + '/' : '') + code;
|
10135
10135
|
|
10136
10136
|
for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
|
@@ -12696,11 +12696,11 @@ function toDebugString(obj) {
|
|
12696
12696
|
var version = {
|
12697
12697
|
// These placeholder strings will be replaced by grunt's `build` task.
|
12698
12698
|
// They need to be double- or single-quoted.
|
12699
|
-
full: '1.6.
|
12699
|
+
full: '1.6.1',
|
12700
12700
|
major: 1,
|
12701
12701
|
minor: 6,
|
12702
|
-
dot:
|
12703
|
-
codeName: '
|
12702
|
+
dot: 1,
|
12703
|
+
codeName: 'promise-rectification'
|
12704
12704
|
};
|
12705
12705
|
|
12706
12706
|
|
@@ -13826,12 +13826,15 @@ forEach({
|
|
13826
13826
|
|
13827
13827
|
after: function(element, newElement) {
|
13828
13828
|
var index = element, parent = element.parentNode;
|
13829
|
-
newElement = new JQLite(newElement);
|
13830
13829
|
|
13831
|
-
|
13832
|
-
|
13833
|
-
|
13834
|
-
|
13830
|
+
if (parent) {
|
13831
|
+
newElement = new JQLite(newElement);
|
13832
|
+
|
13833
|
+
for (var i = 0, ii = newElement.length; i < ii; i++) {
|
13834
|
+
var node = newElement[i];
|
13835
|
+
parent.insertBefore(node, index.nextSibling);
|
13836
|
+
index = node;
|
13837
|
+
}
|
13835
13838
|
}
|
13836
13839
|
},
|
13837
13840
|
|
@@ -22966,7 +22969,8 @@ function $IntervalProvider() {
|
|
22966
22969
|
* appropriate moment. See the example below for more details on how and when to do this.
|
22967
22970
|
* </div>
|
22968
22971
|
*
|
22969
|
-
* @param {function()} fn A function that should be called repeatedly.
|
22972
|
+
* @param {function()} fn A function that should be called repeatedly. If no additional arguments
|
22973
|
+
* are passed (see below), the function is called with the current iteration count.
|
22970
22974
|
* @param {number} delay Number of milliseconds between each function call.
|
22971
22975
|
* @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
|
22972
22976
|
* indefinitely.
|
@@ -26597,6 +26601,7 @@ function $QProvider() {
|
|
26597
26601
|
*
|
26598
26602
|
* @description
|
26599
26603
|
* Retrieves or overrides whether to generate an error when a rejected promise is not handled.
|
26604
|
+
* This feature is enabled by default.
|
26600
26605
|
*
|
26601
26606
|
* @param {boolean=} value Whether to generate an error when a rejected promise is not handled.
|
26602
26607
|
* @returns {boolean|ng.$qProvider} Current value when called without a new value or self for
|
@@ -26738,7 +26743,11 @@ function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
|
|
26738
26743
|
if (!toCheck.pur) {
|
26739
26744
|
toCheck.pur = true;
|
26740
26745
|
var errorMessage = 'Possibly unhandled rejection: ' + toDebugString(toCheck.value);
|
26741
|
-
|
26746
|
+
if (toCheck.value instanceof Error) {
|
26747
|
+
exceptionHandler(toCheck.value, errorMessage);
|
26748
|
+
} else {
|
26749
|
+
exceptionHandler(errorMessage);
|
26750
|
+
}
|
26742
26751
|
}
|
26743
26752
|
}
|
26744
26753
|
}
|
@@ -27472,15 +27481,21 @@ function $RootScopeProvider() {
|
|
27472
27481
|
|
27473
27482
|
if (!array) {
|
27474
27483
|
array = scope.$$watchers = [];
|
27484
|
+
array.$$digestWatchIndex = -1;
|
27475
27485
|
}
|
27476
27486
|
// we use unshift since we use a while loop in $digest for speed.
|
27477
27487
|
// the while loop reads in reverse order.
|
27478
27488
|
array.unshift(watcher);
|
27489
|
+
array.$$digestWatchIndex++;
|
27479
27490
|
incrementWatchersCount(this, 1);
|
27480
27491
|
|
27481
27492
|
return function deregisterWatch() {
|
27482
|
-
|
27493
|
+
var index = arrayRemove(array, watcher);
|
27494
|
+
if (index >= 0) {
|
27483
27495
|
incrementWatchersCount(scope, -1);
|
27496
|
+
if (index < array.$$digestWatchIndex) {
|
27497
|
+
array.$$digestWatchIndex--;
|
27498
|
+
}
|
27484
27499
|
}
|
27485
27500
|
lastDirtyWatch = null;
|
27486
27501
|
};
|
@@ -27813,7 +27828,6 @@ function $RootScopeProvider() {
|
|
27813
27828
|
$digest: function() {
|
27814
27829
|
var watch, value, last, fn, get,
|
27815
27830
|
watchers,
|
27816
|
-
length,
|
27817
27831
|
dirty, ttl = TTL,
|
27818
27832
|
next, current, target = this,
|
27819
27833
|
watchLog = [],
|
@@ -27854,10 +27868,10 @@ function $RootScopeProvider() {
|
|
27854
27868
|
do { // "traverse the scopes" loop
|
27855
27869
|
if ((watchers = current.$$watchers)) {
|
27856
27870
|
// process our watches
|
27857
|
-
|
27858
|
-
while (
|
27871
|
+
watchers.$$digestWatchIndex = watchers.length;
|
27872
|
+
while (watchers.$$digestWatchIndex--) {
|
27859
27873
|
try {
|
27860
|
-
watch = watchers[
|
27874
|
+
watch = watchers[watchers.$$digestWatchIndex];
|
27861
27875
|
// Most common watches are on primitives, in which case we can short
|
27862
27876
|
// circuit it with === operator, only when === fails do we use .equals
|
27863
27877
|
if (watch) {
|
@@ -30174,6 +30188,14 @@ function $$CookieReader($document) {
|
|
30174
30188
|
var lastCookies = {};
|
30175
30189
|
var lastCookieString = '';
|
30176
30190
|
|
30191
|
+
function safeGetCookie(rawDocument) {
|
30192
|
+
try {
|
30193
|
+
return rawDocument.cookie || '';
|
30194
|
+
} catch (e) {
|
30195
|
+
return '';
|
30196
|
+
}
|
30197
|
+
}
|
30198
|
+
|
30177
30199
|
function safeDecodeURIComponent(str) {
|
30178
30200
|
try {
|
30179
30201
|
return decodeURIComponent(str);
|
@@ -30184,7 +30206,7 @@ function $$CookieReader($document) {
|
|
30184
30206
|
|
30185
30207
|
return function() {
|
30186
30208
|
var cookieArray, cookie, i, index, name;
|
30187
|
-
var currentCookieString = rawDocument
|
30209
|
+
var currentCookieString = safeGetCookie(rawDocument);
|
30188
30210
|
|
30189
30211
|
if (currentCookieString !== lastCookieString) {
|
30190
30212
|
lastCookieString = currentCookieString;
|
@@ -35772,51 +35794,71 @@ var ngChangeDirective = valueFn({
|
|
35772
35794
|
|
35773
35795
|
function classDirective(name, selector) {
|
35774
35796
|
name = 'ngClass' + name;
|
35775
|
-
|
35797
|
+
var indexWatchExpression;
|
35798
|
+
|
35799
|
+
return ['$parse', function($parse) {
|
35776
35800
|
return {
|
35777
35801
|
restrict: 'AC',
|
35778
35802
|
link: function(scope, element, attr) {
|
35779
|
-
var
|
35803
|
+
var expression = attr[name].trim();
|
35804
|
+
var isOneTime = (expression.charAt(0) === ':') && (expression.charAt(1) === ':');
|
35780
35805
|
|
35781
|
-
|
35806
|
+
var watchInterceptor = isOneTime ? toFlatValue : toClassString;
|
35807
|
+
var watchExpression = $parse(expression, watchInterceptor);
|
35808
|
+
var watchAction = isOneTime ? ngClassOneTimeWatchAction : ngClassWatchAction;
|
35782
35809
|
|
35783
|
-
|
35784
|
-
|
35785
|
-
|
35810
|
+
var classCounts = element.data('$classCounts');
|
35811
|
+
var oldModulo = true;
|
35812
|
+
var oldClassString;
|
35786
35813
|
|
35814
|
+
if (!classCounts) {
|
35815
|
+
// Use createMap() to prevent class assumptions involving property
|
35816
|
+
// names in Object.prototype
|
35817
|
+
classCounts = createMap();
|
35818
|
+
element.data('$classCounts', classCounts);
|
35819
|
+
}
|
35787
35820
|
|
35788
35821
|
if (name !== 'ngClass') {
|
35789
|
-
|
35790
|
-
|
35791
|
-
|
35792
|
-
|
35793
|
-
|
35794
|
-
|
35795
|
-
|
35796
|
-
|
35797
|
-
removeClasses(classes);
|
35798
|
-
}
|
35799
|
-
}
|
35800
|
-
/* eslint-enable */
|
35801
|
-
});
|
35822
|
+
if (!indexWatchExpression) {
|
35823
|
+
indexWatchExpression = $parse('$index', function moduloTwo($index) {
|
35824
|
+
// eslint-disable-next-line no-bitwise
|
35825
|
+
return $index & 1;
|
35826
|
+
});
|
35827
|
+
}
|
35828
|
+
|
35829
|
+
scope.$watch(indexWatchExpression, ngClassIndexWatchAction);
|
35802
35830
|
}
|
35803
35831
|
|
35804
|
-
|
35805
|
-
|
35806
|
-
|
35832
|
+
scope.$watch(watchExpression, watchAction, isOneTime);
|
35833
|
+
|
35834
|
+
function addClasses(classString) {
|
35835
|
+
classString = digestClassCounts(split(classString), 1);
|
35836
|
+
attr.$addClass(classString);
|
35807
35837
|
}
|
35808
35838
|
|
35809
|
-
function removeClasses(
|
35810
|
-
|
35811
|
-
attr.$removeClass(
|
35839
|
+
function removeClasses(classString) {
|
35840
|
+
classString = digestClassCounts(split(classString), -1);
|
35841
|
+
attr.$removeClass(classString);
|
35812
35842
|
}
|
35813
35843
|
|
35814
|
-
function
|
35815
|
-
|
35816
|
-
|
35817
|
-
|
35844
|
+
function updateClasses(oldClassString, newClassString) {
|
35845
|
+
var oldClassArray = split(oldClassString);
|
35846
|
+
var newClassArray = split(newClassString);
|
35847
|
+
|
35848
|
+
var toRemoveArray = arrayDifference(oldClassArray, newClassArray);
|
35849
|
+
var toAddArray = arrayDifference(newClassArray, oldClassArray);
|
35850
|
+
|
35851
|
+
var toRemoveString = digestClassCounts(toRemoveArray, -1);
|
35852
|
+
var toAddString = digestClassCounts(toAddArray, 1);
|
35853
|
+
|
35854
|
+
attr.$addClass(toAddString);
|
35855
|
+
attr.$removeClass(toRemoveString);
|
35856
|
+
}
|
35857
|
+
|
35858
|
+
function digestClassCounts(classArray, count) {
|
35818
35859
|
var classesToUpdate = [];
|
35819
|
-
|
35860
|
+
|
35861
|
+
forEach(classArray, function(className) {
|
35820
35862
|
if (count > 0 || classCounts[className]) {
|
35821
35863
|
classCounts[className] = (classCounts[className] || 0) + count;
|
35822
35864
|
if (classCounts[className] === +(count > 0)) {
|
@@ -35824,77 +35866,106 @@ function classDirective(name, selector) {
|
|
35824
35866
|
}
|
35825
35867
|
}
|
35826
35868
|
});
|
35827
|
-
|
35869
|
+
|
35828
35870
|
return classesToUpdate.join(' ');
|
35829
35871
|
}
|
35830
35872
|
|
35831
|
-
function
|
35832
|
-
|
35833
|
-
|
35834
|
-
|
35835
|
-
|
35836
|
-
|
35837
|
-
|
35838
|
-
|
35839
|
-
if (toRemove && toRemove.length) {
|
35840
|
-
$animate.removeClass(element, toRemove);
|
35873
|
+
function ngClassIndexWatchAction(newModulo) {
|
35874
|
+
// This watch-action should run before the `ngClass[OneTime]WatchAction()`, thus it
|
35875
|
+
// adds/removes `oldClassString`. If the `ngClass` expression has changed as well, the
|
35876
|
+
// `ngClass[OneTime]WatchAction()` will update the classes.
|
35877
|
+
if (newModulo === selector) {
|
35878
|
+
addClasses(oldClassString);
|
35879
|
+
} else {
|
35880
|
+
removeClasses(oldClassString);
|
35841
35881
|
}
|
35882
|
+
|
35883
|
+
oldModulo = newModulo;
|
35842
35884
|
}
|
35843
35885
|
|
35844
|
-
function
|
35845
|
-
|
35846
|
-
|
35847
|
-
|
35848
|
-
|
35849
|
-
addClasses(newClasses);
|
35850
|
-
} else if (!equals(newVal,oldVal)) {
|
35851
|
-
var oldClasses = arrayClasses(oldVal);
|
35852
|
-
updateClasses(oldClasses, newClasses);
|
35853
|
-
}
|
35886
|
+
function ngClassOneTimeWatchAction(newClassValue) {
|
35887
|
+
var newClassString = toClassString(newClassValue);
|
35888
|
+
|
35889
|
+
if (newClassString !== oldClassString) {
|
35890
|
+
ngClassWatchAction(newClassString);
|
35854
35891
|
}
|
35855
|
-
|
35856
|
-
|
35857
|
-
|
35858
|
-
|
35892
|
+
}
|
35893
|
+
|
35894
|
+
function ngClassWatchAction(newClassString) {
|
35895
|
+
if (oldModulo === selector) {
|
35896
|
+
updateClasses(oldClassString, newClassString);
|
35859
35897
|
}
|
35898
|
+
|
35899
|
+
oldClassString = newClassString;
|
35860
35900
|
}
|
35861
35901
|
}
|
35862
35902
|
};
|
35903
|
+
}];
|
35863
35904
|
|
35864
|
-
|
35865
|
-
|
35905
|
+
// Helpers
|
35906
|
+
function arrayDifference(tokens1, tokens2) {
|
35907
|
+
if (!tokens1 || !tokens1.length) return [];
|
35908
|
+
if (!tokens2 || !tokens2.length) return tokens1;
|
35866
35909
|
|
35867
|
-
|
35868
|
-
|
35869
|
-
|
35870
|
-
|
35871
|
-
|
35872
|
-
|
35873
|
-
|
35910
|
+
var values = [];
|
35911
|
+
|
35912
|
+
outer:
|
35913
|
+
for (var i = 0; i < tokens1.length; i++) {
|
35914
|
+
var token = tokens1[i];
|
35915
|
+
for (var j = 0; j < tokens2.length; j++) {
|
35916
|
+
if (token === tokens2[j]) continue outer;
|
35874
35917
|
}
|
35875
|
-
|
35918
|
+
values.push(token);
|
35876
35919
|
}
|
35877
35920
|
|
35878
|
-
|
35879
|
-
|
35880
|
-
|
35881
|
-
|
35882
|
-
|
35883
|
-
|
35884
|
-
|
35885
|
-
|
35886
|
-
|
35887
|
-
|
35888
|
-
|
35889
|
-
|
35890
|
-
|
35891
|
-
|
35892
|
-
})
|
35893
|
-
|
35921
|
+
return values;
|
35922
|
+
}
|
35923
|
+
|
35924
|
+
function split(classString) {
|
35925
|
+
return classString && classString.split(' ');
|
35926
|
+
}
|
35927
|
+
|
35928
|
+
function toClassString(classValue) {
|
35929
|
+
var classString = classValue;
|
35930
|
+
|
35931
|
+
if (isArray(classValue)) {
|
35932
|
+
classString = classValue.map(toClassString).join(' ');
|
35933
|
+
} else if (isObject(classValue)) {
|
35934
|
+
classString = Object.keys(classValue).
|
35935
|
+
filter(function(key) { return classValue[key]; }).
|
35936
|
+
join(' ');
|
35937
|
+
}
|
35938
|
+
|
35939
|
+
return classString;
|
35940
|
+
}
|
35941
|
+
|
35942
|
+
function toFlatValue(classValue) {
|
35943
|
+
var flatValue = classValue;
|
35944
|
+
|
35945
|
+
if (isArray(classValue)) {
|
35946
|
+
flatValue = classValue.map(toFlatValue);
|
35947
|
+
} else if (isObject(classValue)) {
|
35948
|
+
var hasUndefined = false;
|
35949
|
+
|
35950
|
+
flatValue = Object.keys(classValue).filter(function(key) {
|
35951
|
+
var value = classValue[key];
|
35952
|
+
|
35953
|
+
if (!hasUndefined && isUndefined(value)) {
|
35954
|
+
hasUndefined = true;
|
35955
|
+
}
|
35956
|
+
|
35957
|
+
return value;
|
35958
|
+
});
|
35959
|
+
|
35960
|
+
if (hasUndefined) {
|
35961
|
+
// Prevent the `oneTimeLiteralWatchInterceptor` from unregistering
|
35962
|
+
// the watcher, by including at least one `undefined` value.
|
35963
|
+
flatValue.push(undefined);
|
35894
35964
|
}
|
35895
|
-
return classVal;
|
35896
35965
|
}
|
35897
|
-
|
35966
|
+
|
35967
|
+
return flatValue;
|
35968
|
+
}
|
35898
35969
|
}
|
35899
35970
|
|
35900
35971
|
/**
|
@@ -39284,19 +39355,27 @@ defaultModelOptions = new ModelOptions({
|
|
39284
39355
|
*
|
39285
39356
|
*/
|
39286
39357
|
var ngModelOptionsDirective = function() {
|
39358
|
+
NgModelOptionsController.$inject = ['$attrs', '$scope'];
|
39359
|
+
function NgModelOptionsController($attrs, $scope) {
|
39360
|
+
this.$$attrs = $attrs;
|
39361
|
+
this.$$scope = $scope;
|
39362
|
+
}
|
39363
|
+
NgModelOptionsController.prototype = {
|
39364
|
+
$onInit: function() {
|
39365
|
+
var parentOptions = this.parentCtrl ? this.parentCtrl.$options : defaultModelOptions;
|
39366
|
+
var modelOptionsDefinition = this.$$scope.$eval(this.$$attrs.ngModelOptions);
|
39367
|
+
|
39368
|
+
this.$options = parentOptions.createChild(modelOptionsDefinition);
|
39369
|
+
}
|
39370
|
+
};
|
39371
|
+
|
39287
39372
|
return {
|
39288
39373
|
restrict: 'A',
|
39289
39374
|
// ngModelOptions needs to run before ngModel and input directives
|
39290
39375
|
priority: 10,
|
39291
|
-
require:
|
39292
|
-
|
39293
|
-
|
39294
|
-
pre: function ngModelOptionsPreLinkFn(scope, element, attrs, ctrls) {
|
39295
|
-
var optionsCtrl = ctrls[0];
|
39296
|
-
var parentOptions = ctrls[1] ? ctrls[1].$options : defaultModelOptions;
|
39297
|
-
optionsCtrl.$options = parentOptions.createChild(scope.$eval(attrs.ngModelOptions));
|
39298
|
-
}
|
39299
|
-
}
|
39376
|
+
require: {parentCtrl: '?^^ngModelOptions'},
|
39377
|
+
bindToController: true,
|
39378
|
+
controller: NgModelOptionsController
|
39300
39379
|
};
|
39301
39380
|
};
|
39302
39381
|
|
@@ -39849,17 +39928,17 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile,
|
|
39849
39928
|
|
39850
39929
|
} else {
|
39851
39930
|
|
39852
|
-
selectCtrl.writeValue = function writeNgOptionsMultiple(
|
39931
|
+
selectCtrl.writeValue = function writeNgOptionsMultiple(values) {
|
39932
|
+
// Only set `<option>.selected` if necessary, in order to prevent some browsers from
|
39933
|
+
// scrolling to `<option>` elements that are outside the `<select>` element's viewport.
|
39934
|
+
|
39935
|
+
var selectedOptions = values && values.map(getAndUpdateSelectedOption) || [];
|
39936
|
+
|
39853
39937
|
options.items.forEach(function(option) {
|
39854
|
-
option.element.selected
|
39938
|
+
if (option.element.selected && !includes(selectedOptions, option)) {
|
39939
|
+
option.element.selected = false;
|
39940
|
+
}
|
39855
39941
|
});
|
39856
|
-
|
39857
|
-
if (value) {
|
39858
|
-
value.forEach(function(item) {
|
39859
|
-
var option = options.getOptionFromViewValue(item);
|
39860
|
-
if (option) option.element.selected = true;
|
39861
|
-
});
|
39862
|
-
}
|
39863
39942
|
};
|
39864
39943
|
|
39865
39944
|
|
@@ -39949,6 +40028,14 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile,
|
|
39949
40028
|
updateOptionElement(option, optionElement);
|
39950
40029
|
}
|
39951
40030
|
|
40031
|
+
function getAndUpdateSelectedOption(viewValue) {
|
40032
|
+
var option = options.getOptionFromViewValue(viewValue);
|
40033
|
+
var element = option && option.element;
|
40034
|
+
|
40035
|
+
if (element && !element.selected) element.selected = true;
|
40036
|
+
|
40037
|
+
return option;
|
40038
|
+
}
|
39952
40039
|
|
39953
40040
|
function updateOptionElement(option, element) {
|
39954
40041
|
option.element = element;
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.6.
|
2
|
+
* @license AngularJS v1.6.1
|
3
3
|
* (c) 2010-2016 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -57,7 +57,7 @@ function minErr(module, ErrorConstructor) {
|
|
57
57
|
return match;
|
58
58
|
});
|
59
59
|
|
60
|
-
message += '\nhttp://errors.angularjs.org/1.6.
|
60
|
+
message += '\nhttp://errors.angularjs.org/1.6.1/' +
|
61
61
|
(module ? module + '/' : '') + code;
|
62
62
|
|
63
63
|
for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
|
@@ -2623,11 +2623,11 @@ function toDebugString(obj) {
|
|
2623
2623
|
var version = {
|
2624
2624
|
// These placeholder strings will be replaced by grunt's `build` task.
|
2625
2625
|
// They need to be double- or single-quoted.
|
2626
|
-
full: '1.6.
|
2626
|
+
full: '1.6.1',
|
2627
2627
|
major: 1,
|
2628
2628
|
minor: 6,
|
2629
|
-
dot:
|
2630
|
-
codeName: '
|
2629
|
+
dot: 1,
|
2630
|
+
codeName: 'promise-rectification'
|
2631
2631
|
};
|
2632
2632
|
|
2633
2633
|
|
@@ -3753,12 +3753,15 @@ forEach({
|
|
3753
3753
|
|
3754
3754
|
after: function(element, newElement) {
|
3755
3755
|
var index = element, parent = element.parentNode;
|
3756
|
-
newElement = new JQLite(newElement);
|
3757
3756
|
|
3758
|
-
|
3759
|
-
|
3760
|
-
|
3761
|
-
|
3757
|
+
if (parent) {
|
3758
|
+
newElement = new JQLite(newElement);
|
3759
|
+
|
3760
|
+
for (var i = 0, ii = newElement.length; i < ii; i++) {
|
3761
|
+
var node = newElement[i];
|
3762
|
+
parent.insertBefore(node, index.nextSibling);
|
3763
|
+
index = node;
|
3764
|
+
}
|
3762
3765
|
}
|
3763
3766
|
},
|
3764
3767
|
|
@@ -12893,7 +12896,8 @@ function $IntervalProvider() {
|
|
12893
12896
|
* appropriate moment. See the example below for more details on how and when to do this.
|
12894
12897
|
* </div>
|
12895
12898
|
*
|
12896
|
-
* @param {function()} fn A function that should be called repeatedly.
|
12899
|
+
* @param {function()} fn A function that should be called repeatedly. If no additional arguments
|
12900
|
+
* are passed (see below), the function is called with the current iteration count.
|
12897
12901
|
* @param {number} delay Number of milliseconds between each function call.
|
12898
12902
|
* @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat
|
12899
12903
|
* indefinitely.
|
@@ -16524,6 +16528,7 @@ function $QProvider() {
|
|
16524
16528
|
*
|
16525
16529
|
* @description
|
16526
16530
|
* Retrieves or overrides whether to generate an error when a rejected promise is not handled.
|
16531
|
+
* This feature is enabled by default.
|
16527
16532
|
*
|
16528
16533
|
* @param {boolean=} value Whether to generate an error when a rejected promise is not handled.
|
16529
16534
|
* @returns {boolean|ng.$qProvider} Current value when called without a new value or self for
|
@@ -16665,7 +16670,11 @@ function qFactory(nextTick, exceptionHandler, errorOnUnhandledRejections) {
|
|
16665
16670
|
if (!toCheck.pur) {
|
16666
16671
|
toCheck.pur = true;
|
16667
16672
|
var errorMessage = 'Possibly unhandled rejection: ' + toDebugString(toCheck.value);
|
16668
|
-
|
16673
|
+
if (toCheck.value instanceof Error) {
|
16674
|
+
exceptionHandler(toCheck.value, errorMessage);
|
16675
|
+
} else {
|
16676
|
+
exceptionHandler(errorMessage);
|
16677
|
+
}
|
16669
16678
|
}
|
16670
16679
|
}
|
16671
16680
|
}
|
@@ -17399,15 +17408,21 @@ function $RootScopeProvider() {
|
|
17399
17408
|
|
17400
17409
|
if (!array) {
|
17401
17410
|
array = scope.$$watchers = [];
|
17411
|
+
array.$$digestWatchIndex = -1;
|
17402
17412
|
}
|
17403
17413
|
// we use unshift since we use a while loop in $digest for speed.
|
17404
17414
|
// the while loop reads in reverse order.
|
17405
17415
|
array.unshift(watcher);
|
17416
|
+
array.$$digestWatchIndex++;
|
17406
17417
|
incrementWatchersCount(this, 1);
|
17407
17418
|
|
17408
17419
|
return function deregisterWatch() {
|
17409
|
-
|
17420
|
+
var index = arrayRemove(array, watcher);
|
17421
|
+
if (index >= 0) {
|
17410
17422
|
incrementWatchersCount(scope, -1);
|
17423
|
+
if (index < array.$$digestWatchIndex) {
|
17424
|
+
array.$$digestWatchIndex--;
|
17425
|
+
}
|
17411
17426
|
}
|
17412
17427
|
lastDirtyWatch = null;
|
17413
17428
|
};
|
@@ -17740,7 +17755,6 @@ function $RootScopeProvider() {
|
|
17740
17755
|
$digest: function() {
|
17741
17756
|
var watch, value, last, fn, get,
|
17742
17757
|
watchers,
|
17743
|
-
length,
|
17744
17758
|
dirty, ttl = TTL,
|
17745
17759
|
next, current, target = this,
|
17746
17760
|
watchLog = [],
|
@@ -17781,10 +17795,10 @@ function $RootScopeProvider() {
|
|
17781
17795
|
do { // "traverse the scopes" loop
|
17782
17796
|
if ((watchers = current.$$watchers)) {
|
17783
17797
|
// process our watches
|
17784
|
-
|
17785
|
-
while (
|
17798
|
+
watchers.$$digestWatchIndex = watchers.length;
|
17799
|
+
while (watchers.$$digestWatchIndex--) {
|
17786
17800
|
try {
|
17787
|
-
watch = watchers[
|
17801
|
+
watch = watchers[watchers.$$digestWatchIndex];
|
17788
17802
|
// Most common watches are on primitives, in which case we can short
|
17789
17803
|
// circuit it with === operator, only when === fails do we use .equals
|
17790
17804
|
if (watch) {
|
@@ -20101,6 +20115,14 @@ function $$CookieReader($document) {
|
|
20101
20115
|
var lastCookies = {};
|
20102
20116
|
var lastCookieString = '';
|
20103
20117
|
|
20118
|
+
function safeGetCookie(rawDocument) {
|
20119
|
+
try {
|
20120
|
+
return rawDocument.cookie || '';
|
20121
|
+
} catch (e) {
|
20122
|
+
return '';
|
20123
|
+
}
|
20124
|
+
}
|
20125
|
+
|
20104
20126
|
function safeDecodeURIComponent(str) {
|
20105
20127
|
try {
|
20106
20128
|
return decodeURIComponent(str);
|
@@ -20111,7 +20133,7 @@ function $$CookieReader($document) {
|
|
20111
20133
|
|
20112
20134
|
return function() {
|
20113
20135
|
var cookieArray, cookie, i, index, name;
|
20114
|
-
var currentCookieString = rawDocument
|
20136
|
+
var currentCookieString = safeGetCookie(rawDocument);
|
20115
20137
|
|
20116
20138
|
if (currentCookieString !== lastCookieString) {
|
20117
20139
|
lastCookieString = currentCookieString;
|
@@ -25699,51 +25721,71 @@ var ngChangeDirective = valueFn({
|
|
25699
25721
|
|
25700
25722
|
function classDirective(name, selector) {
|
25701
25723
|
name = 'ngClass' + name;
|
25702
|
-
|
25724
|
+
var indexWatchExpression;
|
25725
|
+
|
25726
|
+
return ['$parse', function($parse) {
|
25703
25727
|
return {
|
25704
25728
|
restrict: 'AC',
|
25705
25729
|
link: function(scope, element, attr) {
|
25706
|
-
var
|
25730
|
+
var expression = attr[name].trim();
|
25731
|
+
var isOneTime = (expression.charAt(0) === ':') && (expression.charAt(1) === ':');
|
25707
25732
|
|
25708
|
-
|
25733
|
+
var watchInterceptor = isOneTime ? toFlatValue : toClassString;
|
25734
|
+
var watchExpression = $parse(expression, watchInterceptor);
|
25735
|
+
var watchAction = isOneTime ? ngClassOneTimeWatchAction : ngClassWatchAction;
|
25709
25736
|
|
25710
|
-
|
25711
|
-
|
25712
|
-
|
25737
|
+
var classCounts = element.data('$classCounts');
|
25738
|
+
var oldModulo = true;
|
25739
|
+
var oldClassString;
|
25713
25740
|
|
25741
|
+
if (!classCounts) {
|
25742
|
+
// Use createMap() to prevent class assumptions involving property
|
25743
|
+
// names in Object.prototype
|
25744
|
+
classCounts = createMap();
|
25745
|
+
element.data('$classCounts', classCounts);
|
25746
|
+
}
|
25714
25747
|
|
25715
25748
|
if (name !== 'ngClass') {
|
25716
|
-
|
25717
|
-
|
25718
|
-
|
25719
|
-
|
25720
|
-
|
25721
|
-
|
25722
|
-
|
25723
|
-
|
25724
|
-
removeClasses(classes);
|
25725
|
-
}
|
25726
|
-
}
|
25727
|
-
/* eslint-enable */
|
25728
|
-
});
|
25749
|
+
if (!indexWatchExpression) {
|
25750
|
+
indexWatchExpression = $parse('$index', function moduloTwo($index) {
|
25751
|
+
// eslint-disable-next-line no-bitwise
|
25752
|
+
return $index & 1;
|
25753
|
+
});
|
25754
|
+
}
|
25755
|
+
|
25756
|
+
scope.$watch(indexWatchExpression, ngClassIndexWatchAction);
|
25729
25757
|
}
|
25730
25758
|
|
25731
|
-
|
25732
|
-
|
25733
|
-
|
25759
|
+
scope.$watch(watchExpression, watchAction, isOneTime);
|
25760
|
+
|
25761
|
+
function addClasses(classString) {
|
25762
|
+
classString = digestClassCounts(split(classString), 1);
|
25763
|
+
attr.$addClass(classString);
|
25734
25764
|
}
|
25735
25765
|
|
25736
|
-
function removeClasses(
|
25737
|
-
|
25738
|
-
attr.$removeClass(
|
25766
|
+
function removeClasses(classString) {
|
25767
|
+
classString = digestClassCounts(split(classString), -1);
|
25768
|
+
attr.$removeClass(classString);
|
25739
25769
|
}
|
25740
25770
|
|
25741
|
-
function
|
25742
|
-
|
25743
|
-
|
25744
|
-
|
25771
|
+
function updateClasses(oldClassString, newClassString) {
|
25772
|
+
var oldClassArray = split(oldClassString);
|
25773
|
+
var newClassArray = split(newClassString);
|
25774
|
+
|
25775
|
+
var toRemoveArray = arrayDifference(oldClassArray, newClassArray);
|
25776
|
+
var toAddArray = arrayDifference(newClassArray, oldClassArray);
|
25777
|
+
|
25778
|
+
var toRemoveString = digestClassCounts(toRemoveArray, -1);
|
25779
|
+
var toAddString = digestClassCounts(toAddArray, 1);
|
25780
|
+
|
25781
|
+
attr.$addClass(toAddString);
|
25782
|
+
attr.$removeClass(toRemoveString);
|
25783
|
+
}
|
25784
|
+
|
25785
|
+
function digestClassCounts(classArray, count) {
|
25745
25786
|
var classesToUpdate = [];
|
25746
|
-
|
25787
|
+
|
25788
|
+
forEach(classArray, function(className) {
|
25747
25789
|
if (count > 0 || classCounts[className]) {
|
25748
25790
|
classCounts[className] = (classCounts[className] || 0) + count;
|
25749
25791
|
if (classCounts[className] === +(count > 0)) {
|
@@ -25751,77 +25793,106 @@ function classDirective(name, selector) {
|
|
25751
25793
|
}
|
25752
25794
|
}
|
25753
25795
|
});
|
25754
|
-
|
25796
|
+
|
25755
25797
|
return classesToUpdate.join(' ');
|
25756
25798
|
}
|
25757
25799
|
|
25758
|
-
function
|
25759
|
-
|
25760
|
-
|
25761
|
-
|
25762
|
-
|
25763
|
-
|
25764
|
-
|
25765
|
-
|
25766
|
-
if (toRemove && toRemove.length) {
|
25767
|
-
$animate.removeClass(element, toRemove);
|
25800
|
+
function ngClassIndexWatchAction(newModulo) {
|
25801
|
+
// This watch-action should run before the `ngClass[OneTime]WatchAction()`, thus it
|
25802
|
+
// adds/removes `oldClassString`. If the `ngClass` expression has changed as well, the
|
25803
|
+
// `ngClass[OneTime]WatchAction()` will update the classes.
|
25804
|
+
if (newModulo === selector) {
|
25805
|
+
addClasses(oldClassString);
|
25806
|
+
} else {
|
25807
|
+
removeClasses(oldClassString);
|
25768
25808
|
}
|
25809
|
+
|
25810
|
+
oldModulo = newModulo;
|
25769
25811
|
}
|
25770
25812
|
|
25771
|
-
function
|
25772
|
-
|
25773
|
-
|
25774
|
-
|
25775
|
-
|
25776
|
-
addClasses(newClasses);
|
25777
|
-
} else if (!equals(newVal,oldVal)) {
|
25778
|
-
var oldClasses = arrayClasses(oldVal);
|
25779
|
-
updateClasses(oldClasses, newClasses);
|
25780
|
-
}
|
25813
|
+
function ngClassOneTimeWatchAction(newClassValue) {
|
25814
|
+
var newClassString = toClassString(newClassValue);
|
25815
|
+
|
25816
|
+
if (newClassString !== oldClassString) {
|
25817
|
+
ngClassWatchAction(newClassString);
|
25781
25818
|
}
|
25782
|
-
|
25783
|
-
|
25784
|
-
|
25785
|
-
|
25819
|
+
}
|
25820
|
+
|
25821
|
+
function ngClassWatchAction(newClassString) {
|
25822
|
+
if (oldModulo === selector) {
|
25823
|
+
updateClasses(oldClassString, newClassString);
|
25786
25824
|
}
|
25825
|
+
|
25826
|
+
oldClassString = newClassString;
|
25787
25827
|
}
|
25788
25828
|
}
|
25789
25829
|
};
|
25830
|
+
}];
|
25790
25831
|
|
25791
|
-
|
25792
|
-
|
25832
|
+
// Helpers
|
25833
|
+
function arrayDifference(tokens1, tokens2) {
|
25834
|
+
if (!tokens1 || !tokens1.length) return [];
|
25835
|
+
if (!tokens2 || !tokens2.length) return tokens1;
|
25793
25836
|
|
25794
|
-
|
25795
|
-
|
25796
|
-
|
25797
|
-
|
25798
|
-
|
25799
|
-
|
25800
|
-
|
25837
|
+
var values = [];
|
25838
|
+
|
25839
|
+
outer:
|
25840
|
+
for (var i = 0; i < tokens1.length; i++) {
|
25841
|
+
var token = tokens1[i];
|
25842
|
+
for (var j = 0; j < tokens2.length; j++) {
|
25843
|
+
if (token === tokens2[j]) continue outer;
|
25801
25844
|
}
|
25802
|
-
|
25845
|
+
values.push(token);
|
25803
25846
|
}
|
25804
25847
|
|
25805
|
-
|
25806
|
-
|
25807
|
-
|
25808
|
-
|
25809
|
-
|
25810
|
-
|
25811
|
-
|
25812
|
-
|
25813
|
-
|
25814
|
-
|
25815
|
-
|
25816
|
-
|
25817
|
-
|
25818
|
-
|
25819
|
-
})
|
25820
|
-
|
25848
|
+
return values;
|
25849
|
+
}
|
25850
|
+
|
25851
|
+
function split(classString) {
|
25852
|
+
return classString && classString.split(' ');
|
25853
|
+
}
|
25854
|
+
|
25855
|
+
function toClassString(classValue) {
|
25856
|
+
var classString = classValue;
|
25857
|
+
|
25858
|
+
if (isArray(classValue)) {
|
25859
|
+
classString = classValue.map(toClassString).join(' ');
|
25860
|
+
} else if (isObject(classValue)) {
|
25861
|
+
classString = Object.keys(classValue).
|
25862
|
+
filter(function(key) { return classValue[key]; }).
|
25863
|
+
join(' ');
|
25864
|
+
}
|
25865
|
+
|
25866
|
+
return classString;
|
25867
|
+
}
|
25868
|
+
|
25869
|
+
function toFlatValue(classValue) {
|
25870
|
+
var flatValue = classValue;
|
25871
|
+
|
25872
|
+
if (isArray(classValue)) {
|
25873
|
+
flatValue = classValue.map(toFlatValue);
|
25874
|
+
} else if (isObject(classValue)) {
|
25875
|
+
var hasUndefined = false;
|
25876
|
+
|
25877
|
+
flatValue = Object.keys(classValue).filter(function(key) {
|
25878
|
+
var value = classValue[key];
|
25879
|
+
|
25880
|
+
if (!hasUndefined && isUndefined(value)) {
|
25881
|
+
hasUndefined = true;
|
25882
|
+
}
|
25883
|
+
|
25884
|
+
return value;
|
25885
|
+
});
|
25886
|
+
|
25887
|
+
if (hasUndefined) {
|
25888
|
+
// Prevent the `oneTimeLiteralWatchInterceptor` from unregistering
|
25889
|
+
// the watcher, by including at least one `undefined` value.
|
25890
|
+
flatValue.push(undefined);
|
25821
25891
|
}
|
25822
|
-
return classVal;
|
25823
25892
|
}
|
25824
|
-
|
25893
|
+
|
25894
|
+
return flatValue;
|
25895
|
+
}
|
25825
25896
|
}
|
25826
25897
|
|
25827
25898
|
/**
|
@@ -29211,19 +29282,27 @@ defaultModelOptions = new ModelOptions({
|
|
29211
29282
|
*
|
29212
29283
|
*/
|
29213
29284
|
var ngModelOptionsDirective = function() {
|
29285
|
+
NgModelOptionsController.$inject = ['$attrs', '$scope'];
|
29286
|
+
function NgModelOptionsController($attrs, $scope) {
|
29287
|
+
this.$$attrs = $attrs;
|
29288
|
+
this.$$scope = $scope;
|
29289
|
+
}
|
29290
|
+
NgModelOptionsController.prototype = {
|
29291
|
+
$onInit: function() {
|
29292
|
+
var parentOptions = this.parentCtrl ? this.parentCtrl.$options : defaultModelOptions;
|
29293
|
+
var modelOptionsDefinition = this.$$scope.$eval(this.$$attrs.ngModelOptions);
|
29294
|
+
|
29295
|
+
this.$options = parentOptions.createChild(modelOptionsDefinition);
|
29296
|
+
}
|
29297
|
+
};
|
29298
|
+
|
29214
29299
|
return {
|
29215
29300
|
restrict: 'A',
|
29216
29301
|
// ngModelOptions needs to run before ngModel and input directives
|
29217
29302
|
priority: 10,
|
29218
|
-
require:
|
29219
|
-
|
29220
|
-
|
29221
|
-
pre: function ngModelOptionsPreLinkFn(scope, element, attrs, ctrls) {
|
29222
|
-
var optionsCtrl = ctrls[0];
|
29223
|
-
var parentOptions = ctrls[1] ? ctrls[1].$options : defaultModelOptions;
|
29224
|
-
optionsCtrl.$options = parentOptions.createChild(scope.$eval(attrs.ngModelOptions));
|
29225
|
-
}
|
29226
|
-
}
|
29303
|
+
require: {parentCtrl: '?^^ngModelOptions'},
|
29304
|
+
bindToController: true,
|
29305
|
+
controller: NgModelOptionsController
|
29227
29306
|
};
|
29228
29307
|
};
|
29229
29308
|
|
@@ -29776,17 +29855,17 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile,
|
|
29776
29855
|
|
29777
29856
|
} else {
|
29778
29857
|
|
29779
|
-
selectCtrl.writeValue = function writeNgOptionsMultiple(
|
29858
|
+
selectCtrl.writeValue = function writeNgOptionsMultiple(values) {
|
29859
|
+
// Only set `<option>.selected` if necessary, in order to prevent some browsers from
|
29860
|
+
// scrolling to `<option>` elements that are outside the `<select>` element's viewport.
|
29861
|
+
|
29862
|
+
var selectedOptions = values && values.map(getAndUpdateSelectedOption) || [];
|
29863
|
+
|
29780
29864
|
options.items.forEach(function(option) {
|
29781
|
-
option.element.selected
|
29865
|
+
if (option.element.selected && !includes(selectedOptions, option)) {
|
29866
|
+
option.element.selected = false;
|
29867
|
+
}
|
29782
29868
|
});
|
29783
|
-
|
29784
|
-
if (value) {
|
29785
|
-
value.forEach(function(item) {
|
29786
|
-
var option = options.getOptionFromViewValue(item);
|
29787
|
-
if (option) option.element.selected = true;
|
29788
|
-
});
|
29789
|
-
}
|
29790
29869
|
};
|
29791
29870
|
|
29792
29871
|
|
@@ -29876,6 +29955,14 @@ var ngOptionsDirective = ['$compile', '$document', '$parse', function($compile,
|
|
29876
29955
|
updateOptionElement(option, optionElement);
|
29877
29956
|
}
|
29878
29957
|
|
29958
|
+
function getAndUpdateSelectedOption(viewValue) {
|
29959
|
+
var option = options.getOptionFromViewValue(viewValue);
|
29960
|
+
var element = option && option.element;
|
29961
|
+
|
29962
|
+
if (element && !element.selected) element.selected = true;
|
29963
|
+
|
29964
|
+
return option;
|
29965
|
+
}
|
29879
29966
|
|
29880
29967
|
function updateOptionElement(option, element) {
|
29881
29968
|
option.element = element;
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angularjs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hirav Gandhi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|