angularjs-rails 1.6.0 → 1.6.1
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 +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
|