angularjs-rails 1.3.3 → 1.3.4
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 +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">
|