From 2b11094f8c63e4648b22957fd9d97c448a590aa0 Mon Sep 17 00:00:00 2001 From: Bernhard Posselt Date: Sun, 22 Mar 2015 15:33:40 +0100 Subject: update node and bower deps --- js/package.json | 4 +- js/vendor/angular-animate/.bower.json | 10 +- js/vendor/angular-animate/angular-animate.js | 2 +- js/vendor/angular-animate/angular-animate.min.js | 2 +- js/vendor/angular-animate/bower.json | 4 +- js/vendor/angular-animate/package.json | 2 +- js/vendor/angular-mocks/.bower.json | 10 +- js/vendor/angular-mocks/angular-mocks.js | 2 +- js/vendor/angular-mocks/bower.json | 4 +- js/vendor/angular-mocks/package.json | 2 +- js/vendor/angular-route/.bower.json | 10 +- js/vendor/angular-route/angular-route.js | 2 +- js/vendor/angular-route/angular-route.min.js | 2 +- js/vendor/angular-route/bower.json | 4 +- js/vendor/angular-route/package.json | 2 +- js/vendor/angular-sanitize/.bower.json | 10 +- js/vendor/angular-sanitize/angular-sanitize.js | 2 +- js/vendor/angular-sanitize/angular-sanitize.min.js | 2 +- js/vendor/angular-sanitize/bower.json | 4 +- js/vendor/angular-sanitize/package.json | 2 +- js/vendor/angular/.bower.json | 8 +- js/vendor/angular/angular.js | 100 ++-- js/vendor/angular/angular.min.js | 557 +++++++++++---------- js/vendor/angular/angular.min.js.gzip | Bin 50404 -> 50469 bytes js/vendor/angular/angular.min.js.map | 6 +- js/vendor/angular/bower.json | 2 +- js/vendor/angular/package.json | 2 +- 27 files changed, 398 insertions(+), 359 deletions(-) (limited to 'js') diff --git a/js/package.json b/js/package.json index ed52743ba..d3ac485fe 100644 --- a/js/package.json +++ b/js/package.json @@ -29,12 +29,12 @@ "grunt-contrib-concat": "^0.5.1", "grunt-contrib-connect": "^0.9.0", "grunt-contrib-cssmin": "^0.12.2", - "grunt-contrib-jshint": "^0.11.0", + "grunt-contrib-jshint": "^0.11.1", "grunt-contrib-uglify": "^0.8.0", "grunt-contrib-watch": "^0.6.1", "grunt-karma": "^0.10.1", "grunt-ng-annotate": "^0.10.0", - "grunt-php": "^1.3.0", + "grunt-php": "^1.4.0", "grunt-phpunit": "^0.3.6", "grunt-protractor-runner": "^1.2.1", "grunt-protractor-webdriver": "^0.2.0", diff --git a/js/vendor/angular-animate/.bower.json b/js/vendor/angular-animate/.bower.json index 6dc1b52e0..135629eb8 100644 --- a/js/vendor/angular-animate/.bower.json +++ b/js/vendor/angular-animate/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-animate", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-animate.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" }, "homepage": "https://github.com/angular/bower-angular-animate", - "_release": "1.4.0-build.3911+sha.e57138d", + "_release": "1.4.0-build.3924+sha.e5d1d65", "_resolution": { "type": "version", - "tag": "v1.4.0-build.3911+sha.e57138d", - "commit": "8babc63d99c8c505f342075831ed0a1f9e47fae7" + "tag": "v1.4.0-build.3924+sha.e5d1d65", + "commit": "60a68af865da13343bb66686dcc7084a8d4da47e" }, "_source": "git://github.com/angular/bower-angular-animate.git", "_target": "~1.4.*", diff --git a/js/vendor/angular-animate/angular-animate.js b/js/vendor/angular-animate/angular-animate.js index 76f5509f2..3342cafcd 100644 --- a/js/vendor/angular-animate/angular-animate.js +++ b/js/vendor/angular-animate/angular-animate.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-build.3911+sha.e57138d + * @license AngularJS v1.4.0-build.3924+sha.e5d1d65 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-animate/angular-animate.min.js b/js/vendor/angular-animate/angular-animate.min.js index 0b48816ff..a582a4cf3 100644 --- a/js/vendor/angular-animate/angular-animate.min.js +++ b/js/vendor/angular-animate/angular-animate.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.4.0-build.3911+sha.e57138d + AngularJS v1.4.0-build.3924+sha.e5d1d65 (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-animate/bower.json b/js/vendor/angular-animate/bower.json index 8dd8dd535..99b1cd84e 100644 --- a/js/vendor/angular-animate/bower.json +++ b/js/vendor/angular-animate/bower.json @@ -1,9 +1,9 @@ { "name": "angular-animate", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-animate.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" } } diff --git a/js/vendor/angular-animate/package.json b/js/vendor/angular-animate/package.json index c6e485b6c..f25b6a648 100644 --- a/js/vendor/angular-animate/package.json +++ b/js/vendor/angular-animate/package.json @@ -1,6 +1,6 @@ { "name": "angular-animate", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "description": "AngularJS module for animations", "main": "index.js", "scripts": { diff --git a/js/vendor/angular-mocks/.bower.json b/js/vendor/angular-mocks/.bower.json index 5e5822b69..3e97b3619 100644 --- a/js/vendor/angular-mocks/.bower.json +++ b/js/vendor/angular-mocks/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-mocks", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" }, "homepage": "https://github.com/angular/bower-angular-mocks", - "_release": "1.4.0-build.3911+sha.e57138d", + "_release": "1.4.0-build.3924+sha.e5d1d65", "_resolution": { "type": "version", - "tag": "v1.4.0-build.3911+sha.e57138d", - "commit": "517c26c659aee2b19632162fa4a01b02d17e82ec" + "tag": "v1.4.0-build.3924+sha.e5d1d65", + "commit": "fbbf011916aef90aa1e195206e8fc61d3adb0829" }, "_source": "git://github.com/angular/bower-angular-mocks.git", "_target": "~1.4.*", diff --git a/js/vendor/angular-mocks/angular-mocks.js b/js/vendor/angular-mocks/angular-mocks.js index f4eadcdec..4e6d82279 100644 --- a/js/vendor/angular-mocks/angular-mocks.js +++ b/js/vendor/angular-mocks/angular-mocks.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-build.3911+sha.e57138d + * @license AngularJS v1.4.0-build.3924+sha.e5d1d65 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-mocks/bower.json b/js/vendor/angular-mocks/bower.json index 24d30c98b..d78b401a2 100644 --- a/js/vendor/angular-mocks/bower.json +++ b/js/vendor/angular-mocks/bower.json @@ -1,9 +1,9 @@ { "name": "angular-mocks", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-mocks.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" } } diff --git a/js/vendor/angular-mocks/package.json b/js/vendor/angular-mocks/package.json index 022cb5b34..2e021592c 100644 --- a/js/vendor/angular-mocks/package.json +++ b/js/vendor/angular-mocks/package.json @@ -1,6 +1,6 @@ { "name": "angular-mocks", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "description": "AngularJS mocks for testing", "main": "angular-mocks.js", "scripts": { diff --git a/js/vendor/angular-route/.bower.json b/js/vendor/angular-route/.bower.json index 39f29e9e0..d3136568a 100644 --- a/js/vendor/angular-route/.bower.json +++ b/js/vendor/angular-route/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-route", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-route.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" }, "homepage": "https://github.com/angular/bower-angular-route", - "_release": "1.4.0-build.3911+sha.e57138d", + "_release": "1.4.0-build.3924+sha.e5d1d65", "_resolution": { "type": "version", - "tag": "v1.4.0-build.3911+sha.e57138d", - "commit": "b2c8027175b5e56257cf62a7f19b749f4493eb84" + "tag": "v1.4.0-build.3924+sha.e5d1d65", + "commit": "21aa63d32d418bb84ffb9377ef21872db698035c" }, "_source": "git://github.com/angular/bower-angular-route.git", "_target": "~1.4.*", diff --git a/js/vendor/angular-route/angular-route.js b/js/vendor/angular-route/angular-route.js index e2ab990c4..672e5cd80 100644 --- a/js/vendor/angular-route/angular-route.js +++ b/js/vendor/angular-route/angular-route.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-build.3911+sha.e57138d + * @license AngularJS v1.4.0-build.3924+sha.e5d1d65 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-route/angular-route.min.js b/js/vendor/angular-route/angular-route.min.js index 974385c31..387db72d8 100644 --- a/js/vendor/angular-route/angular-route.min.js +++ b/js/vendor/angular-route/angular-route.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.4.0-build.3911+sha.e57138d + AngularJS v1.4.0-build.3924+sha.e5d1d65 (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-route/bower.json b/js/vendor/angular-route/bower.json index 1cc48750a..aee92ee48 100644 --- a/js/vendor/angular-route/bower.json +++ b/js/vendor/angular-route/bower.json @@ -1,9 +1,9 @@ { "name": "angular-route", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-route.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" } } diff --git a/js/vendor/angular-route/package.json b/js/vendor/angular-route/package.json index cb3f41958..3703e02ab 100644 --- a/js/vendor/angular-route/package.json +++ b/js/vendor/angular-route/package.json @@ -1,6 +1,6 @@ { "name": "angular-route", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "description": "AngularJS router module", "main": "index.js", "scripts": { diff --git a/js/vendor/angular-sanitize/.bower.json b/js/vendor/angular-sanitize/.bower.json index eec42a2d4..bf5b9b8e2 100644 --- a/js/vendor/angular-sanitize/.bower.json +++ b/js/vendor/angular-sanitize/.bower.json @@ -1,17 +1,17 @@ { "name": "angular-sanitize", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-sanitize.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" }, "homepage": "https://github.com/angular/bower-angular-sanitize", - "_release": "1.4.0-build.3911+sha.e57138d", + "_release": "1.4.0-build.3924+sha.e5d1d65", "_resolution": { "type": "version", - "tag": "v1.4.0-build.3911+sha.e57138d", - "commit": "3845428a031eb28f942344c7c9ea1b051d774d8d" + "tag": "v1.4.0-build.3924+sha.e5d1d65", + "commit": "c3cf3ede974f8e650fd9c152d9f69f867c242741" }, "_source": "git://github.com/angular/bower-angular-sanitize.git", "_target": "~1.4.*", diff --git a/js/vendor/angular-sanitize/angular-sanitize.js b/js/vendor/angular-sanitize/angular-sanitize.js index ad299e0c9..9cc31a23d 100644 --- a/js/vendor/angular-sanitize/angular-sanitize.js +++ b/js/vendor/angular-sanitize/angular-sanitize.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-build.3911+sha.e57138d + * @license AngularJS v1.4.0-build.3924+sha.e5d1d65 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ diff --git a/js/vendor/angular-sanitize/angular-sanitize.min.js b/js/vendor/angular-sanitize/angular-sanitize.min.js index 718eeac19..d0885e253 100644 --- a/js/vendor/angular-sanitize/angular-sanitize.min.js +++ b/js/vendor/angular-sanitize/angular-sanitize.min.js @@ -1,5 +1,5 @@ /* - AngularJS v1.4.0-build.3911+sha.e57138d + AngularJS v1.4.0-build.3924+sha.e5d1d65 (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ diff --git a/js/vendor/angular-sanitize/bower.json b/js/vendor/angular-sanitize/bower.json index 09f89d4a3..49a471d0a 100644 --- a/js/vendor/angular-sanitize/bower.json +++ b/js/vendor/angular-sanitize/bower.json @@ -1,9 +1,9 @@ { "name": "angular-sanitize", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular-sanitize.js", "ignore": [], "dependencies": { - "angular": "1.4.0-build.3911+sha.e57138d" + "angular": "1.4.0-build.3924+sha.e5d1d65" } } diff --git a/js/vendor/angular-sanitize/package.json b/js/vendor/angular-sanitize/package.json index e5686ad7c..3dbbab28e 100644 --- a/js/vendor/angular-sanitize/package.json +++ b/js/vendor/angular-sanitize/package.json @@ -1,6 +1,6 @@ { "name": "angular-sanitize", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "description": "AngularJS module for sanitizing HTML", "main": "index.js", "scripts": { diff --git a/js/vendor/angular/.bower.json b/js/vendor/angular/.bower.json index f7c3b4179..9c630cd55 100644 --- a/js/vendor/angular/.bower.json +++ b/js/vendor/angular/.bower.json @@ -1,15 +1,15 @@ { "name": "angular", - "version": "1.4.0-build.3911+sha.e57138d", + "version": "1.4.0-build.3924+sha.e5d1d65", "main": "./angular.js", "ignore": [], "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.4.0-build.3911+sha.e57138d", + "_release": "1.4.0-build.3924+sha.e5d1d65", "_resolution": { "type": "version", - "tag": "v1.4.0-build.3911+sha.e57138d", - "commit": "e8bd7d1724e6326f65971ec4878135224e9d91f5" + "tag": "v1.4.0-build.3924+sha.e5d1d65", + "commit": "c138089f5803cba923cbd9624517d8d749b5f1f7" }, "_source": "git://github.com/angular/bower-angular.git", "_target": "~1.4.*", diff --git a/js/vendor/angular/angular.js b/js/vendor/angular/angular.js index 72673ba79..85f2bdcee 100644 --- a/js/vendor/angular/angular.js +++ b/js/vendor/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-build.3911+sha.e57138d + * @license AngularJS v1.4.0-build.3924+sha.e5d1d65 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ @@ -57,7 +57,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message += '\nhttp://errors.angularjs.org/1.4.0-build.3911+sha.e57138d/' + + message += '\nhttp://errors.angularjs.org/1.4.0-build.3924+sha.e5d1d65/' + (module ? module + '/' : '') + code; for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { @@ -2275,7 +2275,7 @@ function toDebugString(obj) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.4.0-build.3911+sha.e57138d', // all of these placeholder strings will be replaced by grunt's + full: '1.4.0-build.3924+sha.e5d1d65', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 4, dot: 0, @@ -6570,6 +6570,14 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return bindings; } + function assertValidDirectiveName(name) { + var letter = name.charAt(0); + if (!letter || letter !== lowercase(letter)) { + throw $compileMinErr('baddir', "Directive name '{0}' is invalid. The first character must be a lowercase letter", name); + } + return name; + } + /** * @ngdoc method * @name $compileProvider#directive @@ -6588,6 +6596,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { this.directive = function registerDirective(name, directiveFactory) { assertNotHasOwnProperty(name, 'directive'); if (isString(name)) { + assertValidDirectiveName(name); assertArg(directiveFactory, 'directiveFactory'); if (!hasDirectives.hasOwnProperty(name)) { hasDirectives[name] = []; @@ -9554,6 +9563,8 @@ function $HttpProvider() { } promise.success = function(fn) { + assertArgFn(fn, 'fn'); + promise.then(function(response) { fn(response.data, response.status, response.headers, config); }); @@ -9561,6 +9572,8 @@ function $HttpProvider() { }; promise.error = function(fn) { + assertArgFn(fn, 'fn'); + promise.then(null, function(response) { fn(response.data, response.status, response.headers, config); }); @@ -10041,7 +10054,7 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc }; function jsonpReq(url, callbackId, done) { - // we can't use jQuery/jqLite here because jQuery does crazy shit with script elements, e.g.: + // we can't use jQuery/jqLite here because jQuery does crazy stuff with script elements, e.g.: // - fetches local scripts via XHR and evals them // - adds and immediately removes script elements from the document var script = rawDocument.createElement('script'), callback = null; @@ -10077,7 +10090,17 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc } } -var $interpolateMinErr = minErr('$interpolate'); +var $interpolateMinErr = angular.$interpolateMinErr = minErr('$interpolate'); +$interpolateMinErr.throwNoconcat = function(text) { + throw $interpolateMinErr('noconcat', + "Error while interpolating: {0}\nStrict Contextual Escaping disallows " + + "interpolations that concatenate multiple expressions when a trusted value is " + + "required. See http://docs.angularjs.org/api/ng.$sce", text); +}; + +$interpolateMinErr.interr = function(text, err) { + return $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text, err.toString()); +}; /** * @ngdoc provider @@ -10321,10 +10344,7 @@ function $InterpolateProvider() { // make it obvious that you bound the value to some user controlled value. This helps reduce // the load when auditing for XSS issues. if (trustedContext && concat.length > 1) { - throw $interpolateMinErr('noconcat', - "Error while interpolating: {0}\nStrict Contextual Escaping disallows " + - "interpolations that concatenate multiple expressions when a trusted value is " + - "required. See http://docs.angularjs.org/api/ng.$sce", text); + $interpolateMinErr.throwNoconcat(text); } if (!mustHaveExpression || expressions.length) { @@ -10354,9 +10374,7 @@ function $InterpolateProvider() { return compute(values); } catch (err) { - var newErr = $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text, - err.toString()); - $exceptionHandler(newErr); + $exceptionHandler($interpolateMinErr.interr(text, err)); } }, { @@ -10381,9 +10399,7 @@ function $InterpolateProvider() { value = getValue(value); return allOrNothing && !isDefined(value) ? value : stringify(value); } catch (err) { - var newErr = $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text, - err.toString()); - $exceptionHandler(newErr); + $exceptionHandler($interpolateMinErr.interr(text, err)); } } } @@ -15198,13 +15214,12 @@ function $RootScopeProvider() { * clean up DOM bindings before an element is removed from the DOM. */ $destroy: function() { - // we can't destroy the root scope or a scope that has been already destroyed + // We can't destroy a scope that has been already destroyed. if (this.$$destroyed) return; var parent = this.$parent; this.$broadcast('$destroy'); this.$$destroyed = true; - if (this === $rootScope) return; incrementWatchersCount(this, -this.$$watchersCount); for (var eventName in this.$$listenerCount) { @@ -15213,8 +15228,8 @@ function $RootScopeProvider() { // sever all the references to parent scopes (after this cleanup, the current scope should // not be retained by any of our references and should be eligible for garbage collection) - if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; - if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; + if (parent && parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; + if (parent && parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling; if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling; @@ -20278,7 +20293,11 @@ var inputType = { * Text input with number validation and transformation. Sets the `number` validation * error if not a valid number. * - * The model must always be a number, otherwise Angular will throw an error. + *
+ * The model must always be of type `number` otherwise Angular will throw an error. + * Be aware that a string containing a number is not enough. See the {@link ngModel:numfmt} + * error docs for more information and an example of how to convert your model if necessary. + *
* * @param {string} ngModel Assignable angular expression to data-bind to. * @param {string=} name Property name of the form under which the control is published. @@ -21691,12 +21710,15 @@ function classDirective(name, selector) { } function arrayClasses(classVal) { + var classes = []; if (isArray(classVal)) { - return classVal.join(' ').split(' '); + forEach(classVal, function(v) { + classes = classes.concat(arrayClasses(v)); + }); + return classes; } else if (isString(classVal)) { return classVal.split(' '); } else if (isObject(classVal)) { - var classes = []; forEach(classVal, function(v, k) { if (v) { classes = classes.concat(k.split(' ')); @@ -21724,16 +21746,18 @@ function classDirective(name, selector) { * 1. If the expression evaluates to a string, the string should be one or more space-delimited class * names. * - * 2. If the expression evaluates to an array, each element of the array should be a string that is - * one or more space-delimited class names. - * - * 3. If the expression evaluates to an object, then for each key-value pair of the + * 2. If the expression evaluates to an object, then for each key-value pair of the * object with a truthy value the corresponding key is used as a class name. * + * 3. If the expression evaluates to an array, each element of the array should either be a string as in + * type 1 or an object as in type 2. This means that you can mix strings and objects together in an array + * to give you more control over what CSS classes appear. See the code below for an example of this. + * + * * The directive won't add duplicate classes if a particular class was already set. * - * When the expression changes, the previously added classes are removed and only then the - * new classes are added. + * When the expression changes, the previously added classes are removed and only then are the + * new classes added. * * @animations * **add** - happens just before the class is applied to the elements @@ -21762,10 +21786,14 @@ function classDirective(name, selector) {


+
+

Using Array and Map Syntax

+
+ warning (apply "orange" class) .strike { - text-decoration: line-through; + text-decoration: line-through; } .bold { font-weight: bold; @@ -21773,6 +21801,9 @@ function classDirective(name, selector) { .red { color: red; } + .orange { + color: orange; + } var ps = element.all(by.css('p')); @@ -21797,11 +21828,18 @@ function classDirective(name, selector) { }); it('array example should have 3 classes', function() { - expect(ps.last().getAttribute('class')).toBe(''); + expect(ps.get(2).getAttribute('class')).toBe(''); element(by.model('style1')).sendKeys('bold'); element(by.model('style2')).sendKeys('strike'); element(by.model('style3')).sendKeys('red'); - expect(ps.last().getAttribute('class')).toBe('bold strike red'); + expect(ps.get(2).getAttribute('class')).toBe('bold strike red'); + }); + + it('array with map example should have 2 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style4')).sendKeys('bold'); + element(by.model('warning')).click(); + expect(ps.last().getAttribute('class')).toBe('bold orange'); }); diff --git a/js/vendor/angular/angular.min.js b/js/vendor/angular/angular.min.js index b5c0ea2d3..abb88c6f2 100644 --- a/js/vendor/angular/angular.min.js +++ b/js/vendor/angular/angular.min.js @@ -1,283 +1,284 @@ /* - AngularJS v1.4.0-build.3911+sha.e57138d + AngularJS v1.4.0-build.3924+sha.e5d1d65 (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ -(function(P,W,u){'use strict';function E(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.0-build.3911+sha.e57138d/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===Za?K(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+K(b)})}catch(d){return K(c)}}function sc(b){try{return decodeURIComponent(b)}catch(a){}} -function tc(b){var a={},c,d;m((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=sc(c[0]),A(d)&&(b=A(c[1])?sc(c[1]):!0,uc.call(a,d)?F(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Ob(b){var a=[];m(b,function(b,d){F(b)?m(b,function(b){a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))}):a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))});return a.length?a.join("&"):""}function jb(b){return Ea(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ea(b,a){return encodeURIComponent(b).replace(/%40/gi, -"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Rd(b,a){var c,d,e=Ka.length;for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=$a(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector", -d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;P&&e.test(P.name)&&(c.debugInfoEnabled=!0,P.name=P.name.replace(e,""));if(P&&!f.test(P.name))return d();P.name=P.name.replace(f,"");aa.resumeBootstrap=function(b){m(b,function(b){a.push(b)});return d()};G(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function Td(){P.name="NG_ENABLE_DEBUG_INFO!"+P.name;P.location.reload()}function Ud(b){b=aa.element(b).injector();if(!b)throw Da("test");return b.get("$$testability")} -function wc(b,a){a=a||"_";return b.replace(Vd,function(b,d){return(d?a:"")+b.toLowerCase()})}function Wd(){var b;if(!xc){var a=kb();la=P.jQuery;A(a)&&(la=null===a?u:P[a]);la&&la.fn.on?(C=la,O(la.fn,{scope:La.scope,isolateScope:La.isolateScope,controller:La.controller,injector:La.injector,inheritedData:La.inheritedData}),b=la.cleanData,la.cleanData=function(a){var d;if(Pb)Pb=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=la._data(f,"events"))&&d.$destroy&&la(f).triggerHandler("$destroy");b(a)}):C=S;aa.element= -C;xc=!0}}function Qb(b,a,c){if(!b)throw Da("areq",a||"?",c||"required");return b}function lb(b,a,c){c&&F(b)&&(b=b[b.length-1]);Qb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ma(b,a){if("hasOwnProperty"===b)throw Da("badname",a);}function yc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+ -d[2];for(d=d[0];d--;)c=c.lastChild;f=Xa(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";m(f,function(a){e.appendChild(a)});return e}function S(b){if(b instanceof S)return b;var a;J(b)&&(b=T(b),a=!0);if(!(this instanceof S)){if(a&&"<"!=b.charAt(0))throw Sb("nosel");return new S(b)}if(a){a=W;var c;b=(c=sf.exec(b))?[a.createElement(c[1])]:(c=Ic(b,a))?c.childNodes:[]}Jc(this,b)}function Tb(b){return b.cloneNode(!0)}function pb(b,a){a||qb(b); -if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;dk&&this.remove(s.key);return b}},get:function(a){if(k").parent()[0])});var f=X(a,b,a,c,d,e);D.$$addScopeClass(a); -var h=null;return function(b,c,d){Qb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);h||(h=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==h?C(Wb(h,C("
").append(a).html())):c?La.clone.call(a):a;if(g)for(var k in g)d.data("$"+k+"Controller",g[k].instance);D.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function X(a,b,c,d,e,f){function h(a, -c,d,e){var f,k,l,s,n,r,M;if(p)for(M=Array(c.length),s=0;sI.priority)break;if(U=I.scope)I.templateUrl||(H(U)?(Oa("new/isolated scope",w||N,I,x),w=I):Oa("new/isolated scope",w,I,x)),N=N||I;B=I.name;!I.templateUrl&& -I.controller&&(U=I.controller,Q=Q||ma(),Oa("'"+B+"' controller",Q[B],I,x),Q[B]=I);if(U=I.transclude)m=!0,I.$$tlb||(Oa("transclusion",X,I,x),X=I),"element"==U?(Na=!0,L=I.priority,U=x,x=d.$$element=C(W.createComment(" "+B+": "+d[B]+" ")),b=x[0],Y(f,ra.call(U,0),b),E=D(U,e,L,g&&g.name,{nonTlbTranscludeDirective:X})):(U=C(Tb(b)).contents(),x.empty(),E=D(U,e));if(I.template)if(ga=!0,Oa("template",z,I,x),z=I,U=G(I.template)?I.template(x,d):I.template,U=fa(U),I.replace){g=I;U=Rb.test(U)?Uc(Wb(I.templateNamespace, -T(U))):[];b=U[0];if(1!=U.length||b.nodeType!==pa)throw ha("tplrt",B,"");Y(f,x,b);O={$attr:{}};U=ba(b,[],O);var Xb=a.splice(K+1,a.length-(K+1));w&&A(U);a=a.concat(U).concat(Xb);P(d,O);O=a.length}else x.html(U);if(I.templateUrl)ga=!0,Oa("template",z,I,x),z=I,I.replace&&(g=I),y=S(a.splice(K,a.length-K),x,d,f,m&&E,k,l,{controllerDirectives:Q,newIsolateScopeDirective:w,templateDirective:z,nonTlbTranscludeDirective:X}),O=a.length;else if(I.compile)try{za=I.compile(x,d,E),G(za)?n(null,za,yb,R):za&&n(za.pre, -za.post,yb,R)}catch(V){c(V,va(x))}I.terminal&&(y.terminal=!0,L=Math.max(L,I.priority))}y.scope=N&&!0===N.scope;y.transcludeOnThisElement=m;y.elementTranscludeOnThisElement=Na;y.templateOnThisElement=ga;y.transclude=E;s.hasElementTranscludeDirective=Na;return y}function A(a){for(var b=0,c=a.length;bs.priority)&& --1!=s.restrict.indexOf(f)&&(k&&(s=Mb(s,{$$start:k,$$end:l})),b.push(s),h=s)}catch(M){c(M)}}return h}function E(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e"+b+"";return c.childNodes[0].childNodes;default:return b}}function Xb(a,b){if("srcdoc"==b)return ga.HTML;var c=ta(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return ga.RESOURCE_URL}function V(a,c,d,e,f){var h=Xb(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===ta(a))throw ha("selmulti", -va(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw ha("nodomevents");var n=g[e];n!==d&&(k=n&&b(n,!0,h,f),d=n);k&&(g[e]=k(a),(c[e]||(c[e]=[])).$$inter=!0,(g.$$observers&&g.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function Y(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=a)return b;for(;a--;)8===b[a].nodeType&&zf.call(b,a,1);return b}function Oe(){var b={},a=!1;this.register=function(a,d){Ma(a,"controller");H(a)?O(b,a):b[a]=d};this.allowGlobals=function(){a=!0};this.$get=["$injector", -"$window",function(c,d){function e(a,b,c,d){if(!a||!H(a.$scope))throw E("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,l){var k,q,n;h=!0===h;l&&J(l)&&(n=l);if(J(f)){l=f.match(Sc);if(!l)throw Af("ctrlfmt",f);q=l[1];n=n||l[3];f=b.hasOwnProperty(q)?b[q]:yc(g.$scope,q,!0)||(a?yc(d,q,!0):u);lb(f,q,!0)}if(h)return h=(F(f)?f[f.length-1]:f).prototype,k=Object.create(h||null),n&&e(g,n,k,q||f.name),O(function(){var a=c.invoke(f,k,g,q);a!==k&&(H(a)||G(a))&&(k=a,n&&e(g,n,k,q||f.name));return k}, -{instance:k,identifier:n});k=c.instantiate(f,g,q);n&&e(g,n,k,q||f.name);return k}}]}function Pe(){this.$get=["$window",function(b){return C(b.document)}]}function Qe(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Yb(b,a){if(J(b)){var c=b.replace(Bf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Wc))||(d=(d=c.match(Cf))&&Df[d[0]].test(c));d&&(b=qc(c))}}return b}function Xc(b){var a=ma(),c;J(b)?m(b.split("\n"),function(b){c=b.indexOf(":");var e= -K(T(b.substr(0,c)));b=T(b.substr(c+1));e&&(a[e]=a[e]?a[e]+", "+b:b)}):H(b)&&m(b,function(b,c){var f=K(c),g=T(b);f&&(a[f]=a[f]?a[f]+", "+g:g)});return a}function Yc(b){var a;return function(c){a||(a=Xc(b));return c?(c=a[K(c)],void 0===c&&(c=null),c):a}}function Zc(b,a,c,d){if(G(d))return d(b,a,c);m(d,function(d){b=d(b,a,c)});return b}function Te(){var b=this.defaults={transformResponse:[Yb],transformRequest:[function(a){return H(a)&&"[object File]"!==sa.call(a)&&"[object Blob]"!==sa.call(a)&&"[object FormData]"!== -sa.call(a)?Ya(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ea(Zb),put:ea(Zb),patch:ea(Zb)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return A(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=O({},a);b.data=a.data?Zc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status; -return 200<=a&&300>a?b:h.reject(b)}function d(a,b){var c,e={};m(a,function(a,d){G(a)?(c=a(b),null!=c&&(e[d]=c)):e[d]=a});return e}if(!aa.isObject(a))throw E("$http")("badreq",a);var e=O({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=O({},a.headers),f,g,h,c=O({},c.common,c[K(a.method)]);a:for(f in c){g=K(f);for