angularjs-rails 1.2.12.1 → 1.2.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +331 -228
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +2 -2
- data/vendor/assets/javascripts/angular-mocks.js +3 -2
- data/vendor/assets/javascripts/angular-resource.js +1 -1
- data/vendor/assets/javascripts/angular-route.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +115 -39
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +115 -39
- metadata +2 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.13
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -69,7 +69,7 @@ function minErr(module) {
|
|
69
69
|
return match;
|
70
70
|
});
|
71
71
|
|
72
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
72
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.13/' +
|
73
73
|
(module ? module + '/' : '') + code;
|
74
74
|
for (i = 2; i < arguments.length; i++) {
|
75
75
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.13
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -789,7 +789,8 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
|
|
789
789
|
}
|
790
790
|
};
|
791
791
|
|
792
|
-
angular.forEach(
|
792
|
+
angular.forEach(
|
793
|
+
['enter','leave','move','addClass','removeClass','setClass'], function(method) {
|
793
794
|
animate[method] = function() {
|
794
795
|
animate.queue.push({
|
795
796
|
event : method,
|
@@ -9790,7 +9790,7 @@ if ( typeof module === "object" && module && typeof module.exports === "object"
|
|
9790
9790
|
})( window );
|
9791
9791
|
|
9792
9792
|
/**
|
9793
|
-
* @license AngularJS v1.2.
|
9793
|
+
* @license AngularJS v1.2.13
|
9794
9794
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
9795
9795
|
* License: MIT
|
9796
9796
|
*/
|
@@ -9860,7 +9860,7 @@ function minErr(module) {
|
|
9860
9860
|
return match;
|
9861
9861
|
});
|
9862
9862
|
|
9863
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
9863
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.13/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -9952,6 +9952,7 @@ function minErr(module) {
|
|
9952
9952
|
-assertNotHasOwnProperty,
|
9953
9953
|
-getter,
|
9954
9954
|
-getBlockElements,
|
9955
|
+
-hasOwnProperty,
|
9955
9956
|
|
9956
9957
|
*/
|
9957
9958
|
|
@@ -9967,7 +9968,7 @@ function minErr(module) {
|
|
9967
9968
|
* @returns {string} Lowercased string.
|
9968
9969
|
*/
|
9969
9970
|
var lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};
|
9970
|
-
|
9971
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
9971
9972
|
|
9972
9973
|
/**
|
9973
9974
|
* @ngdoc function
|
@@ -11002,6 +11003,7 @@ function encodeUriQuery(val, pctEncodeSpaces) {
|
|
11002
11003
|
<file name="index.html">
|
11003
11004
|
<div ng-controller="ngAppDemoController">
|
11004
11005
|
I can add: {{a}} + {{b}} = {{ a+b }}
|
11006
|
+
</div>
|
11005
11007
|
</file>
|
11006
11008
|
<file name="script.js">
|
11007
11009
|
angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
|
@@ -11626,11 +11628,11 @@ function setupModuleLoader(window) {
|
|
11626
11628
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11627
11629
|
*/
|
11628
11630
|
var version = {
|
11629
|
-
full: '1.2.
|
11631
|
+
full: '1.2.13', // all of these placeholder strings will be replaced by grunt's
|
11630
11632
|
major: 1, // package task
|
11631
11633
|
minor: 2,
|
11632
|
-
dot:
|
11633
|
-
codeName: '
|
11634
|
+
dot: 13,
|
11635
|
+
codeName: 'romantic-transclusion'
|
11634
11636
|
};
|
11635
11637
|
|
11636
11638
|
|
@@ -11792,7 +11794,7 @@ function publishExternalAPI(angular){
|
|
11792
11794
|
* - [`after()`](http://api.jquery.com/after/)
|
11793
11795
|
* - [`append()`](http://api.jquery.com/append/)
|
11794
11796
|
* - [`attr()`](http://api.jquery.com/attr/)
|
11795
|
-
* - [`bind()`](http://api.jquery.com/
|
11797
|
+
* - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
|
11796
11798
|
* - [`children()`](http://api.jquery.com/children/) - Does not support selectors
|
11797
11799
|
* - [`clone()`](http://api.jquery.com/clone/)
|
11798
11800
|
* - [`contents()`](http://api.jquery.com/contents/)
|
@@ -11819,7 +11821,7 @@ function publishExternalAPI(angular){
|
|
11819
11821
|
* - [`text()`](http://api.jquery.com/text/)
|
11820
11822
|
* - [`toggleClass()`](http://api.jquery.com/toggleClass/)
|
11821
11823
|
* - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
|
11822
|
-
* - [`unbind()`](http://api.jquery.com/
|
11824
|
+
* - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
|
11823
11825
|
* - [`val()`](http://api.jquery.com/val/)
|
11824
11826
|
* - [`wrap()`](http://api.jquery.com/wrap/)
|
11825
11827
|
*
|
@@ -11859,6 +11861,14 @@ var jqCache = JQLite.cache = {},
|
|
11859
11861
|
? function(element, type, fn) {element.removeEventListener(type, fn, false); }
|
11860
11862
|
: function(element, type, fn) {element.detachEvent('on' + type, fn); });
|
11861
11863
|
|
11864
|
+
/*
|
11865
|
+
* !!! This is an undocumented "private" function !!!
|
11866
|
+
*/
|
11867
|
+
var jqData = JQLite._data = function(node) {
|
11868
|
+
//jQuery always returns an object on cache miss
|
11869
|
+
return this.cache[node[this.expando]] || {};
|
11870
|
+
};
|
11871
|
+
|
11862
11872
|
function jqNextId() { return ++jqId; }
|
11863
11873
|
|
11864
11874
|
|
@@ -13849,6 +13859,29 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|
13849
13859
|
done && $timeout(done, 0, false);
|
13850
13860
|
},
|
13851
13861
|
|
13862
|
+
/**
|
13863
|
+
*
|
13864
|
+
* @ngdoc function
|
13865
|
+
* @name ng.$animate#setClass
|
13866
|
+
* @methodOf ng.$animate
|
13867
|
+
* @function
|
13868
|
+
* @description Adds and/or removes the given CSS classes to and from the element.
|
13869
|
+
* Once complete, the done() callback will be fired (if provided).
|
13870
|
+
* @param {jQuery/jqLite element} element the element which will it's CSS classes changed
|
13871
|
+
* removed from it
|
13872
|
+
* @param {string} add the CSS classes which will be added to the element
|
13873
|
+
* @param {string} remove the CSS class which will be removed from the element
|
13874
|
+
* @param {function=} done the callback function (if provided) that will be fired after the
|
13875
|
+
* CSS classes have been set on the element
|
13876
|
+
*/
|
13877
|
+
setClass : function(element, add, remove, done) {
|
13878
|
+
forEach(element, function (element) {
|
13879
|
+
jqLiteAddClass(element, add);
|
13880
|
+
jqLiteRemoveClass(element, remove);
|
13881
|
+
});
|
13882
|
+
done && $timeout(done, 0, false);
|
13883
|
+
},
|
13884
|
+
|
13852
13885
|
enabled : noop
|
13853
13886
|
};
|
13854
13887
|
}];
|
@@ -14991,7 +15024,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
14991
15024
|
var hasDirectives = {},
|
14992
15025
|
Suffix = 'Directive',
|
14993
15026
|
COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,
|
14994
|
-
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)
|
15027
|
+
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)/,
|
15028
|
+
TABLE_CONTENT_REGEXP = /^<\s*(tr|th|td|tbody)(\s+[^>]*)?>/i;
|
14995
15029
|
|
14996
15030
|
// Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
|
14997
15031
|
// The assumption is that future DOM event attribute names will begin with
|
@@ -15178,8 +15212,16 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15178
15212
|
* @param {string} oldClasses The former CSS className value
|
15179
15213
|
*/
|
15180
15214
|
$updateClass : function(newClasses, oldClasses) {
|
15181
|
-
|
15182
|
-
|
15215
|
+
var toAdd = tokenDifference(newClasses, oldClasses);
|
15216
|
+
var toRemove = tokenDifference(oldClasses, newClasses);
|
15217
|
+
|
15218
|
+
if(toAdd.length === 0) {
|
15219
|
+
$animate.removeClass(this.$$element, toRemove);
|
15220
|
+
} else if(toRemove.length === 0) {
|
15221
|
+
$animate.addClass(this.$$element, toAdd);
|
15222
|
+
} else {
|
15223
|
+
$animate.setClass(this.$$element, toAdd, toRemove);
|
15224
|
+
}
|
15183
15225
|
},
|
15184
15226
|
|
15185
15227
|
/**
|
@@ -15631,7 +15673,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15631
15673
|
templateDirective = previousCompileContext.templateDirective,
|
15632
15674
|
nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,
|
15633
15675
|
hasTranscludeDirective = false,
|
15634
|
-
hasElementTranscludeDirective =
|
15676
|
+
hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,
|
15635
15677
|
$compileNode = templateAttrs.$$element = jqLite(compileNode),
|
15636
15678
|
directive,
|
15637
15679
|
directiveName,
|
@@ -15732,9 +15774,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15732
15774
|
|
15733
15775
|
if (directive.replace) {
|
15734
15776
|
replaceDirective = directive;
|
15735
|
-
$template =
|
15736
|
-
trim(directiveValue) +
|
15737
|
-
'</div>').contents();
|
15777
|
+
$template = directiveTemplateContents(directiveValue);
|
15738
15778
|
compileNode = $template[0];
|
15739
15779
|
|
15740
15780
|
if ($template.length != 1 || compileNode.nodeType !== 1) {
|
@@ -15805,6 +15845,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15805
15845
|
|
15806
15846
|
nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
|
15807
15847
|
nodeLinkFn.transclude = hasTranscludeDirective && childTranscludeFn;
|
15848
|
+
previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
|
15808
15849
|
|
15809
15850
|
// might be normal or delayed nodeLinkFn depending on if templateUrl is present
|
15810
15851
|
return nodeLinkFn;
|
@@ -16132,6 +16173,28 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16132
16173
|
}
|
16133
16174
|
|
16134
16175
|
|
16176
|
+
function directiveTemplateContents(template) {
|
16177
|
+
var type;
|
16178
|
+
template = trim(template);
|
16179
|
+
if ((type = TABLE_CONTENT_REGEXP.exec(template))) {
|
16180
|
+
type = type[1].toLowerCase();
|
16181
|
+
var table = jqLite('<table>' + template + '</table>'),
|
16182
|
+
tbody = table.children('tbody'),
|
16183
|
+
leaf = /(td|th)/.test(type) && table.find('tr');
|
16184
|
+
if (tbody.length && type !== 'tbody') {
|
16185
|
+
table = tbody;
|
16186
|
+
}
|
16187
|
+
if (leaf && leaf.length) {
|
16188
|
+
table = leaf;
|
16189
|
+
}
|
16190
|
+
return table.contents();
|
16191
|
+
}
|
16192
|
+
return jqLite('<div>' +
|
16193
|
+
template +
|
16194
|
+
'</div>').contents();
|
16195
|
+
}
|
16196
|
+
|
16197
|
+
|
16135
16198
|
function compileTemplateUrl(directives, $compileNode, tAttrs,
|
16136
16199
|
$rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
|
16137
16200
|
var linkQueue = [],
|
@@ -16156,7 +16219,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16156
16219
|
content = denormalizeTemplate(content);
|
16157
16220
|
|
16158
16221
|
if (origAsyncDirective.replace) {
|
16159
|
-
$template =
|
16222
|
+
$template = directiveTemplateContents(content);
|
16160
16223
|
compileNode = $template[0];
|
16161
16224
|
|
16162
16225
|
if ($template.length != 1 || compileNode.nodeType !== 1) {
|
@@ -16201,8 +16264,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16201
16264
|
|
16202
16265
|
if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
|
16203
16266
|
var oldClasses = beforeTemplateLinkNode.className;
|
16204
|
-
|
16205
|
-
|
16267
|
+
|
16268
|
+
if (!(previousCompileContext.hasElementTranscludeDirective &&
|
16269
|
+
origAsyncDirective.replace)) {
|
16270
|
+
// it was cloned therefore we have to clone as well.
|
16271
|
+
linkNode = jqLiteClone(compileNode);
|
16272
|
+
}
|
16273
|
+
|
16206
16274
|
replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
|
16207
16275
|
|
16208
16276
|
// Copy in CSS classes from original node
|
@@ -18094,7 +18162,7 @@ function $InterpolateProvider() {
|
|
18094
18162
|
* @description
|
18095
18163
|
* Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
|
18096
18164
|
*
|
18097
|
-
* Use {@link ng.$interpolateProvider#
|
18165
|
+
* Use {@link ng.$interpolateProvider#methods_endSymbol $interpolateProvider#endSymbol} to change
|
18098
18166
|
* the symbol.
|
18099
18167
|
*
|
18100
18168
|
* @returns {string} start symbol.
|
@@ -18938,7 +19006,7 @@ function $LocationProvider(){
|
|
18938
19006
|
* @eventType broadcast on root scope
|
18939
19007
|
* @description
|
18940
19008
|
* Broadcasted before a URL will change. This change can be prevented by calling
|
18941
|
-
* `preventDefault` method of the event. See {@link ng.$rootScope.Scope
|
19009
|
+
* `preventDefault` method of the event. See {@link ng.$rootScope.Scope#methods_$on} for more
|
18942
19010
|
* details about event object. Upon successful change
|
18943
19011
|
* {@link ng.$location#events_$locationChangeSuccess $locationChangeSuccess} is fired.
|
18944
19012
|
*
|
@@ -23858,6 +23926,15 @@ function filterFilter() {
|
|
23858
23926
|
};
|
23859
23927
|
} else {
|
23860
23928
|
comparator = function(obj, text) {
|
23929
|
+
if (obj && text && typeof obj === 'object' && typeof text === 'object') {
|
23930
|
+
for (var objKey in obj) {
|
23931
|
+
if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) &&
|
23932
|
+
comparator(obj[objKey], text[objKey])) {
|
23933
|
+
return true;
|
23934
|
+
}
|
23935
|
+
}
|
23936
|
+
return false;
|
23937
|
+
}
|
23861
23938
|
text = (''+text).toLowerCase();
|
23862
23939
|
return (''+obj).toLowerCase().indexOf(text) > -1;
|
23863
23940
|
};
|
@@ -23972,7 +24049,8 @@ function filterFilter() {
|
|
23972
24049
|
return;
|
23973
24050
|
}
|
23974
24051
|
element(by.model('amount')).clear();
|
23975
|
-
element(by.model('amount')).sendKeys('-1234');
|
24052
|
+
element(by.model('amount')).sendKeys('-1234');
|
24053
|
+
expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');
|
23976
24054
|
expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('(USD$1,234.00)');
|
23977
24055
|
});
|
23978
24056
|
</doc:protractor>
|
@@ -25883,7 +25961,8 @@ var inputType = {
|
|
25883
25961
|
'hidden': noop,
|
25884
25962
|
'button': noop,
|
25885
25963
|
'submit': noop,
|
25886
|
-
'reset': noop
|
25964
|
+
'reset': noop,
|
25965
|
+
'file': noop
|
25887
25966
|
};
|
25888
25967
|
|
25889
25968
|
// A helper function to call $setValidity and return the value / undefined,
|
@@ -25906,6 +25985,7 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
25906
25985
|
|
25907
25986
|
element.on('compositionend', function() {
|
25908
25987
|
composing = false;
|
25988
|
+
listener();
|
25909
25989
|
});
|
25910
25990
|
}
|
25911
25991
|
|
@@ -26481,6 +26561,9 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
26481
26561
|
* You can override this for input directives whose concept of being empty is different to the
|
26482
26562
|
* default. The `checkboxInputType` directive does this because in its case a value of `false`
|
26483
26563
|
* implies empty.
|
26564
|
+
*
|
26565
|
+
* @param {*} value Reference to check.
|
26566
|
+
* @returns {boolean} True if `value` is empty.
|
26484
26567
|
*/
|
26485
26568
|
this.$isEmpty = function(value) {
|
26486
26569
|
return isUndefined(value) || value === '' || value === null || value !== value;
|
@@ -28042,8 +28125,8 @@ forEach(
|
|
28042
28125
|
* Enables binding angular expressions to onsubmit events.
|
28043
28126
|
*
|
28044
28127
|
* Additionally it prevents the default action (which for form means sending the request to the
|
28045
|
-
* server and reloading the current page)
|
28046
|
-
*
|
28128
|
+
* server and reloading the current page), but only if the form does not contain `action`,
|
28129
|
+
* `data-action`, or `x-action` attributes.
|
28047
28130
|
*
|
28048
28131
|
* @element form
|
28049
28132
|
* @priority 0
|
@@ -29868,23 +29951,16 @@ var ngSwitchDefaultDirective = ngDirective({
|
|
29868
29951
|
*
|
29869
29952
|
*/
|
29870
29953
|
var ngTranscludeDirective = ngDirective({
|
29871
|
-
|
29954
|
+
link: function($scope, $element, $attrs, controller, $transclude) {
|
29872
29955
|
if (!$transclude) {
|
29873
29956
|
throw minErr('ngTransclude')('orphan',
|
29874
|
-
|
29875
|
-
|
29876
|
-
|
29877
|
-
|
29957
|
+
'Illegal use of ngTransclude directive in the template! ' +
|
29958
|
+
'No parent directive that requires a transclusion found. ' +
|
29959
|
+
'Element: {0}',
|
29960
|
+
startingTag($element));
|
29878
29961
|
}
|
29879
|
-
|
29880
|
-
|
29881
|
-
// the parent element even when the transclusion replaces the current element. (we can't use priority here because
|
29882
|
-
// that applies only to compile fns and not controllers
|
29883
|
-
this.$transclude = $transclude;
|
29884
|
-
}],
|
29885
|
-
|
29886
|
-
link: function($scope, $element, $attrs, controller) {
|
29887
|
-
controller.$transclude(function(clone) {
|
29962
|
+
|
29963
|
+
$transclude(function(clone) {
|
29888
29964
|
$element.empty();
|
29889
29965
|
$element.append(clone);
|
29890
29966
|
});
|
@@ -32800,5 +32876,5 @@ if (config.autotest) {
|
|
32800
32876
|
})(window, document);
|
32801
32877
|
|
32802
32878
|
|
32803
|
-
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak,\n.ng-hide {\n display: none !important;\n}\n\nng\\:form {\n display: block;\n}\n</style>');
|
32879
|
+
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak,\n.ng-hide {\n display: none !important;\n}\n\nng\\:form {\n display: block;\n}\n\n.ng-animate-block-transitions {\n transition:0s all!important;\n -webkit-transition:0s all!important;\n}\n</style>');
|
32804
32880
|
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n/* CSS Document */\n\n/** Structure */\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n font-size: 14px;\n}\n\n#system-error {\n font-size: 1.5em;\n text-align: center;\n}\n\n#json, #xml {\n display: none;\n}\n\n#header {\n position: fixed;\n width: 100%;\n}\n\n#specs {\n padding-top: 50px;\n}\n\n#header .angular {\n font-family: Courier New, monospace;\n font-weight: bold;\n}\n\n#header h1 {\n font-weight: normal;\n float: left;\n font-size: 30px;\n line-height: 30px;\n margin: 0;\n padding: 10px 10px;\n height: 30px;\n}\n\n#application h2,\n#specs h2 {\n margin: 0;\n padding: 0.5em;\n font-size: 1.1em;\n}\n\n#status-legend {\n margin-top: 10px;\n margin-right: 10px;\n}\n\n#header,\n#application,\n.test-info,\n.test-actions li {\n overflow: hidden;\n}\n\n#application {\n margin: 10px;\n}\n\n#application iframe {\n width: 100%;\n height: 758px;\n}\n\n#application .popout {\n float: right;\n}\n\n#application iframe {\n border: none;\n}\n\n.tests li,\n.test-actions li,\n.test-it li,\n.test-it ol,\n.status-display {\n list-style-type: none;\n}\n\n.tests,\n.test-it ol,\n.status-display {\n margin: 0;\n padding: 0;\n}\n\n.test-info {\n margin-left: 1em;\n margin-top: 0.5em;\n border-radius: 8px 0 0 8px;\n -webkit-border-radius: 8px 0 0 8px;\n -moz-border-radius: 8px 0 0 8px;\n cursor: pointer;\n}\n\n.test-info:hover .test-name {\n text-decoration: underline;\n}\n\n.test-info .closed:before {\n content: \'\\25b8\\00A0\';\n}\n\n.test-info .open:before {\n content: \'\\25be\\00A0\';\n font-weight: bold;\n}\n\n.test-it ol {\n margin-left: 2.5em;\n}\n\n.status-display,\n.status-display li {\n float: right;\n}\n\n.status-display li {\n padding: 5px 10px;\n}\n\n.timer-result,\n.test-title {\n display: inline-block;\n margin: 0;\n padding: 4px;\n}\n\n.test-actions .test-title,\n.test-actions .test-result {\n display: table-cell;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n\n.test-actions {\n display: table;\n}\n\n.test-actions li {\n display: table-row;\n}\n\n.timer-result {\n width: 4em;\n padding: 0 10px;\n text-align: right;\n font-family: monospace;\n}\n\n.test-it pre,\n.test-actions pre {\n clear: left;\n color: black;\n margin-left: 6em;\n}\n\n.test-describe {\n padding-bottom: 0.5em;\n}\n\n.test-describe .test-describe {\n margin: 5px 5px 10px 2em;\n}\n\n.test-actions .status-pending .test-title:before {\n content: \'\\00bb\\00A0\';\n}\n\n.scrollpane {\n max-height: 20em;\n overflow: auto;\n}\n\n/** Colors */\n\n#header {\n background-color: #F2C200;\n}\n\n#specs h2 {\n border-top: 2px solid #BABAD1;\n}\n\n#specs h2,\n#application h2 {\n background-color: #efefef;\n}\n\n#application {\n border: 1px solid #BABAD1;\n}\n\n.test-describe .test-describe {\n border-left: 1px solid #BABAD1;\n border-right: 1px solid #BABAD1;\n border-bottom: 1px solid #BABAD1;\n}\n\n.status-display {\n border: 1px solid #777;\n}\n\n.status-display .status-pending,\n.status-pending .test-info {\n background-color: #F9EEBC;\n}\n\n.status-display .status-success,\n.status-success .test-info {\n background-color: #B1D7A1;\n}\n\n.status-display .status-failure,\n.status-failure .test-info {\n background-color: #FF8286;\n}\n\n.status-display .status-error,\n.status-error .test-info {\n background-color: black;\n color: white;\n}\n\n.test-actions .status-success .test-title {\n color: #30B30A;\n}\n\n.test-actions .status-failure .test-title {\n color: #DF0000;\n}\n\n.test-actions .status-error .test-title {\n color: black;\n}\n\n.test-actions .timer-result {\n color: #888;\n}\n</style>');
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.2.
|
2
|
+
* @license AngularJS v1.2.13
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -68,7 +68,7 @@ function minErr(module) {
|
|
68
68
|
return match;
|
69
69
|
});
|
70
70
|
|
71
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
71
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.13/' +
|
72
72
|
(module ? module + '/' : '') + code;
|
73
73
|
for (i = 2; i < arguments.length; i++) {
|
74
74
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -160,6 +160,7 @@ function minErr(module) {
|
|
160
160
|
-assertNotHasOwnProperty,
|
161
161
|
-getter,
|
162
162
|
-getBlockElements,
|
163
|
+
-hasOwnProperty,
|
163
164
|
|
164
165
|
*/
|
165
166
|
|
@@ -175,7 +176,7 @@ function minErr(module) {
|
|
175
176
|
* @returns {string} Lowercased string.
|
176
177
|
*/
|
177
178
|
var lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};
|
178
|
-
|
179
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
179
180
|
|
180
181
|
/**
|
181
182
|
* @ngdoc function
|
@@ -1210,6 +1211,7 @@ function encodeUriQuery(val, pctEncodeSpaces) {
|
|
1210
1211
|
<file name="index.html">
|
1211
1212
|
<div ng-controller="ngAppDemoController">
|
1212
1213
|
I can add: {{a}} + {{b}} = {{ a+b }}
|
1214
|
+
</div>
|
1213
1215
|
</file>
|
1214
1216
|
<file name="script.js">
|
1215
1217
|
angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
|
@@ -1834,11 +1836,11 @@ function setupModuleLoader(window) {
|
|
1834
1836
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
1835
1837
|
*/
|
1836
1838
|
var version = {
|
1837
|
-
full: '1.2.
|
1839
|
+
full: '1.2.13', // all of these placeholder strings will be replaced by grunt's
|
1838
1840
|
major: 1, // package task
|
1839
1841
|
minor: 2,
|
1840
|
-
dot:
|
1841
|
-
codeName: '
|
1842
|
+
dot: 13,
|
1843
|
+
codeName: 'romantic-transclusion'
|
1842
1844
|
};
|
1843
1845
|
|
1844
1846
|
|
@@ -2000,7 +2002,7 @@ function publishExternalAPI(angular){
|
|
2000
2002
|
* - [`after()`](http://api.jquery.com/after/)
|
2001
2003
|
* - [`append()`](http://api.jquery.com/append/)
|
2002
2004
|
* - [`attr()`](http://api.jquery.com/attr/)
|
2003
|
-
* - [`bind()`](http://api.jquery.com/
|
2005
|
+
* - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData
|
2004
2006
|
* - [`children()`](http://api.jquery.com/children/) - Does not support selectors
|
2005
2007
|
* - [`clone()`](http://api.jquery.com/clone/)
|
2006
2008
|
* - [`contents()`](http://api.jquery.com/contents/)
|
@@ -2027,7 +2029,7 @@ function publishExternalAPI(angular){
|
|
2027
2029
|
* - [`text()`](http://api.jquery.com/text/)
|
2028
2030
|
* - [`toggleClass()`](http://api.jquery.com/toggleClass/)
|
2029
2031
|
* - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.
|
2030
|
-
* - [`unbind()`](http://api.jquery.com/
|
2032
|
+
* - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces
|
2031
2033
|
* - [`val()`](http://api.jquery.com/val/)
|
2032
2034
|
* - [`wrap()`](http://api.jquery.com/wrap/)
|
2033
2035
|
*
|
@@ -2067,6 +2069,14 @@ var jqCache = JQLite.cache = {},
|
|
2067
2069
|
? function(element, type, fn) {element.removeEventListener(type, fn, false); }
|
2068
2070
|
: function(element, type, fn) {element.detachEvent('on' + type, fn); });
|
2069
2071
|
|
2072
|
+
/*
|
2073
|
+
* !!! This is an undocumented "private" function !!!
|
2074
|
+
*/
|
2075
|
+
var jqData = JQLite._data = function(node) {
|
2076
|
+
//jQuery always returns an object on cache miss
|
2077
|
+
return this.cache[node[this.expando]] || {};
|
2078
|
+
};
|
2079
|
+
|
2070
2080
|
function jqNextId() { return ++jqId; }
|
2071
2081
|
|
2072
2082
|
|
@@ -4057,6 +4067,29 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|
4057
4067
|
done && $timeout(done, 0, false);
|
4058
4068
|
},
|
4059
4069
|
|
4070
|
+
/**
|
4071
|
+
*
|
4072
|
+
* @ngdoc function
|
4073
|
+
* @name ng.$animate#setClass
|
4074
|
+
* @methodOf ng.$animate
|
4075
|
+
* @function
|
4076
|
+
* @description Adds and/or removes the given CSS classes to and from the element.
|
4077
|
+
* Once complete, the done() callback will be fired (if provided).
|
4078
|
+
* @param {jQuery/jqLite element} element the element which will it's CSS classes changed
|
4079
|
+
* removed from it
|
4080
|
+
* @param {string} add the CSS classes which will be added to the element
|
4081
|
+
* @param {string} remove the CSS class which will be removed from the element
|
4082
|
+
* @param {function=} done the callback function (if provided) that will be fired after the
|
4083
|
+
* CSS classes have been set on the element
|
4084
|
+
*/
|
4085
|
+
setClass : function(element, add, remove, done) {
|
4086
|
+
forEach(element, function (element) {
|
4087
|
+
jqLiteAddClass(element, add);
|
4088
|
+
jqLiteRemoveClass(element, remove);
|
4089
|
+
});
|
4090
|
+
done && $timeout(done, 0, false);
|
4091
|
+
},
|
4092
|
+
|
4060
4093
|
enabled : noop
|
4061
4094
|
};
|
4062
4095
|
}];
|
@@ -5199,7 +5232,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
5199
5232
|
var hasDirectives = {},
|
5200
5233
|
Suffix = 'Directive',
|
5201
5234
|
COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,
|
5202
|
-
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)
|
5235
|
+
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)/,
|
5236
|
+
TABLE_CONTENT_REGEXP = /^<\s*(tr|th|td|tbody)(\s+[^>]*)?>/i;
|
5203
5237
|
|
5204
5238
|
// Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
|
5205
5239
|
// The assumption is that future DOM event attribute names will begin with
|
@@ -5386,8 +5420,16 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
5386
5420
|
* @param {string} oldClasses The former CSS className value
|
5387
5421
|
*/
|
5388
5422
|
$updateClass : function(newClasses, oldClasses) {
|
5389
|
-
|
5390
|
-
|
5423
|
+
var toAdd = tokenDifference(newClasses, oldClasses);
|
5424
|
+
var toRemove = tokenDifference(oldClasses, newClasses);
|
5425
|
+
|
5426
|
+
if(toAdd.length === 0) {
|
5427
|
+
$animate.removeClass(this.$$element, toRemove);
|
5428
|
+
} else if(toRemove.length === 0) {
|
5429
|
+
$animate.addClass(this.$$element, toAdd);
|
5430
|
+
} else {
|
5431
|
+
$animate.setClass(this.$$element, toAdd, toRemove);
|
5432
|
+
}
|
5391
5433
|
},
|
5392
5434
|
|
5393
5435
|
/**
|
@@ -5839,7 +5881,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
5839
5881
|
templateDirective = previousCompileContext.templateDirective,
|
5840
5882
|
nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective,
|
5841
5883
|
hasTranscludeDirective = false,
|
5842
|
-
hasElementTranscludeDirective =
|
5884
|
+
hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective,
|
5843
5885
|
$compileNode = templateAttrs.$$element = jqLite(compileNode),
|
5844
5886
|
directive,
|
5845
5887
|
directiveName,
|
@@ -5940,9 +5982,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
5940
5982
|
|
5941
5983
|
if (directive.replace) {
|
5942
5984
|
replaceDirective = directive;
|
5943
|
-
$template =
|
5944
|
-
trim(directiveValue) +
|
5945
|
-
'</div>').contents();
|
5985
|
+
$template = directiveTemplateContents(directiveValue);
|
5946
5986
|
compileNode = $template[0];
|
5947
5987
|
|
5948
5988
|
if ($template.length != 1 || compileNode.nodeType !== 1) {
|
@@ -6013,6 +6053,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6013
6053
|
|
6014
6054
|
nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true;
|
6015
6055
|
nodeLinkFn.transclude = hasTranscludeDirective && childTranscludeFn;
|
6056
|
+
previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective;
|
6016
6057
|
|
6017
6058
|
// might be normal or delayed nodeLinkFn depending on if templateUrl is present
|
6018
6059
|
return nodeLinkFn;
|
@@ -6340,6 +6381,28 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6340
6381
|
}
|
6341
6382
|
|
6342
6383
|
|
6384
|
+
function directiveTemplateContents(template) {
|
6385
|
+
var type;
|
6386
|
+
template = trim(template);
|
6387
|
+
if ((type = TABLE_CONTENT_REGEXP.exec(template))) {
|
6388
|
+
type = type[1].toLowerCase();
|
6389
|
+
var table = jqLite('<table>' + template + '</table>'),
|
6390
|
+
tbody = table.children('tbody'),
|
6391
|
+
leaf = /(td|th)/.test(type) && table.find('tr');
|
6392
|
+
if (tbody.length && type !== 'tbody') {
|
6393
|
+
table = tbody;
|
6394
|
+
}
|
6395
|
+
if (leaf && leaf.length) {
|
6396
|
+
table = leaf;
|
6397
|
+
}
|
6398
|
+
return table.contents();
|
6399
|
+
}
|
6400
|
+
return jqLite('<div>' +
|
6401
|
+
template +
|
6402
|
+
'</div>').contents();
|
6403
|
+
}
|
6404
|
+
|
6405
|
+
|
6343
6406
|
function compileTemplateUrl(directives, $compileNode, tAttrs,
|
6344
6407
|
$rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
|
6345
6408
|
var linkQueue = [],
|
@@ -6364,7 +6427,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6364
6427
|
content = denormalizeTemplate(content);
|
6365
6428
|
|
6366
6429
|
if (origAsyncDirective.replace) {
|
6367
|
-
$template =
|
6430
|
+
$template = directiveTemplateContents(content);
|
6368
6431
|
compileNode = $template[0];
|
6369
6432
|
|
6370
6433
|
if ($template.length != 1 || compileNode.nodeType !== 1) {
|
@@ -6409,8 +6472,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
6409
6472
|
|
6410
6473
|
if (beforeTemplateLinkNode !== beforeTemplateCompileNode) {
|
6411
6474
|
var oldClasses = beforeTemplateLinkNode.className;
|
6412
|
-
|
6413
|
-
|
6475
|
+
|
6476
|
+
if (!(previousCompileContext.hasElementTranscludeDirective &&
|
6477
|
+
origAsyncDirective.replace)) {
|
6478
|
+
// it was cloned therefore we have to clone as well.
|
6479
|
+
linkNode = jqLiteClone(compileNode);
|
6480
|
+
}
|
6481
|
+
|
6414
6482
|
replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode);
|
6415
6483
|
|
6416
6484
|
// Copy in CSS classes from original node
|
@@ -8302,7 +8370,7 @@ function $InterpolateProvider() {
|
|
8302
8370
|
* @description
|
8303
8371
|
* Symbol to denote the end of expression in the interpolated string. Defaults to `}}`.
|
8304
8372
|
*
|
8305
|
-
* Use {@link ng.$interpolateProvider#
|
8373
|
+
* Use {@link ng.$interpolateProvider#methods_endSymbol $interpolateProvider#endSymbol} to change
|
8306
8374
|
* the symbol.
|
8307
8375
|
*
|
8308
8376
|
* @returns {string} start symbol.
|
@@ -9146,7 +9214,7 @@ function $LocationProvider(){
|
|
9146
9214
|
* @eventType broadcast on root scope
|
9147
9215
|
* @description
|
9148
9216
|
* Broadcasted before a URL will change. This change can be prevented by calling
|
9149
|
-
* `preventDefault` method of the event. See {@link ng.$rootScope.Scope
|
9217
|
+
* `preventDefault` method of the event. See {@link ng.$rootScope.Scope#methods_$on} for more
|
9150
9218
|
* details about event object. Upon successful change
|
9151
9219
|
* {@link ng.$location#events_$locationChangeSuccess $locationChangeSuccess} is fired.
|
9152
9220
|
*
|
@@ -14066,6 +14134,15 @@ function filterFilter() {
|
|
14066
14134
|
};
|
14067
14135
|
} else {
|
14068
14136
|
comparator = function(obj, text) {
|
14137
|
+
if (obj && text && typeof obj === 'object' && typeof text === 'object') {
|
14138
|
+
for (var objKey in obj) {
|
14139
|
+
if (objKey.charAt(0) !== '$' && hasOwnProperty.call(obj, objKey) &&
|
14140
|
+
comparator(obj[objKey], text[objKey])) {
|
14141
|
+
return true;
|
14142
|
+
}
|
14143
|
+
}
|
14144
|
+
return false;
|
14145
|
+
}
|
14069
14146
|
text = (''+text).toLowerCase();
|
14070
14147
|
return (''+obj).toLowerCase().indexOf(text) > -1;
|
14071
14148
|
};
|
@@ -14180,7 +14257,8 @@ function filterFilter() {
|
|
14180
14257
|
return;
|
14181
14258
|
}
|
14182
14259
|
element(by.model('amount')).clear();
|
14183
|
-
element(by.model('amount')).sendKeys('-1234');
|
14260
|
+
element(by.model('amount')).sendKeys('-1234');
|
14261
|
+
expect(element(by.id('currency-default')).getText()).toBe('($1,234.00)');
|
14184
14262
|
expect(element(by.binding('amount | currency:"USD$"')).getText()).toBe('(USD$1,234.00)');
|
14185
14263
|
});
|
14186
14264
|
</doc:protractor>
|
@@ -16091,7 +16169,8 @@ var inputType = {
|
|
16091
16169
|
'hidden': noop,
|
16092
16170
|
'button': noop,
|
16093
16171
|
'submit': noop,
|
16094
|
-
'reset': noop
|
16172
|
+
'reset': noop,
|
16173
|
+
'file': noop
|
16095
16174
|
};
|
16096
16175
|
|
16097
16176
|
// A helper function to call $setValidity and return the value / undefined,
|
@@ -16114,6 +16193,7 @@ function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
16114
16193
|
|
16115
16194
|
element.on('compositionend', function() {
|
16116
16195
|
composing = false;
|
16196
|
+
listener();
|
16117
16197
|
});
|
16118
16198
|
}
|
16119
16199
|
|
@@ -16689,6 +16769,9 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
16689
16769
|
* You can override this for input directives whose concept of being empty is different to the
|
16690
16770
|
* default. The `checkboxInputType` directive does this because in its case a value of `false`
|
16691
16771
|
* implies empty.
|
16772
|
+
*
|
16773
|
+
* @param {*} value Reference to check.
|
16774
|
+
* @returns {boolean} True if `value` is empty.
|
16692
16775
|
*/
|
16693
16776
|
this.$isEmpty = function(value) {
|
16694
16777
|
return isUndefined(value) || value === '' || value === null || value !== value;
|
@@ -18250,8 +18333,8 @@ forEach(
|
|
18250
18333
|
* Enables binding angular expressions to onsubmit events.
|
18251
18334
|
*
|
18252
18335
|
* Additionally it prevents the default action (which for form means sending the request to the
|
18253
|
-
* server and reloading the current page)
|
18254
|
-
*
|
18336
|
+
* server and reloading the current page), but only if the form does not contain `action`,
|
18337
|
+
* `data-action`, or `x-action` attributes.
|
18255
18338
|
*
|
18256
18339
|
* @element form
|
18257
18340
|
* @priority 0
|
@@ -20076,23 +20159,16 @@ var ngSwitchDefaultDirective = ngDirective({
|
|
20076
20159
|
*
|
20077
20160
|
*/
|
20078
20161
|
var ngTranscludeDirective = ngDirective({
|
20079
|
-
|
20162
|
+
link: function($scope, $element, $attrs, controller, $transclude) {
|
20080
20163
|
if (!$transclude) {
|
20081
20164
|
throw minErr('ngTransclude')('orphan',
|
20082
|
-
|
20083
|
-
|
20084
|
-
|
20085
|
-
|
20165
|
+
'Illegal use of ngTransclude directive in the template! ' +
|
20166
|
+
'No parent directive that requires a transclusion found. ' +
|
20167
|
+
'Element: {0}',
|
20168
|
+
startingTag($element));
|
20086
20169
|
}
|
20087
|
-
|
20088
|
-
|
20089
|
-
// the parent element even when the transclusion replaces the current element. (we can't use priority here because
|
20090
|
-
// that applies only to compile fns and not controllers
|
20091
|
-
this.$transclude = $transclude;
|
20092
|
-
}],
|
20093
|
-
|
20094
|
-
link: function($scope, $element, $attrs, controller) {
|
20095
|
-
controller.$transclude(function(clone) {
|
20170
|
+
|
20171
|
+
$transclude(function(clone) {
|
20096
20172
|
$element.empty();
|
20097
20173
|
$element.append(clone);
|
20098
20174
|
});
|
@@ -20795,4 +20871,4 @@ var styleDirective = valueFn({
|
|
20795
20871
|
|
20796
20872
|
})(window, document);
|
20797
20873
|
|
20798
|
-
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}</style>');
|
20874
|
+
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}</style>');
|