angularjs-rails 1.2.12.1 → 1.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +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>');
|