angularjs-rails 1.3.3 → 1.3.4
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 +2 -2
- data/vendor/assets/javascripts/angular-animate.js +14 -14
- 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-messages.js +1 -1
- data/vendor/assets/javascripts/angular-mocks.js +1 -1
- data/vendor/assets/javascripts/angular-resource.js +1 -1
- data/vendor/assets/javascripts/angular-route.js +3 -3
- data/vendor/assets/javascripts/angular-sanitize.js +7 -7
- data/vendor/assets/javascripts/angular-scenario.js +354 -190
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +354 -190
- data/vendor/assets/javascripts/unstable/angular-animate.js +14 -14
- data/vendor/assets/javascripts/unstable/angular-aria.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-loader.js +2 -2
- data/vendor/assets/javascripts/unstable/angular-messages.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-mocks.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-resource.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-route.js +3 -3
- data/vendor/assets/javascripts/unstable/angular-sanitize.js +7 -7
- data/vendor/assets/javascripts/unstable/angular-scenario.js +354 -190
- data/vendor/assets/javascripts/unstable/angular-touch.js +1 -1
- data/vendor/assets/javascripts/unstable/angular.js +354 -190
- 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: 3ae72b7e0305c5b2d4aca7f98928e84b2428a48f
|
4
|
+
data.tar.gz: 972db5f45dd94d99a1ccffefdc8b21a0d3425851
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa30a3bd8db4909c1c4dc467fca901fa0ab4f64b0d8c107fa9b3bda52b2130bc1469122318b2d27b7ccbff5a6f55018f63b2fe251216c8a0a137e266c4cca198
|
7
|
+
data.tar.gz: a5c45b492c9aa9dc0edd783e128c639b484e09542e73c17a2b8d715e225c65ea6129b71c2ed505c41c13c6d2f16925ad62afe9805212192a1b2db25f8111ea3b
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.4
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -245,7 +245,7 @@
|
|
245
245
|
* You then configure `$animate` to enforce this prefix:
|
246
246
|
*
|
247
247
|
* ```js
|
248
|
-
* $animateProvider.
|
248
|
+
* $animateProvider.classNameFilter(/animate-/);
|
249
249
|
* ```
|
250
250
|
* </div>
|
251
251
|
*
|
@@ -976,9 +976,9 @@ angular.module('ngAnimate', ['ng'])
|
|
976
976
|
* | 3. $animate waits for the next digest to start the animation | class="my-animation ng-animate" |
|
977
977
|
* | 4. the .ng-leave class is added to the element | class="my-animation ng-animate ng-leave" |
|
978
978
|
* | 5. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-leave" |
|
979
|
-
* | 6. $animate blocks all CSS transitions on the element to ensure the .ng-leave class styling is applied right away | class="my-animation ng-animate ng-leave
|
979
|
+
* | 6. $animate blocks all CSS transitions on the element to ensure the .ng-leave class styling is applied right away | class="my-animation ng-animate ng-leave" |
|
980
980
|
* | 7. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate ng-leave" |
|
981
|
-
* | 8. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-leave
|
981
|
+
* | 8. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-leave" |
|
982
982
|
* | 9. the .ng-leave-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-leave ng-leave-active" |
|
983
983
|
* | 10. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate ng-leave ng-leave-active" |
|
984
984
|
* | 11. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
|
@@ -1022,9 +1022,9 @@ angular.module('ngAnimate', ['ng'])
|
|
1022
1022
|
* | 4. $animate runs the JavaScript-defined animations detected on the element | class="my-animation ng-animate" |
|
1023
1023
|
* | 5. the .ng-move class is added to the element | class="my-animation ng-animate ng-move" |
|
1024
1024
|
* | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate ng-move" |
|
1025
|
-
* | 7. $animate blocks all CSS transitions on the element to ensure the .ng-move class styling is applied right away | class="my-animation ng-animate ng-move
|
1025
|
+
* | 7. $animate blocks all CSS transitions on the element to ensure the .ng-move class styling is applied right away | class="my-animation ng-animate ng-move" |
|
1026
1026
|
* | 8. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate ng-move" |
|
1027
|
-
* | 9. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-move
|
1027
|
+
* | 9. $animate removes the CSS transition block placed on the element | class="my-animation ng-animate ng-move" |
|
1028
1028
|
* | 10. the .ng-move-active class is added (this triggers the CSS transition/animation) | class="my-animation ng-animate ng-move ng-move-active" |
|
1029
1029
|
* | 11. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate ng-move ng-move-active" |
|
1030
1030
|
* | 12. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
|
@@ -1069,8 +1069,8 @@ angular.module('ngAnimate', ['ng'])
|
|
1069
1069
|
* | 3. the .super-add class is added to the element | class="my-animation ng-animate super-add" |
|
1070
1070
|
* | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate super-add" |
|
1071
1071
|
* | 5. the .super and .super-add-active classes are added (this triggers the CSS transition/animation) | class="my-animation ng-animate super super-add super-add-active" |
|
1072
|
-
* | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super-add"
|
1073
|
-
* | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation super super-add super-add-active"
|
1072
|
+
* | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super super-add super-add-active" |
|
1073
|
+
* | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate super super-add super-add-active" |
|
1074
1074
|
* | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation super" |
|
1075
1075
|
* | 9. The super class is kept on the element | class="my-animation super" |
|
1076
1076
|
* | 10. The returned promise is resolved. | class="my-animation super" |
|
@@ -1103,7 +1103,7 @@ angular.module('ngAnimate', ['ng'])
|
|
1103
1103
|
* | 3. the .super-remove class is added to the element | class="my-animation super ng-animate super-remove" |
|
1104
1104
|
* | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation super ng-animate super-remove" |
|
1105
1105
|
* | 5. the .super-remove-active classes are added and .super is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate super-remove super-remove-active" |
|
1106
|
-
* | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation
|
1106
|
+
* | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate super-remove super-remove-active" |
|
1107
1107
|
* | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate super-remove super-remove-active" |
|
1108
1108
|
* | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation" |
|
1109
1109
|
* | 9. The returned promise is resolved. | class="my-animation" |
|
@@ -1128,11 +1128,11 @@ angular.module('ngAnimate', ['ng'])
|
|
1128
1128
|
*
|
1129
1129
|
* | Animation Step | What the element class attribute looks like |
|
1130
1130
|
* |--------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|
|
1131
|
-
* | 1. $animate.
|
1132
|
-
* | 2. $animate runs the JavaScript-defined animations detected on the element | class="my-animation
|
1133
|
-
* | 3. the .on-add and .off-remove classes are added to the element | class="my-animation ng-animate on-add off-remove off
|
1134
|
-
* | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate on-add off-remove off
|
1135
|
-
* | 5. the .on, .on-add-active and .off-remove-active classes are added and .off is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active
|
1131
|
+
* | 1. $animate.setClass(element, 'on', 'off') is called | class="my-animation off" |
|
1132
|
+
* | 2. $animate runs the JavaScript-defined animations detected on the element | class="my-animation ng-animate off" |
|
1133
|
+
* | 3. the .on-add and .off-remove classes are added to the element | class="my-animation ng-animate on-add off-remove off" |
|
1134
|
+
* | 4. $animate waits for a single animation frame (this performs a reflow) | class="my-animation ng-animate on-add off-remove off" |
|
1135
|
+
* | 5. the .on, .on-add-active and .off-remove-active classes are added and .off is removed (this triggers the CSS transition/animation) | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active" |
|
1136
1136
|
* | 6. $animate scans the element styles to get the CSS transition/animation duration and delay | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active" |
|
1137
1137
|
* | 7. $animate waits for the animation to complete (via events and timeout) | class="my-animation ng-animate on on-add on-add-active off-remove off-remove-active" |
|
1138
1138
|
* | 8. The animation ends and all generated CSS classes are removed from the element | class="my-animation on" |
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.4
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -55,7 +55,7 @@ function minErr(module, ErrorConstructor) {
|
|
55
55
|
return match;
|
56
56
|
});
|
57
57
|
|
58
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
58
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.4/' +
|
59
59
|
(module ? module + '/' : '') + code;
|
60
60
|
for (i = 2; i < arguments.length; i++) {
|
61
61
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.4
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -41,7 +41,7 @@ var ngRouteModule = angular.module('ngRoute', ['ng']).
|
|
41
41
|
*/
|
42
42
|
function $RouteProvider() {
|
43
43
|
function inherit(parent, extra) {
|
44
|
-
return angular.extend(
|
44
|
+
return angular.extend(Object.create(parent), extra);
|
45
45
|
}
|
46
46
|
|
47
47
|
var routes = {};
|
@@ -657,7 +657,7 @@ function $RouteProvider() {
|
|
657
657
|
if (i === 0) {
|
658
658
|
result.push(segment);
|
659
659
|
} else {
|
660
|
-
var segmentMatch = segment.match(/(\w+)(.*)/);
|
660
|
+
var segmentMatch = segment.match(/(\w+)(?:[?*])?(.*)/);
|
661
661
|
var key = segmentMatch[1];
|
662
662
|
result.push(params[key]);
|
663
663
|
result.push(segmentMatch[2] || '');
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.4
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -661,13 +661,13 @@ angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {
|
|
661
661
|
function addLink(url, text) {
|
662
662
|
html.push('<a ');
|
663
663
|
if (angular.isDefined(target)) {
|
664
|
-
html.push('target="'
|
665
|
-
|
666
|
-
|
664
|
+
html.push('target="',
|
665
|
+
target,
|
666
|
+
'" ');
|
667
667
|
}
|
668
|
-
html.push('href="'
|
669
|
-
|
670
|
-
|
668
|
+
html.push('href="',
|
669
|
+
url.replace('"', '"'),
|
670
|
+
'">');
|
671
671
|
addText(text);
|
672
672
|
html.push('</a>');
|
673
673
|
}
|
@@ -9190,7 +9190,7 @@ return jQuery;
|
|
9190
9190
|
}));
|
9191
9191
|
|
9192
9192
|
/**
|
9193
|
-
* @license AngularJS v1.3.
|
9193
|
+
* @license AngularJS v1.3.4
|
9194
9194
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
9195
9195
|
* License: MIT
|
9196
9196
|
*/
|
@@ -9246,7 +9246,7 @@ function minErr(module, ErrorConstructor) {
|
|
9246
9246
|
return match;
|
9247
9247
|
});
|
9248
9248
|
|
9249
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
9249
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.4/' +
|
9250
9250
|
(module ? module + '/' : '') + code;
|
9251
9251
|
for (i = 2; i < arguments.length; i++) {
|
9252
9252
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -9618,7 +9618,7 @@ function int(str) {
|
|
9618
9618
|
|
9619
9619
|
|
9620
9620
|
function inherit(parent, extra) {
|
9621
|
-
return extend(
|
9621
|
+
return extend(Object.create(parent), extra);
|
9622
9622
|
}
|
9623
9623
|
|
9624
9624
|
/**
|
@@ -9881,7 +9881,7 @@ function makeMap(str) {
|
|
9881
9881
|
|
9882
9882
|
|
9883
9883
|
function nodeName_(element) {
|
9884
|
-
return lowercase(element.nodeName || element[0].nodeName);
|
9884
|
+
return lowercase(element.nodeName || (element[0] && element[0].nodeName));
|
9885
9885
|
}
|
9886
9886
|
|
9887
9887
|
function includes(array, obj) {
|
@@ -10587,8 +10587,8 @@ function angularInit(element, bootstrap) {
|
|
10587
10587
|
* @param {Object=} config an object for defining configuration options for the application. The
|
10588
10588
|
* following keys are supported:
|
10589
10589
|
*
|
10590
|
-
*
|
10591
|
-
*
|
10590
|
+
* * `strictDi` - disable automatic function annotation for the application. This is meant to
|
10591
|
+
* assist in finding bugs which break minified code. Defaults to `false`.
|
10592
10592
|
*
|
10593
10593
|
* @returns {auto.$injector} Returns the newly created injector for this app.
|
10594
10594
|
*/
|
@@ -11292,11 +11292,11 @@ function toDebugString(obj) {
|
|
11292
11292
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11293
11293
|
*/
|
11294
11294
|
var version = {
|
11295
|
-
full: '1.3.
|
11295
|
+
full: '1.3.4', // all of these placeholder strings will be replaced by grunt's
|
11296
11296
|
major: 1, // package task
|
11297
11297
|
minor: 3,
|
11298
|
-
dot:
|
11299
|
-
codeName: '
|
11298
|
+
dot: 4,
|
11299
|
+
codeName: 'highfalutin-petroglyph'
|
11300
11300
|
};
|
11301
11301
|
|
11302
11302
|
|
@@ -11519,10 +11519,12 @@ function publishExternalAPI(angular) {
|
|
11519
11519
|
* `'ngModel'`).
|
11520
11520
|
* - `injector()` - retrieves the injector of the current element or its parent.
|
11521
11521
|
* - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current
|
11522
|
-
* element or its parent.
|
11522
|
+
* element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to
|
11523
|
+
* be enabled.
|
11523
11524
|
* - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the
|
11524
11525
|
* current element. This getter should be used only on elements that contain a directive which starts a new isolate
|
11525
11526
|
* scope. Calling `scope()` on this element always returns the original non-isolate scope.
|
11527
|
+
* Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled.
|
11526
11528
|
* - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top
|
11527
11529
|
* parent element is reached.
|
11528
11530
|
*
|
@@ -12517,9 +12519,10 @@ HashMap.prototype = {
|
|
12517
12519
|
* Creates an injector object that can be used for retrieving services as well as for
|
12518
12520
|
* dependency injection (see {@link guide/di dependency injection}).
|
12519
12521
|
*
|
12520
|
-
|
12521
12522
|
* @param {Array.<string|Function>} modules A list of module functions or their aliases. See
|
12522
|
-
*
|
12523
|
+
* {@link angular.module}. The `ng` module must be explicitly added.
|
12524
|
+
* @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which
|
12525
|
+
* disallows argument name annotation inference.
|
12523
12526
|
* @returns {injector} Injector object. See {@link auto.$injector $injector}.
|
12524
12527
|
*
|
12525
12528
|
* @example
|
@@ -12665,8 +12668,10 @@ function annotate(fn, strictDi, name) {
|
|
12665
12668
|
* ## Inference
|
12666
12669
|
*
|
12667
12670
|
* In JavaScript calling `toString()` on a function returns the function definition. The definition
|
12668
|
-
* can then be parsed and the function arguments can be extracted.
|
12669
|
-
*
|
12671
|
+
* can then be parsed and the function arguments can be extracted. This method of discovering
|
12672
|
+
* annotations is disallowed when the injector is in strict mode.
|
12673
|
+
* *NOTE:* This does not work with minification, and obfuscation tools since these tools change the
|
12674
|
+
* argument names.
|
12670
12675
|
*
|
12671
12676
|
* ## `$inject` Annotation
|
12672
12677
|
* By adding an `$inject` property onto a function the injection parameters can be specified.
|
@@ -12751,6 +12756,8 @@ function annotate(fn, strictDi, name) {
|
|
12751
12756
|
* expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);
|
12752
12757
|
* ```
|
12753
12758
|
*
|
12759
|
+
* You can disallow this method by using strict injection mode.
|
12760
|
+
*
|
12754
12761
|
* This method does not work with code minification / obfuscation. For this reason the following
|
12755
12762
|
* annotation strategies are supported.
|
12756
12763
|
*
|
@@ -12803,6 +12810,8 @@ function annotate(fn, strictDi, name) {
|
|
12803
12810
|
* @param {Function|Array.<string|Function>} fn Function for which dependent service names need to
|
12804
12811
|
* be retrieved as described above.
|
12805
12812
|
*
|
12813
|
+
* @param {boolean=} [strictDi=false] Disallow argument name annotation inference.
|
12814
|
+
*
|
12806
12815
|
* @returns {Array.<string>} The names of the services which the function requires.
|
12807
12816
|
*/
|
12808
12817
|
|
@@ -13322,14 +13331,11 @@ function createInjector(modulesToLoad, strictDi) {
|
|
13322
13331
|
}
|
13323
13332
|
|
13324
13333
|
function instantiate(Type, locals, serviceName) {
|
13325
|
-
var Constructor = function() {},
|
13326
|
-
instance, returnedValue;
|
13327
|
-
|
13328
13334
|
// Check if Type is annotated and use just the given function at n-1 as parameter
|
13329
13335
|
// e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);
|
13330
|
-
|
13331
|
-
instance =
|
13332
|
-
returnedValue = invoke(Type, instance, locals, serviceName);
|
13336
|
+
// Object creation: http://jsperf.com/create-constructor/2
|
13337
|
+
var instance = Object.create((isArray(Type) ? Type[Type.length - 1] : Type).prototype);
|
13338
|
+
var returnedValue = invoke(Type, instance, locals, serviceName);
|
13333
13339
|
|
13334
13340
|
return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;
|
13335
13341
|
}
|
@@ -14165,7 +14171,7 @@ function Browser(window, document, $log, $sniffer) {
|
|
14165
14171
|
// IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode.
|
14166
14172
|
// See https://github.com/angular/angular.js/commit/ffb2701
|
14167
14173
|
if (lastBrowserUrl === url && (!$sniffer.history || sameState)) {
|
14168
|
-
return;
|
14174
|
+
return self;
|
14169
14175
|
}
|
14170
14176
|
var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url);
|
14171
14177
|
lastBrowserUrl = url;
|
@@ -17077,10 +17083,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
17077
17083
|
var childBoundTranscludeFn = boundTranscludeFn;
|
17078
17084
|
if (scope.$$destroyed) return;
|
17079
17085
|
if (linkQueue) {
|
17080
|
-
linkQueue.push(scope
|
17081
|
-
|
17082
|
-
|
17083
|
-
|
17086
|
+
linkQueue.push(scope,
|
17087
|
+
node,
|
17088
|
+
rootElement,
|
17089
|
+
childBoundTranscludeFn);
|
17084
17090
|
} else {
|
17085
17091
|
if (afterTemplateNodeLinkFn.transcludeOnThisElement) {
|
17086
17092
|
childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn);
|
@@ -17549,10 +17555,10 @@ function $ControllerProvider() {
|
|
17549
17555
|
//
|
17550
17556
|
// This feature is not intended for use by applications, and is thus not documented
|
17551
17557
|
// publicly.
|
17552
|
-
|
17553
|
-
|
17558
|
+
// Object creation: http://jsperf.com/create-constructor/2
|
17559
|
+
var controllerPrototype = (isArray(expression) ?
|
17554
17560
|
expression[expression.length - 1] : expression).prototype;
|
17555
|
-
instance =
|
17561
|
+
instance = Object.create(controllerPrototype);
|
17556
17562
|
|
17557
17563
|
if (identifier) {
|
17558
17564
|
addIdentifier(locals, identifier, instance, constructor || expression.name);
|
@@ -17693,7 +17699,7 @@ function defaultHttpResponseTransform(data, headers) {
|
|
17693
17699
|
* @returns {Object} Parsed headers as key value object
|
17694
17700
|
*/
|
17695
17701
|
function parseHeaders(headers) {
|
17696
|
-
var parsed =
|
17702
|
+
var parsed = createMap(), key, val, i;
|
17697
17703
|
|
17698
17704
|
if (!headers) return parsed;
|
17699
17705
|
|
@@ -17730,7 +17736,11 @@ function headersGetter(headers) {
|
|
17730
17736
|
if (!headersObj) headersObj = parseHeaders(headers);
|
17731
17737
|
|
17732
17738
|
if (name) {
|
17733
|
-
|
17739
|
+
var value = headersObj[lowercase(name)];
|
17740
|
+
if (value === void 0) {
|
17741
|
+
value = null;
|
17742
|
+
}
|
17743
|
+
return value;
|
17734
17744
|
}
|
17735
17745
|
|
17736
17746
|
return headersObj;
|
@@ -17779,6 +17789,11 @@ function $HttpProvider() {
|
|
17779
17789
|
*
|
17780
17790
|
* Object containing default values for all {@link ng.$http $http} requests.
|
17781
17791
|
*
|
17792
|
+
* - **`defaults.cache`** - {Object} - an object built with {@link ng.$cacheFactory `$cacheFactory`}
|
17793
|
+
* that will provide the cache for all requests who set their `cache` property to `true`.
|
17794
|
+
* If you set the `default.cache = false` then only requests that specify their own custom
|
17795
|
+
* cache object will be cached. See {@link $http#caching $http Caching} for more information.
|
17796
|
+
*
|
17782
17797
|
* - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token.
|
17783
17798
|
* Defaults value is `'XSRF-TOKEN'`.
|
17784
17799
|
*
|
@@ -17792,6 +17807,7 @@ function $HttpProvider() {
|
|
17792
17807
|
* - **`defaults.headers.post`**
|
17793
17808
|
* - **`defaults.headers.put`**
|
17794
17809
|
* - **`defaults.headers.patch`**
|
17810
|
+
*
|
17795
17811
|
**/
|
17796
17812
|
var defaults = this.defaults = {
|
17797
17813
|
// transform incoming response data
|
@@ -18006,6 +18022,21 @@ function $HttpProvider() {
|
|
18006
18022
|
* In addition, you can supply a `headers` property in the config object passed when
|
18007
18023
|
* calling `$http(config)`, which overrides the defaults without changing them globally.
|
18008
18024
|
*
|
18025
|
+
* To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis,
|
18026
|
+
* Use the `headers` property, setting the desired header to `undefined`. For example:
|
18027
|
+
*
|
18028
|
+
* ```js
|
18029
|
+
* var req = {
|
18030
|
+
* method: 'POST',
|
18031
|
+
* url: 'http://example.com',
|
18032
|
+
* headers: {
|
18033
|
+
* 'Content-Type': undefined
|
18034
|
+
* },
|
18035
|
+
* data: { test: 'test' },
|
18036
|
+
* }
|
18037
|
+
*
|
18038
|
+
* $http(req).success(function(){...}).error(function(){...});
|
18039
|
+
* ```
|
18009
18040
|
*
|
18010
18041
|
* ## Transforming Requests and Responses
|
18011
18042
|
*
|
@@ -18385,6 +18416,10 @@ function $HttpProvider() {
|
|
18385
18416
|
};
|
18386
18417
|
var headers = mergeHeaders(requestConfig);
|
18387
18418
|
|
18419
|
+
if (!angular.isObject(requestConfig)) {
|
18420
|
+
throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig);
|
18421
|
+
}
|
18422
|
+
|
18388
18423
|
extend(config, requestConfig);
|
18389
18424
|
config.headers = headers;
|
18390
18425
|
config.method = uppercase(config.method);
|
@@ -19879,6 +19914,13 @@ var locationPrototype = {
|
|
19879
19914
|
* Return full url representation with all segments encoded according to rules specified in
|
19880
19915
|
* [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt).
|
19881
19916
|
*
|
19917
|
+
*
|
19918
|
+
* ```js
|
19919
|
+
* // given url http://example.com/#/some/path?foo=bar&baz=xoxo
|
19920
|
+
* var absUrl = $location.absUrl();
|
19921
|
+
* // => "http://example.com/#/some/path?foo=bar&baz=xoxo"
|
19922
|
+
* ```
|
19923
|
+
*
|
19882
19924
|
* @return {string} full url
|
19883
19925
|
*/
|
19884
19926
|
absUrl: locationGetter('$$absUrl'),
|
@@ -19894,6 +19936,13 @@ var locationPrototype = {
|
|
19894
19936
|
*
|
19895
19937
|
* Change path, search and hash, when called with parameter and return `$location`.
|
19896
19938
|
*
|
19939
|
+
*
|
19940
|
+
* ```js
|
19941
|
+
* // given url http://example.com/#/some/path?foo=bar&baz=xoxo
|
19942
|
+
* var url = $location.url();
|
19943
|
+
* // => "/some/path?foo=bar&baz=xoxo"
|
19944
|
+
* ```
|
19945
|
+
*
|
19897
19946
|
* @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`)
|
19898
19947
|
* @return {string} url
|
19899
19948
|
*/
|
@@ -19902,8 +19951,8 @@ var locationPrototype = {
|
|
19902
19951
|
return this.$$url;
|
19903
19952
|
|
19904
19953
|
var match = PATH_MATCH.exec(url);
|
19905
|
-
if (match[1]) this.path(decodeURIComponent(match[1]));
|
19906
|
-
if (match[2] || match[1]) this.search(match[3] || '');
|
19954
|
+
if (match[1] || url === '') this.path(decodeURIComponent(match[1]));
|
19955
|
+
if (match[2] || match[1] || url === '') this.search(match[3] || '');
|
19907
19956
|
this.hash(match[5] || '');
|
19908
19957
|
|
19909
19958
|
return this;
|
@@ -19918,6 +19967,13 @@ var locationPrototype = {
|
|
19918
19967
|
*
|
19919
19968
|
* Return protocol of current url.
|
19920
19969
|
*
|
19970
|
+
*
|
19971
|
+
* ```js
|
19972
|
+
* // given url http://example.com/#/some/path?foo=bar&baz=xoxo
|
19973
|
+
* var protocol = $location.protocol();
|
19974
|
+
* // => "http"
|
19975
|
+
* ```
|
19976
|
+
*
|
19921
19977
|
* @return {string} protocol of current url
|
19922
19978
|
*/
|
19923
19979
|
protocol: locationGetter('$$protocol'),
|
@@ -19931,6 +19987,13 @@ var locationPrototype = {
|
|
19931
19987
|
*
|
19932
19988
|
* Return host of current url.
|
19933
19989
|
*
|
19990
|
+
*
|
19991
|
+
* ```js
|
19992
|
+
* // given url http://example.com/#/some/path?foo=bar&baz=xoxo
|
19993
|
+
* var host = $location.host();
|
19994
|
+
* // => "example.com"
|
19995
|
+
* ```
|
19996
|
+
*
|
19934
19997
|
* @return {string} host of current url.
|
19935
19998
|
*/
|
19936
19999
|
host: locationGetter('$$host'),
|
@@ -19944,6 +20007,13 @@ var locationPrototype = {
|
|
19944
20007
|
*
|
19945
20008
|
* Return port of current url.
|
19946
20009
|
*
|
20010
|
+
*
|
20011
|
+
* ```js
|
20012
|
+
* // given url http://example.com/#/some/path?foo=bar&baz=xoxo
|
20013
|
+
* var port = $location.port();
|
20014
|
+
* // => 80
|
20015
|
+
* ```
|
20016
|
+
*
|
19947
20017
|
* @return {Number} port
|
19948
20018
|
*/
|
19949
20019
|
port: locationGetter('$$port'),
|
@@ -19962,6 +20032,13 @@ var locationPrototype = {
|
|
19962
20032
|
* Note: Path should always begin with forward slash (/), this method will add the forward slash
|
19963
20033
|
* if it is missing.
|
19964
20034
|
*
|
20035
|
+
*
|
20036
|
+
* ```js
|
20037
|
+
* // given url http://example.com/#/some/path?foo=bar&baz=xoxo
|
20038
|
+
* var path = $location.path();
|
20039
|
+
* // => "/some/path"
|
20040
|
+
* ```
|
20041
|
+
*
|
19965
20042
|
* @param {(string|number)=} path New path
|
19966
20043
|
* @return {string} path
|
19967
20044
|
*/
|
@@ -19987,10 +20064,9 @@ var locationPrototype = {
|
|
19987
20064
|
* var searchObject = $location.search();
|
19988
20065
|
* // => {foo: 'bar', baz: 'xoxo'}
|
19989
20066
|
*
|
19990
|
-
*
|
19991
20067
|
* // set foo to 'yipee'
|
19992
20068
|
* $location.search('foo', 'yipee');
|
19993
|
-
* // =>
|
20069
|
+
* // $location.search() => {foo: 'yipee', baz: 'xoxo'}
|
19994
20070
|
* ```
|
19995
20071
|
*
|
19996
20072
|
* @param {string|Object.<string>|Object.<Array.<string>>} search New search params - string or
|
@@ -20060,6 +20136,13 @@ var locationPrototype = {
|
|
20060
20136
|
*
|
20061
20137
|
* Change hash fragment when called with parameter and return `$location`.
|
20062
20138
|
*
|
20139
|
+
*
|
20140
|
+
* ```js
|
20141
|
+
* // given url http://example.com/some/path?foo=bar&baz=xoxo#hashValue
|
20142
|
+
* var hash = $location.hash();
|
20143
|
+
* // => "hashValue"
|
20144
|
+
* ```
|
20145
|
+
*
|
20063
20146
|
* @param {(string|number)=} hash New hash fragment
|
20064
20147
|
* @return {string} hash
|
20065
20148
|
*/
|
@@ -25791,7 +25874,7 @@ function filterFilter() {
|
|
25791
25874
|
*
|
25792
25875
|
* @param {number} amount Input to filter.
|
25793
25876
|
* @param {string=} symbol Currency symbol or identifier to be displayed.
|
25794
|
-
* @param {number=} fractionSize Number of decimal places to round the amount to
|
25877
|
+
* @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale
|
25795
25878
|
* @returns {string} Formatted number.
|
25796
25879
|
*
|
25797
25880
|
*
|
@@ -25841,8 +25924,7 @@ function currencyFilter($locale) {
|
|
25841
25924
|
}
|
25842
25925
|
|
25843
25926
|
if (isUndefined(fractionSize)) {
|
25844
|
-
|
25845
|
-
fractionSize = 2;
|
25927
|
+
fractionSize = formats.PATTERNS[1].maxFrac;
|
25846
25928
|
}
|
25847
25929
|
|
25848
25930
|
// if null or undefined pass it through
|
@@ -25994,9 +26076,9 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
|
|
25994
26076
|
}
|
25995
26077
|
}
|
25996
26078
|
|
25997
|
-
parts.push(isNegative ? pattern.negPre : pattern.posPre
|
25998
|
-
|
25999
|
-
|
26079
|
+
parts.push(isNegative ? pattern.negPre : pattern.posPre,
|
26080
|
+
formatedText,
|
26081
|
+
isNegative ? pattern.negSuf : pattern.posSuf);
|
26000
26082
|
return parts.join('');
|
26001
26083
|
}
|
26002
26084
|
|
@@ -27576,9 +27658,7 @@ var formDirectiveFactory = function(isNgForm) {
|
|
27576
27658
|
controller.$setSubmitted();
|
27577
27659
|
});
|
27578
27660
|
|
27579
|
-
event.preventDefault
|
27580
|
-
? event.preventDefault()
|
27581
|
-
: event.returnValue = false; // IE
|
27661
|
+
event.preventDefault();
|
27582
27662
|
};
|
27583
27663
|
|
27584
27664
|
addEventListenerFn(formElement[0], 'submit', handleFormSubmission);
|
@@ -27665,7 +27745,8 @@ var inputType = {
|
|
27665
27745
|
* @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
|
27666
27746
|
* minlength.
|
27667
27747
|
* @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
|
27668
|
-
* maxlength.
|
27748
|
+
* maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
|
27749
|
+
* any length.
|
27669
27750
|
* @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
|
27670
27751
|
* that contains the regular expression body that will be converted to a regular expression
|
27671
27752
|
* as in the ngPattern directive.
|
@@ -28213,7 +28294,8 @@ var inputType = {
|
|
28213
28294
|
* @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
|
28214
28295
|
* minlength.
|
28215
28296
|
* @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
|
28216
|
-
* maxlength.
|
28297
|
+
* maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
|
28298
|
+
* any length.
|
28217
28299
|
* @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
|
28218
28300
|
* that contains the regular expression body that will be converted to a regular expression
|
28219
28301
|
* as in the ngPattern directive.
|
@@ -28300,7 +28382,8 @@ var inputType = {
|
|
28300
28382
|
* @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
|
28301
28383
|
* minlength.
|
28302
28384
|
* @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
|
28303
|
-
* maxlength.
|
28385
|
+
* maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
|
28386
|
+
* any length.
|
28304
28387
|
* @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
|
28305
28388
|
* that contains the regular expression body that will be converted to a regular expression
|
28306
28389
|
* as in the ngPattern directive.
|
@@ -28388,7 +28471,8 @@ var inputType = {
|
|
28388
28471
|
* @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
|
28389
28472
|
* minlength.
|
28390
28473
|
* @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
|
28391
|
-
* maxlength.
|
28474
|
+
* maxlength. Setting the attribute to a negative or non-numeric value, allows view values of
|
28475
|
+
* any length.
|
28392
28476
|
* @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string
|
28393
28477
|
* that contains the regular expression body that will be converted to a regular expression
|
28394
28478
|
* as in the ngPattern directive.
|
@@ -28659,7 +28743,7 @@ function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
28659
28743
|
element.on('change', listener);
|
28660
28744
|
|
28661
28745
|
ctrl.$render = function() {
|
28662
|
-
element.val(ctrl.$isEmpty(ctrl.$
|
28746
|
+
element.val(ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue);
|
28663
28747
|
};
|
28664
28748
|
}
|
28665
28749
|
|
@@ -28769,10 +28853,10 @@ function createDateInputType(type, regexp, parseDate, format) {
|
|
28769
28853
|
});
|
28770
28854
|
|
28771
28855
|
ctrl.$formatters.push(function(value) {
|
28772
|
-
if (!
|
28773
|
-
|
28774
|
-
|
28775
|
-
|
28856
|
+
if (value && !isDate(value)) {
|
28857
|
+
throw $ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value);
|
28858
|
+
}
|
28859
|
+
if (isValidDate(value)) {
|
28776
28860
|
previousDate = value;
|
28777
28861
|
if (previousDate && timezone === 'UTC') {
|
28778
28862
|
var timezoneOffset = 60000 * previousDate.getTimezoneOffset();
|
@@ -28781,14 +28865,14 @@ function createDateInputType(type, regexp, parseDate, format) {
|
|
28781
28865
|
return $filter('date')(value, format, timezone);
|
28782
28866
|
} else {
|
28783
28867
|
previousDate = null;
|
28868
|
+
return '';
|
28784
28869
|
}
|
28785
|
-
return '';
|
28786
28870
|
});
|
28787
28871
|
|
28788
28872
|
if (isDefined(attr.min) || attr.ngMin) {
|
28789
28873
|
var minVal;
|
28790
28874
|
ctrl.$validators.min = function(value) {
|
28791
|
-
return
|
28875
|
+
return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal;
|
28792
28876
|
};
|
28793
28877
|
attr.$observe('min', function(val) {
|
28794
28878
|
minVal = parseObservedDateValue(val);
|
@@ -28799,18 +28883,18 @@ function createDateInputType(type, regexp, parseDate, format) {
|
|
28799
28883
|
if (isDefined(attr.max) || attr.ngMax) {
|
28800
28884
|
var maxVal;
|
28801
28885
|
ctrl.$validators.max = function(value) {
|
28802
|
-
return
|
28886
|
+
return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal;
|
28803
28887
|
};
|
28804
28888
|
attr.$observe('max', function(val) {
|
28805
28889
|
maxVal = parseObservedDateValue(val);
|
28806
28890
|
ctrl.$validate();
|
28807
28891
|
});
|
28808
28892
|
}
|
28809
|
-
|
28810
|
-
|
28893
|
+
|
28894
|
+
function isValidDate(value) {
|
28811
28895
|
// Invalid Date: getTime() returns NaN
|
28812
|
-
return
|
28813
|
-
}
|
28896
|
+
return value && !(value.getTime && value.getTime() !== value.getTime());
|
28897
|
+
}
|
28814
28898
|
|
28815
28899
|
function parseObservedDateValue(val) {
|
28816
28900
|
return isDefined(val) ? (isDate(val) ? val : parseDate(val)) : undefined;
|
@@ -28894,7 +28978,8 @@ function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
28894
28978
|
stringBasedInputType(ctrl);
|
28895
28979
|
|
28896
28980
|
ctrl.$$parserName = 'url';
|
28897
|
-
ctrl.$validators.url = function(
|
28981
|
+
ctrl.$validators.url = function(modelValue, viewValue) {
|
28982
|
+
var value = modelValue || viewValue;
|
28898
28983
|
return ctrl.$isEmpty(value) || URL_REGEXP.test(value);
|
28899
28984
|
};
|
28900
28985
|
}
|
@@ -28906,7 +28991,8 @@ function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
28906
28991
|
stringBasedInputType(ctrl);
|
28907
28992
|
|
28908
28993
|
ctrl.$$parserName = 'email';
|
28909
|
-
ctrl.$validators.email = function(
|
28994
|
+
ctrl.$validators.email = function(modelValue, viewValue) {
|
28995
|
+
var value = modelValue || viewValue;
|
28910
28996
|
return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value);
|
28911
28997
|
};
|
28912
28998
|
}
|
@@ -28960,9 +29046,11 @@ function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filt
|
|
28960
29046
|
element[0].checked = ctrl.$viewValue;
|
28961
29047
|
};
|
28962
29048
|
|
28963
|
-
// Override the standard `$isEmpty` because an empty checkbox is
|
29049
|
+
// Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false`
|
29050
|
+
// This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert
|
29051
|
+
// it to a boolean.
|
28964
29052
|
ctrl.$isEmpty = function(value) {
|
28965
|
-
return value
|
29053
|
+
return value === false;
|
28966
29054
|
};
|
28967
29055
|
|
28968
29056
|
ctrl.$formatters.push(function(value) {
|
@@ -28994,7 +29082,8 @@ function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filt
|
|
28994
29082
|
* @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
|
28995
29083
|
* minlength.
|
28996
29084
|
* @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
|
28997
|
-
* maxlength.
|
29085
|
+
* maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
|
29086
|
+
* length.
|
28998
29087
|
* @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
|
28999
29088
|
* RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
|
29000
29089
|
* patterns defined as scope expressions.
|
@@ -29026,7 +29115,8 @@ function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filt
|
|
29026
29115
|
* @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than
|
29027
29116
|
* minlength.
|
29028
29117
|
* @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than
|
29029
|
-
* maxlength.
|
29118
|
+
* maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any
|
29119
|
+
* length.
|
29030
29120
|
* @param {string=} ngPattern Sets `pattern` validation error key if the value does not match the
|
29031
29121
|
* RegExp pattern expression. Expected value is `/regexp/` for inline patterns or `regexp` for
|
29032
29122
|
* patterns defined as scope expressions.
|
@@ -29242,13 +29332,18 @@ is set to `true`. The parse error is stored in `ngModel.$error.parse`.
|
|
29242
29332
|
*
|
29243
29333
|
* @description
|
29244
29334
|
*
|
29245
|
-
* `NgModelController` provides API for the `
|
29246
|
-
* services for data-binding, validation, CSS updates, and value formatting
|
29247
|
-
* purposefully does not contain any logic which deals with DOM rendering or
|
29248
|
-
* DOM events.
|
29249
|
-
*
|
29335
|
+
* `NgModelController` provides API for the {@link ngModel `ngModel`} directive.
|
29336
|
+
* The controller contains services for data-binding, validation, CSS updates, and value formatting
|
29337
|
+
* and parsing. It purposefully does not contain any logic which deals with DOM rendering or
|
29338
|
+
* listening to DOM events.
|
29339
|
+
* Such DOM related logic should be provided by other directives which make use of
|
29340
|
+
* `NgModelController` for data-binding to control elements.
|
29341
|
+
* Angular provides this DOM logic for most {@link input `input`} elements.
|
29342
|
+
* At the end of this page you can find a {@link ngModel.NgModelController#custom-control-example
|
29343
|
+
* custom control example} that uses `ngModelController` to bind to `contenteditable` elements.
|
29250
29344
|
*
|
29251
|
-
*
|
29345
|
+
* @example
|
29346
|
+
* ### Custom Control Example
|
29252
29347
|
* This example shows how to use `NgModelController` with a custom control to achieve
|
29253
29348
|
* data-binding. Notice how different directives (`contenteditable`, `ng-model`, and `required`)
|
29254
29349
|
* collaborate together to achieve the desired result.
|
@@ -29345,6 +29440,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29345
29440
|
function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q, $interpolate) {
|
29346
29441
|
this.$viewValue = Number.NaN;
|
29347
29442
|
this.$modelValue = Number.NaN;
|
29443
|
+
this.$$rawModelValue = undefined; // stores the parsed modelValue / model set from scope regardless of validity.
|
29348
29444
|
this.$validators = {};
|
29349
29445
|
this.$asyncValidators = {};
|
29350
29446
|
this.$parsers = [];
|
@@ -29363,32 +29459,33 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29363
29459
|
|
29364
29460
|
|
29365
29461
|
var parsedNgModel = $parse($attr.ngModel),
|
29462
|
+
parsedNgModelAssign = parsedNgModel.assign,
|
29463
|
+
ngModelGet = parsedNgModel,
|
29464
|
+
ngModelSet = parsedNgModelAssign,
|
29366
29465
|
pendingDebounce = null,
|
29367
29466
|
ctrl = this;
|
29368
29467
|
|
29369
|
-
var ngModelGet = function ngModelGet() {
|
29370
|
-
var modelValue = parsedNgModel($scope);
|
29371
|
-
if (ctrl.$options && ctrl.$options.getterSetter && isFunction(modelValue)) {
|
29372
|
-
modelValue = modelValue();
|
29373
|
-
}
|
29374
|
-
return modelValue;
|
29375
|
-
};
|
29376
|
-
|
29377
|
-
var ngModelSet = function ngModelSet(newValue) {
|
29378
|
-
var getterSetter;
|
29379
|
-
if (ctrl.$options && ctrl.$options.getterSetter &&
|
29380
|
-
isFunction(getterSetter = parsedNgModel($scope))) {
|
29381
|
-
|
29382
|
-
getterSetter(ctrl.$modelValue);
|
29383
|
-
} else {
|
29384
|
-
parsedNgModel.assign($scope, ctrl.$modelValue);
|
29385
|
-
}
|
29386
|
-
};
|
29387
|
-
|
29388
29468
|
this.$$setOptions = function(options) {
|
29389
29469
|
ctrl.$options = options;
|
29390
|
-
|
29391
|
-
|
29470
|
+
if (options && options.getterSetter) {
|
29471
|
+
var invokeModelGetter = $parse($attr.ngModel + '()'),
|
29472
|
+
invokeModelSetter = $parse($attr.ngModel + '($$$p)');
|
29473
|
+
|
29474
|
+
ngModelGet = function($scope) {
|
29475
|
+
var modelValue = parsedNgModel($scope);
|
29476
|
+
if (isFunction(modelValue)) {
|
29477
|
+
modelValue = invokeModelGetter($scope);
|
29478
|
+
}
|
29479
|
+
return modelValue;
|
29480
|
+
};
|
29481
|
+
ngModelSet = function($scope, newValue) {
|
29482
|
+
if (isFunction(parsedNgModel($scope))) {
|
29483
|
+
invokeModelSetter($scope, {$$$p: ctrl.$modelValue});
|
29484
|
+
} else {
|
29485
|
+
parsedNgModelAssign($scope, ctrl.$modelValue);
|
29486
|
+
}
|
29487
|
+
};
|
29488
|
+
} else if (!parsedNgModel.assign) {
|
29392
29489
|
throw $ngModelMinErr('nonassign', "Expression '{0}' is non-assignable. Element: {1}",
|
29393
29490
|
$attr.ngModel, startingTag($element));
|
29394
29491
|
}
|
@@ -29421,17 +29518,18 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29421
29518
|
* @name ngModel.NgModelController#$isEmpty
|
29422
29519
|
*
|
29423
29520
|
* @description
|
29424
|
-
* This is called when we need to determine if the value of
|
29521
|
+
* This is called when we need to determine if the value of an input is empty.
|
29425
29522
|
*
|
29426
29523
|
* For instance, the required directive does this to work out if the input has data or not.
|
29524
|
+
*
|
29427
29525
|
* The default `$isEmpty` function checks whether the value is `undefined`, `''`, `null` or `NaN`.
|
29428
29526
|
*
|
29429
29527
|
* You can override this for input directives whose concept of being empty is different to the
|
29430
29528
|
* default. The `checkboxInputType` directive does this because in its case a value of `false`
|
29431
29529
|
* implies empty.
|
29432
29530
|
*
|
29433
|
-
* @param {*} value
|
29434
|
-
* @returns {boolean} True if `value` is empty.
|
29531
|
+
* @param {*} value The value of the input to check for emptiness.
|
29532
|
+
* @returns {boolean} True if `value` is "empty".
|
29435
29533
|
*/
|
29436
29534
|
this.$isEmpty = function(value) {
|
29437
29535
|
return isUndefined(value) || value === '' || value === null || value !== value;
|
@@ -29482,9 +29580,9 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29482
29580
|
* @description
|
29483
29581
|
* Sets the control to its pristine state.
|
29484
29582
|
*
|
29485
|
-
* This method can be called to remove the
|
29486
|
-
* state (ng-pristine class). A model is considered to be pristine when the
|
29487
|
-
* from when first compiled
|
29583
|
+
* This method can be called to remove the `ng-dirty` class and set the control to its pristine
|
29584
|
+
* state (`ng-pristine` class). A model is considered to be pristine when the control
|
29585
|
+
* has not been changed from when first compiled.
|
29488
29586
|
*/
|
29489
29587
|
this.$setPristine = function() {
|
29490
29588
|
ctrl.$dirty = false;
|
@@ -29493,6 +29591,25 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29493
29591
|
$animate.addClass($element, PRISTINE_CLASS);
|
29494
29592
|
};
|
29495
29593
|
|
29594
|
+
/**
|
29595
|
+
* @ngdoc method
|
29596
|
+
* @name ngModel.NgModelController#$setDirty
|
29597
|
+
*
|
29598
|
+
* @description
|
29599
|
+
* Sets the control to its dirty state.
|
29600
|
+
*
|
29601
|
+
* This method can be called to remove the `ng-pristine` class and set the control to its dirty
|
29602
|
+
* state (`ng-dirty` class). A model is considered to be dirty when the control has been changed
|
29603
|
+
* from when first compiled.
|
29604
|
+
*/
|
29605
|
+
this.$setDirty = function() {
|
29606
|
+
ctrl.$dirty = true;
|
29607
|
+
ctrl.$pristine = false;
|
29608
|
+
$animate.removeClass($element, PRISTINE_CLASS);
|
29609
|
+
$animate.addClass($element, DIRTY_CLASS);
|
29610
|
+
parentForm.$setDirty();
|
29611
|
+
};
|
29612
|
+
|
29496
29613
|
/**
|
29497
29614
|
* @ngdoc method
|
29498
29615
|
* @name ngModel.NgModelController#$setUntouched
|
@@ -29500,8 +29617,8 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29500
29617
|
* @description
|
29501
29618
|
* Sets the control to its untouched state.
|
29502
29619
|
*
|
29503
|
-
* This method can be called to remove the
|
29504
|
-
* untouched state (ng-untouched class). Upon compilation, a model is set as untouched
|
29620
|
+
* This method can be called to remove the `ng-touched` class and set the control to its
|
29621
|
+
* untouched state (`ng-untouched` class). Upon compilation, a model is set as untouched
|
29505
29622
|
* by default, however this function can be used to restore that state if the model has
|
29506
29623
|
* already been touched by the user.
|
29507
29624
|
*/
|
@@ -29518,10 +29635,9 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29518
29635
|
* @description
|
29519
29636
|
* Sets the control to its touched state.
|
29520
29637
|
*
|
29521
|
-
* This method can be called to remove the
|
29522
|
-
* touched state (ng-touched class). A model is considered to be touched when the user has
|
29523
|
-
* first
|
29524
|
-
* from the input element.
|
29638
|
+
* This method can be called to remove the `ng-untouched` class and set the control to its
|
29639
|
+
* touched state (`ng-touched` class). A model is considered to be touched when the user has
|
29640
|
+
* first focused the control element and then shifted focus away from the control (blur event).
|
29525
29641
|
*/
|
29526
29642
|
this.$setTouched = function() {
|
29527
29643
|
ctrl.$touched = true;
|
@@ -29599,14 +29715,51 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29599
29715
|
* @name ngModel.NgModelController#$validate
|
29600
29716
|
*
|
29601
29717
|
* @description
|
29602
|
-
* Runs each of the registered validators (first synchronous validators and then
|
29718
|
+
* Runs each of the registered validators (first synchronous validators and then
|
29719
|
+
* asynchronous validators).
|
29720
|
+
* If the validity changes to invalid, the model will be set to `undefined`,
|
29721
|
+
* unless {@link ngModelOptions `ngModelOptions.allowInvalid`} is `true`.
|
29722
|
+
* If the validity changes to valid, it will set the model to the last available valid
|
29723
|
+
* modelValue, i.e. either the last parsed value or the last value set from the scope.
|
29603
29724
|
*/
|
29604
29725
|
this.$validate = function() {
|
29605
29726
|
// ignore $validate before model is initialized
|
29606
29727
|
if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
|
29607
29728
|
return;
|
29608
29729
|
}
|
29609
|
-
|
29730
|
+
|
29731
|
+
var viewValue = ctrl.$$lastCommittedViewValue;
|
29732
|
+
// Note: we use the $$rawModelValue as $modelValue might have been
|
29733
|
+
// set to undefined during a view -> model update that found validation
|
29734
|
+
// errors. We can't parse the view here, since that could change
|
29735
|
+
// the model although neither viewValue nor the model on the scope changed
|
29736
|
+
var modelValue = ctrl.$$rawModelValue;
|
29737
|
+
|
29738
|
+
// Check if the there's a parse error, so we don't unset it accidentially
|
29739
|
+
var parserName = ctrl.$$parserName || 'parse';
|
29740
|
+
var parserValid = ctrl.$error[parserName] ? false : undefined;
|
29741
|
+
|
29742
|
+
var prevValid = ctrl.$valid;
|
29743
|
+
var prevModelValue = ctrl.$modelValue;
|
29744
|
+
|
29745
|
+
var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
|
29746
|
+
|
29747
|
+
ctrl.$$runValidators(parserValid, modelValue, viewValue, function(allValid) {
|
29748
|
+
// If there was no change in validity, don't update the model
|
29749
|
+
// This prevents changing an invalid modelValue to undefined
|
29750
|
+
if (!allowInvalid && prevValid !== allValid) {
|
29751
|
+
// Note: Don't check ctrl.$valid here, as we could have
|
29752
|
+
// external validators (e.g. calculated on the server),
|
29753
|
+
// that just call $setValidity and need the model value
|
29754
|
+
// to calculate their validity.
|
29755
|
+
ctrl.$modelValue = allValid ? modelValue : undefined;
|
29756
|
+
|
29757
|
+
if (ctrl.$modelValue !== prevModelValue) {
|
29758
|
+
ctrl.$$writeModelToScope();
|
29759
|
+
}
|
29760
|
+
}
|
29761
|
+
});
|
29762
|
+
|
29610
29763
|
};
|
29611
29764
|
|
29612
29765
|
this.$$runValidators = function(parseValid, modelValue, viewValue, doneCallback) {
|
@@ -29725,11 +29878,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29725
29878
|
|
29726
29879
|
// change to dirty
|
29727
29880
|
if (ctrl.$pristine) {
|
29728
|
-
|
29729
|
-
ctrl.$pristine = false;
|
29730
|
-
$animate.removeClass($element, PRISTINE_CLASS);
|
29731
|
-
$animate.addClass($element, DIRTY_CLASS);
|
29732
|
-
parentForm.$setDirty();
|
29881
|
+
this.$setDirty();
|
29733
29882
|
}
|
29734
29883
|
this.$$parseAndValidate();
|
29735
29884
|
};
|
@@ -29750,10 +29899,11 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29750
29899
|
}
|
29751
29900
|
if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) {
|
29752
29901
|
// ctrl.$modelValue has not been touched yet...
|
29753
|
-
ctrl.$modelValue = ngModelGet();
|
29902
|
+
ctrl.$modelValue = ngModelGet($scope);
|
29754
29903
|
}
|
29755
29904
|
var prevModelValue = ctrl.$modelValue;
|
29756
29905
|
var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
|
29906
|
+
ctrl.$$rawModelValue = modelValue;
|
29757
29907
|
if (allowInvalid) {
|
29758
29908
|
ctrl.$modelValue = modelValue;
|
29759
29909
|
writeToModelIfNeeded();
|
@@ -29777,7 +29927,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29777
29927
|
};
|
29778
29928
|
|
29779
29929
|
this.$$writeModelToScope = function() {
|
29780
|
-
ngModelSet(ctrl.$modelValue);
|
29930
|
+
ngModelSet($scope, ctrl.$modelValue);
|
29781
29931
|
forEach(ctrl.$viewChangeListeners, function(listener) {
|
29782
29932
|
try {
|
29783
29933
|
listener();
|
@@ -29873,12 +30023,12 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
29873
30023
|
// ng-change executes in apply phase
|
29874
30024
|
// 4. view should be changed back to 'a'
|
29875
30025
|
$scope.$watch(function ngModelWatch() {
|
29876
|
-
var modelValue = ngModelGet();
|
30026
|
+
var modelValue = ngModelGet($scope);
|
29877
30027
|
|
29878
30028
|
// if scope model value and ngModel value are out of sync
|
29879
30029
|
// TODO(perf): why not move this to the action fn?
|
29880
30030
|
if (modelValue !== ctrl.$modelValue) {
|
29881
|
-
ctrl.$modelValue = modelValue;
|
30031
|
+
ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
|
29882
30032
|
|
29883
30033
|
var formatters = ctrl.$formatters,
|
29884
30034
|
idx = formatters.length;
|
@@ -30063,7 +30213,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
30063
30213
|
</file>
|
30064
30214
|
* </example>
|
30065
30215
|
*/
|
30066
|
-
var ngModelDirective = function() {
|
30216
|
+
var ngModelDirective = ['$rootScope', function($rootScope) {
|
30067
30217
|
return {
|
30068
30218
|
restrict: 'A',
|
30069
30219
|
require: ['ngModel', '^?form', '^?ngModelOptions'],
|
@@ -30107,15 +30257,17 @@ var ngModelDirective = function() {
|
|
30107
30257
|
element.on('blur', function(ev) {
|
30108
30258
|
if (modelCtrl.$touched) return;
|
30109
30259
|
|
30110
|
-
|
30111
|
-
modelCtrl.$setTouched
|
30112
|
-
}
|
30260
|
+
if ($rootScope.$$phase) {
|
30261
|
+
scope.$evalAsync(modelCtrl.$setTouched);
|
30262
|
+
} else {
|
30263
|
+
scope.$apply(modelCtrl.$setTouched);
|
30264
|
+
}
|
30113
30265
|
});
|
30114
30266
|
}
|
30115
30267
|
};
|
30116
30268
|
}
|
30117
30269
|
};
|
30118
|
-
};
|
30270
|
+
}];
|
30119
30271
|
|
30120
30272
|
|
30121
30273
|
/**
|
@@ -30204,8 +30356,8 @@ var requiredDirective = function() {
|
|
30204
30356
|
if (!ctrl) return;
|
30205
30357
|
attr.required = true; // force truthy in case we are on non input element
|
30206
30358
|
|
30207
|
-
ctrl.$validators.required = function(
|
30208
|
-
return !attr.required || !ctrl.$isEmpty(
|
30359
|
+
ctrl.$validators.required = function(modelValue, viewValue) {
|
30360
|
+
return !attr.required || !ctrl.$isEmpty(viewValue);
|
30209
30361
|
};
|
30210
30362
|
|
30211
30363
|
attr.$observe('required', function() {
|
@@ -30254,13 +30406,14 @@ var maxlengthDirective = function() {
|
|
30254
30406
|
link: function(scope, elm, attr, ctrl) {
|
30255
30407
|
if (!ctrl) return;
|
30256
30408
|
|
30257
|
-
var maxlength =
|
30409
|
+
var maxlength = -1;
|
30258
30410
|
attr.$observe('maxlength', function(value) {
|
30259
|
-
|
30411
|
+
var intVal = int(value);
|
30412
|
+
maxlength = isNaN(intVal) ? -1 : intVal;
|
30260
30413
|
ctrl.$validate();
|
30261
30414
|
});
|
30262
30415
|
ctrl.$validators.maxlength = function(modelValue, viewValue) {
|
30263
|
-
return ctrl.$isEmpty(modelValue) || viewValue.length <= maxlength;
|
30416
|
+
return (maxlength < 0) || ctrl.$isEmpty(modelValue) || (viewValue.length <= maxlength);
|
30264
30417
|
};
|
30265
30418
|
}
|
30266
30419
|
};
|
@@ -30279,7 +30432,7 @@ var minlengthDirective = function() {
|
|
30279
30432
|
ctrl.$validate();
|
30280
30433
|
});
|
30281
30434
|
ctrl.$validators.minlength = function(modelValue, viewValue) {
|
30282
|
-
return ctrl.$isEmpty(
|
30435
|
+
return ctrl.$isEmpty(viewValue) || viewValue.length >= minlength;
|
30283
30436
|
};
|
30284
30437
|
}
|
30285
30438
|
};
|
@@ -30907,12 +31060,11 @@ var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate
|
|
30907
31060
|
* @name ngBindHtml
|
30908
31061
|
*
|
30909
31062
|
* @description
|
30910
|
-
*
|
30911
|
-
*
|
30912
|
-
*
|
30913
|
-
*
|
30914
|
-
*
|
30915
|
-
* include "angular-sanitize.js" in your application.
|
31063
|
+
* Evaluates the expression and inserts the resulting HTML into the element in a secure way. By default,
|
31064
|
+
* the resulting HTML content will be sanitized using the {@link ngSanitize.$sanitize $sanitize} service.
|
31065
|
+
* To utilize this functionality, ensure that `$sanitize` is available, for example, by including {@link
|
31066
|
+
* ngSanitize} in your module's dependencies (not in core Angular). In order to use {@link ngSanitize}
|
31067
|
+
* in your module's dependencies, you need to include "angular-sanitize.js" in your application.
|
30916
31068
|
*
|
30917
31069
|
* You may also bypass sanitization for values you know are safe. To do so, bind to
|
30918
31070
|
* an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example
|
@@ -32976,7 +33128,9 @@ var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
|
|
32976
33128
|
</example>
|
32977
33129
|
*/
|
32978
33130
|
var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interpolate) {
|
32979
|
-
var BRACE = /{}/g
|
33131
|
+
var BRACE = /{}/g,
|
33132
|
+
IS_WHEN = /^when(Minus)?(.+)$/;
|
33133
|
+
|
32980
33134
|
return {
|
32981
33135
|
restrict: 'EA',
|
32982
33136
|
link: function(scope, element, attr) {
|
@@ -32987,34 +33141,44 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
|
|
32987
33141
|
whensExpFns = {},
|
32988
33142
|
startSymbol = $interpolate.startSymbol(),
|
32989
33143
|
endSymbol = $interpolate.endSymbol(),
|
32990
|
-
|
33144
|
+
braceReplacement = startSymbol + numberExp + '-' + offset + endSymbol,
|
33145
|
+
watchRemover = angular.noop,
|
33146
|
+
lastCount;
|
32991
33147
|
|
32992
33148
|
forEach(attr, function(expression, attributeName) {
|
32993
|
-
|
32994
|
-
|
32995
|
-
|
33149
|
+
var tmpMatch = IS_WHEN.exec(attributeName);
|
33150
|
+
if (tmpMatch) {
|
33151
|
+
var whenKey = (tmpMatch[1] ? '-' : '') + lowercase(tmpMatch[2]);
|
33152
|
+
whens[whenKey] = element.attr(attr.$attr[attributeName]);
|
32996
33153
|
}
|
32997
33154
|
});
|
32998
33155
|
forEach(whens, function(expression, key) {
|
32999
|
-
whensExpFns[key] =
|
33000
|
-
|
33001
|
-
offset + endSymbol));
|
33156
|
+
whensExpFns[key] = $interpolate(expression.replace(BRACE, braceReplacement));
|
33157
|
+
|
33002
33158
|
});
|
33003
33159
|
|
33004
|
-
scope.$watch(function
|
33005
|
-
var
|
33160
|
+
scope.$watch(numberExp, function ngPluralizeWatchAction(newVal) {
|
33161
|
+
var count = parseFloat(newVal);
|
33162
|
+
var countIsNaN = isNaN(count);
|
33006
33163
|
|
33007
|
-
if (!
|
33008
|
-
//
|
33009
|
-
//check it against pluralization rules in $locale service
|
33010
|
-
|
33011
|
-
|
33012
|
-
|
33013
|
-
|
33164
|
+
if (!countIsNaN && !(count in whens)) {
|
33165
|
+
// If an explicit number rule such as 1, 2, 3... is defined, just use it.
|
33166
|
+
// Otherwise, check it against pluralization rules in $locale service.
|
33167
|
+
count = $locale.pluralCat(count - offset);
|
33168
|
+
}
|
33169
|
+
|
33170
|
+
// If both `count` and `lastCount` are NaN, we don't need to re-register a watch.
|
33171
|
+
// In JS `NaN !== NaN`, so we have to exlicitly check.
|
33172
|
+
if ((count !== lastCount) && !(countIsNaN && isNaN(lastCount))) {
|
33173
|
+
watchRemover();
|
33174
|
+
watchRemover = scope.$watch(whensExpFns[count], updateElementText);
|
33175
|
+
lastCount = count;
|
33014
33176
|
}
|
33015
|
-
}, function ngPluralizeWatchAction(newVal) {
|
33016
|
-
element.text(newVal);
|
33017
33177
|
});
|
33178
|
+
|
33179
|
+
function updateElementText(newText) {
|
33180
|
+
element.text(newText || '');
|
33181
|
+
}
|
33018
33182
|
}
|
33019
33183
|
};
|
33020
33184
|
}];
|
@@ -33496,17 +33660,17 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
|
|
33496
33660
|
*
|
33497
33661
|
* ### Overriding `.ng-hide`
|
33498
33662
|
*
|
33499
|
-
* By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change
|
33663
|
+
* By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
|
33500
33664
|
* the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
|
33501
33665
|
* class in CSS:
|
33502
33666
|
*
|
33503
33667
|
* ```css
|
33504
33668
|
* .ng-hide {
|
33505
33669
|
* /* this is just another form of hiding an element */
|
33506
|
-
* display:block!important;
|
33507
|
-
* position:absolute;
|
33508
|
-
* top
|
33509
|
-
* left
|
33670
|
+
* display: block!important;
|
33671
|
+
* position: absolute;
|
33672
|
+
* top: -9999px;
|
33673
|
+
* left: -9999px;
|
33510
33674
|
* }
|
33511
33675
|
* ```
|
33512
33676
|
*
|
@@ -33526,13 +33690,13 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
|
|
33526
33690
|
* .my-element.ng-hide-add, .my-element.ng-hide-remove {
|
33527
33691
|
* /* this is required as of 1.3x to properly
|
33528
33692
|
* apply all styling in a show/hide animation */
|
33529
|
-
* transition:0s linear all;
|
33693
|
+
* transition: 0s linear all;
|
33530
33694
|
* }
|
33531
33695
|
*
|
33532
33696
|
* .my-element.ng-hide-add-active,
|
33533
33697
|
* .my-element.ng-hide-remove-active {
|
33534
33698
|
* /* the transition is defined in the active class */
|
33535
|
-
* transition:1s linear all;
|
33699
|
+
* transition: 1s linear all;
|
33536
33700
|
* }
|
33537
33701
|
*
|
33538
33702
|
* .my-element.ng-hide-add { ... }
|
@@ -33574,29 +33738,29 @@ var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate';
|
|
33574
33738
|
</file>
|
33575
33739
|
<file name="animations.css">
|
33576
33740
|
.animate-show {
|
33577
|
-
line-height:20px;
|
33578
|
-
opacity:1;
|
33579
|
-
padding:10px;
|
33580
|
-
border:1px solid black;
|
33581
|
-
background:white;
|
33741
|
+
line-height: 20px;
|
33742
|
+
opacity: 1;
|
33743
|
+
padding: 10px;
|
33744
|
+
border: 1px solid black;
|
33745
|
+
background: white;
|
33582
33746
|
}
|
33583
33747
|
|
33584
33748
|
.animate-show.ng-hide-add.ng-hide-add-active,
|
33585
33749
|
.animate-show.ng-hide-remove.ng-hide-remove-active {
|
33586
|
-
-webkit-transition:all linear 0.5s;
|
33587
|
-
transition:all linear 0.5s;
|
33750
|
+
-webkit-transition: all linear 0.5s;
|
33751
|
+
transition: all linear 0.5s;
|
33588
33752
|
}
|
33589
33753
|
|
33590
33754
|
.animate-show.ng-hide {
|
33591
|
-
line-height:0;
|
33592
|
-
opacity:0;
|
33593
|
-
padding:0 10px;
|
33755
|
+
line-height: 0;
|
33756
|
+
opacity: 0;
|
33757
|
+
padding: 0 10px;
|
33594
33758
|
}
|
33595
33759
|
|
33596
33760
|
.check-element {
|
33597
|
-
padding:10px;
|
33598
|
-
border:1px solid black;
|
33599
|
-
background:white;
|
33761
|
+
padding: 10px;
|
33762
|
+
border: 1px solid black;
|
33763
|
+
background: white;
|
33600
33764
|
}
|
33601
33765
|
</file>
|
33602
33766
|
<file name="protractor.js" type="protractor">
|
@@ -33670,17 +33834,17 @@ var ngShowDirective = ['$animate', function($animate) {
|
|
33670
33834
|
*
|
33671
33835
|
* ### Overriding `.ng-hide`
|
33672
33836
|
*
|
33673
|
-
* By default, the `.ng-hide` class will style the element with `display:none!important`. If you wish to change
|
33837
|
+
* By default, the `.ng-hide` class will style the element with `display: none!important`. If you wish to change
|
33674
33838
|
* the hide behavior with ngShow/ngHide then this can be achieved by restating the styles for the `.ng-hide`
|
33675
33839
|
* class in CSS:
|
33676
33840
|
*
|
33677
33841
|
* ```css
|
33678
33842
|
* .ng-hide {
|
33679
33843
|
* /* this is just another form of hiding an element */
|
33680
|
-
* display:block!important;
|
33681
|
-
* position:absolute;
|
33682
|
-
* top
|
33683
|
-
* left
|
33844
|
+
* display: block!important;
|
33845
|
+
* position: absolute;
|
33846
|
+
* top: -9999px;
|
33847
|
+
* left: -9999px;
|
33684
33848
|
* }
|
33685
33849
|
* ```
|
33686
33850
|
*
|
@@ -33697,7 +33861,7 @@ var ngShowDirective = ['$animate', function($animate) {
|
|
33697
33861
|
* //a working example can be found at the bottom of this page
|
33698
33862
|
* //
|
33699
33863
|
* .my-element.ng-hide-add, .my-element.ng-hide-remove {
|
33700
|
-
* transition:0.5s linear all;
|
33864
|
+
* transition: 0.5s linear all;
|
33701
33865
|
* }
|
33702
33866
|
*
|
33703
33867
|
* .my-element.ng-hide-add { ... }
|
@@ -33739,25 +33903,25 @@ var ngShowDirective = ['$animate', function($animate) {
|
|
33739
33903
|
</file>
|
33740
33904
|
<file name="animations.css">
|
33741
33905
|
.animate-hide {
|
33742
|
-
-webkit-transition:all linear 0.5s;
|
33743
|
-
transition:all linear 0.5s;
|
33744
|
-
line-height:20px;
|
33745
|
-
opacity:1;
|
33746
|
-
padding:10px;
|
33747
|
-
border:1px solid black;
|
33748
|
-
background:white;
|
33906
|
+
-webkit-transition: all linear 0.5s;
|
33907
|
+
transition: all linear 0.5s;
|
33908
|
+
line-height: 20px;
|
33909
|
+
opacity: 1;
|
33910
|
+
padding: 10px;
|
33911
|
+
border: 1px solid black;
|
33912
|
+
background: white;
|
33749
33913
|
}
|
33750
33914
|
|
33751
33915
|
.animate-hide.ng-hide {
|
33752
|
-
line-height:0;
|
33753
|
-
opacity:0;
|
33754
|
-
padding:0 10px;
|
33916
|
+
line-height: 0;
|
33917
|
+
opacity: 0;
|
33918
|
+
padding: 0 10px;
|
33755
33919
|
}
|
33756
33920
|
|
33757
33921
|
.check-element {
|
33758
|
-
padding:10px;
|
33759
|
-
border:1px solid black;
|
33760
|
-
background:white;
|
33922
|
+
padding: 10px;
|
33923
|
+
border: 1px solid black;
|
33924
|
+
background: white;
|
33761
33925
|
}
|
33762
33926
|
</file>
|
33763
33927
|
<file name="protractor.js" type="protractor">
|