angularjs-rails 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/lib/angularjs-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/angular-animate.js +1 -1
  4. data/vendor/assets/javascripts/angular-aria.js +12 -1
  5. data/vendor/assets/javascripts/angular-cookies.js +1 -1
  6. data/vendor/assets/javascripts/angular-loader.js +2 -2
  7. data/vendor/assets/javascripts/angular-messages.js +1 -1
  8. data/vendor/assets/javascripts/angular-mocks.js +88 -1
  9. data/vendor/assets/javascripts/angular-resource.js +1 -1
  10. data/vendor/assets/javascripts/angular-route.js +10 -6
  11. data/vendor/assets/javascripts/angular-sanitize.js +1 -1
  12. data/vendor/assets/javascripts/angular-scenario.js +143 -46
  13. data/vendor/assets/javascripts/angular-touch.js +1 -1
  14. data/vendor/assets/javascripts/angular.js +143 -46
  15. data/vendor/assets/javascripts/unstable/angular-animate.js +1 -1
  16. data/vendor/assets/javascripts/unstable/angular-aria.js +12 -1
  17. data/vendor/assets/javascripts/unstable/angular-cookies.js +1 -1
  18. data/vendor/assets/javascripts/unstable/angular-loader.js +2 -2
  19. data/vendor/assets/javascripts/unstable/angular-messages.js +1 -1
  20. data/vendor/assets/javascripts/unstable/angular-mocks.js +88 -1
  21. data/vendor/assets/javascripts/unstable/angular-resource.js +1 -1
  22. data/vendor/assets/javascripts/unstable/angular-route.js +10 -6
  23. data/vendor/assets/javascripts/unstable/angular-sanitize.js +1 -1
  24. data/vendor/assets/javascripts/unstable/angular-scenario.js +143 -46
  25. data/vendor/assets/javascripts/unstable/angular-touch.js +1 -1
  26. data/vendor/assets/javascripts/unstable/angular.js +143 -46
  27. metadata +2 -2
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.1
2
+ * @license AngularJS v1.3.2
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.1
2
+ * @license AngularJS v1.3.2
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -71,7 +71,7 @@ function minErr(module, ErrorConstructor) {
71
71
  return match;
72
72
  });
73
73
 
74
- message = message + '\nhttp://errors.angularjs.org/1.3.1/' +
74
+ message = message + '\nhttp://errors.angularjs.org/1.3.2/' +
75
75
  (module ? module + '/' : '') + code;
76
76
  for (i = 2; i < arguments.length; i++) {
77
77
  message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
@@ -2089,11 +2089,11 @@ function setupModuleLoader(window) {
2089
2089
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
2090
2090
  */
2091
2091
  var version = {
2092
- full: '1.3.1', // all of these placeholder strings will be replaced by grunt's
2092
+ full: '1.3.2', // all of these placeholder strings will be replaced by grunt's
2093
2093
  major: 1, // package task
2094
2094
  minor: 3,
2095
- dot: 1,
2096
- codeName: 'spectral-lobster'
2095
+ dot: 2,
2096
+ codeName: 'cardiovasculatory-magnification'
2097
2097
  };
2098
2098
 
2099
2099
 
@@ -6270,10 +6270,17 @@ function $TemplateCacheProvider() {
6270
6270
  *
6271
6271
  *
6272
6272
  * @param {string|DOMElement} element Element or HTML string to compile into a template function.
6273
- * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives.
6273
+ * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED.
6274
+ *
6275
+ * <div class="alert alert-error">
6276
+ * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it
6277
+ * e.g. will not use the right outer scope. Please pass the transclude function as a
6278
+ * `parentBoundTranscludeFn` to the link function instead.
6279
+ * </div>
6280
+ *
6274
6281
  * @param {number} maxPriority only apply directives lower than given priority (Only effects the
6275
6282
  * root element(s), not their children)
6276
- * @returns {function(scope, cloneAttachFn=)} a link function which is used to bind template
6283
+ * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template
6277
6284
  * (a DOM element/tree) to a scope. Where:
6278
6285
  *
6279
6286
  * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to.
@@ -6285,6 +6292,19 @@ function $TemplateCacheProvider() {
6285
6292
  * * `clonedElement` - is a clone of the original `element` passed into the compiler.
6286
6293
  * * `scope` - is the current scope with which the linking function is working with.
6287
6294
  *
6295
+ * * `options` - An optional object hash with linking options. If `options` is provided, then the following
6296
+ * keys may be used to control linking behavior:
6297
+ *
6298
+ * * `parentBoundTranscludeFn` - the transclude function made available to
6299
+ * directives; if given, it will be passed through to the link functions of
6300
+ * directives found in `element` during compilation.
6301
+ * * `transcludeControllers` - an object hash with keys that map controller names
6302
+ * to controller instances; if given, it will make the controllers
6303
+ * available to directives.
6304
+ * * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add
6305
+ * the cloned elements; only needed for transcludes that are allowed to contain non html
6306
+ * elements (e.g. SVG elements). See also the directive.controller property.
6307
+ *
6288
6308
  * Calling the linking function returns the element of the template. It is either the original
6289
6309
  * element passed in, or the clone of the element if the `cloneAttachFn` is provided.
6290
6310
  *
@@ -6803,8 +6823,22 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
6803
6823
  maxPriority, ignoreDirective, previousCompileContext);
6804
6824
  compile.$$addScopeClass($compileNodes);
6805
6825
  var namespace = null;
6806
- return function publicLinkFn(scope, cloneConnectFn, transcludeControllers, parentBoundTranscludeFn, futureParentElement) {
6826
+ return function publicLinkFn(scope, cloneConnectFn, options) {
6807
6827
  assertArg(scope, 'scope');
6828
+
6829
+ options = options || {};
6830
+ var parentBoundTranscludeFn = options.parentBoundTranscludeFn,
6831
+ transcludeControllers = options.transcludeControllers,
6832
+ futureParentElement = options.futureParentElement;
6833
+
6834
+ // When `parentBoundTranscludeFn` is passed, it is a
6835
+ // `controllersBoundTransclude` function (it was previously passed
6836
+ // as `transclude` to directive.link) so we must unwrap it to get
6837
+ // its `boundTranscludeFn`
6838
+ if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) {
6839
+ parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude;
6840
+ }
6841
+
6808
6842
  if (!namespace) {
6809
6843
  namespace = detectNamespaceForChildElements(futureParentElement);
6810
6844
  }
@@ -6974,7 +7008,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
6974
7008
  transcludedScope.$$transcluded = true;
6975
7009
  }
6976
7010
 
6977
- return transcludeFn(transcludedScope, cloneFn, controllers, previousBoundTranscludeFn, futureParentElement);
7011
+ return transcludeFn(transcludedScope, cloneFn, {
7012
+ parentBoundTranscludeFn: previousBoundTranscludeFn,
7013
+ transcludeControllers: controllers,
7014
+ futureParentElement: futureParentElement
7015
+ });
6978
7016
  };
6979
7017
 
6980
7018
  return boundTranscludeFn;
@@ -7442,7 +7480,13 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
7442
7480
  isolateScope = scope.$new(true);
7443
7481
  }
7444
7482
 
7445
- transcludeFn = boundTranscludeFn && controllersBoundTransclude;
7483
+ if (boundTranscludeFn) {
7484
+ // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn`
7485
+ // is later passed as `parentBoundTranscludeFn` to `publicLinkFn`
7486
+ transcludeFn = controllersBoundTransclude;
7487
+ transcludeFn.$$boundTransclude = boundTranscludeFn;
7488
+ }
7489
+
7446
7490
  if (controllerDirectives) {
7447
7491
  // TODO: merge `controllers` and `elementControllers` into single object.
7448
7492
  controllers = {};
@@ -12201,64 +12245,85 @@ function setter(obj, path, setValue, fullExp) {
12201
12245
  return setValue;
12202
12246
  }
12203
12247
 
12204
- var getterFnCache = createMap();
12248
+ var getterFnCacheDefault = createMap();
12249
+ var getterFnCacheExpensive = createMap();
12250
+
12251
+ function isPossiblyDangerousMemberName(name) {
12252
+ return name == 'constructor';
12253
+ }
12205
12254
 
12206
12255
  /**
12207
12256
  * Implementation of the "Black Hole" variant from:
12208
12257
  * - http://jsperf.com/angularjs-parse-getter/4
12209
12258
  * - http://jsperf.com/path-evaluation-simplified/7
12210
12259
  */
12211
- function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp) {
12260
+ function cspSafeGetterFn(key0, key1, key2, key3, key4, fullExp, expensiveChecks) {
12212
12261
  ensureSafeMemberName(key0, fullExp);
12213
12262
  ensureSafeMemberName(key1, fullExp);
12214
12263
  ensureSafeMemberName(key2, fullExp);
12215
12264
  ensureSafeMemberName(key3, fullExp);
12216
12265
  ensureSafeMemberName(key4, fullExp);
12266
+ var eso = function(o) {
12267
+ return ensureSafeObject(o, fullExp);
12268
+ };
12269
+ var eso0 = (expensiveChecks || isPossiblyDangerousMemberName(key0)) ? eso : identity;
12270
+ var eso1 = (expensiveChecks || isPossiblyDangerousMemberName(key1)) ? eso : identity;
12271
+ var eso2 = (expensiveChecks || isPossiblyDangerousMemberName(key2)) ? eso : identity;
12272
+ var eso3 = (expensiveChecks || isPossiblyDangerousMemberName(key3)) ? eso : identity;
12273
+ var eso4 = (expensiveChecks || isPossiblyDangerousMemberName(key4)) ? eso : identity;
12217
12274
 
12218
12275
  return function cspSafeGetter(scope, locals) {
12219
12276
  var pathVal = (locals && locals.hasOwnProperty(key0)) ? locals : scope;
12220
12277
 
12221
12278
  if (pathVal == null) return pathVal;
12222
- pathVal = pathVal[key0];
12279
+ pathVal = eso0(pathVal[key0]);
12223
12280
 
12224
12281
  if (!key1) return pathVal;
12225
12282
  if (pathVal == null) return undefined;
12226
- pathVal = pathVal[key1];
12283
+ pathVal = eso1(pathVal[key1]);
12227
12284
 
12228
12285
  if (!key2) return pathVal;
12229
12286
  if (pathVal == null) return undefined;
12230
- pathVal = pathVal[key2];
12287
+ pathVal = eso2(pathVal[key2]);
12231
12288
 
12232
12289
  if (!key3) return pathVal;
12233
12290
  if (pathVal == null) return undefined;
12234
- pathVal = pathVal[key3];
12291
+ pathVal = eso3(pathVal[key3]);
12235
12292
 
12236
12293
  if (!key4) return pathVal;
12237
12294
  if (pathVal == null) return undefined;
12238
- pathVal = pathVal[key4];
12295
+ pathVal = eso4(pathVal[key4]);
12239
12296
 
12240
12297
  return pathVal;
12241
12298
  };
12242
12299
  }
12243
12300
 
12301
+ function getterFnWithEnsureSafeObject(fn, fullExpression) {
12302
+ return function(s, l) {
12303
+ return fn(s, l, ensureSafeObject, fullExpression);
12304
+ };
12305
+ }
12306
+
12244
12307
  function getterFn(path, options, fullExp) {
12308
+ var expensiveChecks = options.expensiveChecks;
12309
+ var getterFnCache = (expensiveChecks ? getterFnCacheExpensive : getterFnCacheDefault);
12245
12310
  var fn = getterFnCache[path];
12246
-
12247
12311
  if (fn) return fn;
12248
12312
 
12313
+
12249
12314
  var pathKeys = path.split('.'),
12250
12315
  pathKeysLength = pathKeys.length;
12251
12316
 
12252
12317
  // http://jsperf.com/angularjs-parse-getter/6
12253
12318
  if (options.csp) {
12254
12319
  if (pathKeysLength < 6) {
12255
- fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp);
12320
+ fn = cspSafeGetterFn(pathKeys[0], pathKeys[1], pathKeys[2], pathKeys[3], pathKeys[4], fullExp, expensiveChecks);
12256
12321
  } else {
12257
12322
  fn = function cspSafeGetter(scope, locals) {
12258
12323
  var i = 0, val;
12259
12324
  do {
12260
12325
  val = cspSafeGetterFn(pathKeys[i++], pathKeys[i++], pathKeys[i++], pathKeys[i++],
12261
- pathKeys[i++], fullExp)(scope, locals);
12326
+ pathKeys[i++], fullExp, expensiveChecks)(scope, locals);
12262
12327
 
12263
12328
  locals = undefined; // clear after first iteration
12264
12329
  scope = val;
@@ -12268,22 +12333,33 @@ function getterFn(path, options, fullExp) {
12268
12333
  }
12269
12334
  } else {
12270
12335
  var code = '';
12336
+ if (expensiveChecks) {
12337
+ code += 's = eso(s, fe);\nl = eso(l, fe);\n';
12338
+ }
12339
+ var needsEnsureSafeObject = expensiveChecks;
12271
12340
  forEach(pathKeys, function(key, index) {
12272
12341
  ensureSafeMemberName(key, fullExp);
12273
- code += 'if(s == null) return undefined;\n' +
12274
- 's='+ (index
12342
+ var lookupJs = (index
12275
12343
  // we simply dereference 's' on any .dot notation
12276
12344
  ? 's'
12277
12345
  // but if we are first then we check locals first, and if so read it first
12278
- : '((l&&l.hasOwnProperty("' + key + '"))?l:s)') + '.' + key + ';\n';
12346
+ : '((l&&l.hasOwnProperty("' + key + '"))?l:s)') + '.' + key;
12347
+ if (expensiveChecks || isPossiblyDangerousMemberName(key)) {
12348
+ lookupJs = 'eso(' + lookupJs + ', fe)';
12349
+ needsEnsureSafeObject = true;
12350
+ }
12351
+ code += 'if(s == null) return undefined;\n' +
12352
+ 's=' + lookupJs + ';\n';
12279
12353
  });
12280
12354
  code += 'return s;';
12281
12355
 
12282
12356
  /* jshint -W054 */
12283
- var evaledFnGetter = new Function('s', 'l', code); // s=scope, l=locals
12357
+ var evaledFnGetter = new Function('s', 'l', 'eso', 'fe', code); // s=scope, l=locals, eso=ensureSafeObject
12284
12358
  /* jshint +W054 */
12285
12359
  evaledFnGetter.toString = valueFn(code);
12286
-
12360
+ if (needsEnsureSafeObject) {
12361
+ evaledFnGetter = getterFnWithEnsureSafeObject(evaledFnGetter, fullExp);
12362
+ }
12287
12363
  fn = evaledFnGetter;
12288
12364
  }
12289
12365
 
@@ -12353,15 +12429,20 @@ function getValueOf(value) {
12353
12429
  * service.
12354
12430
  */
12355
12431
  function $ParseProvider() {
12356
- var cache = createMap();
12432
+ var cacheDefault = createMap();
12433
+ var cacheExpensive = createMap();
12357
12434
 
12358
- var $parseOptions = {
12359
- csp: false
12360
- };
12361
12435
 
12362
12436
 
12363
12437
  this.$get = ['$filter', '$sniffer', function($filter, $sniffer) {
12364
- $parseOptions.csp = $sniffer.csp;
12438
+ var $parseOptions = {
12439
+ csp: $sniffer.csp,
12440
+ expensiveChecks: false
12441
+ },
12442
+ $parseOptionsExpensive = {
12443
+ csp: $sniffer.csp,
12444
+ expensiveChecks: true
12445
+ };
12365
12446
 
12366
12447
  function wrapSharedExpression(exp) {
12367
12448
  var wrapped = exp;
@@ -12378,13 +12459,14 @@ function $ParseProvider() {
12378
12459
  return wrapped;
12379
12460
  }
12380
12461
 
12381
- return function $parse(exp, interceptorFn) {
12462
+ return function $parse(exp, interceptorFn, expensiveChecks) {
12382
12463
  var parsedExpression, oneTime, cacheKey;
12383
12464
 
12384
12465
  switch (typeof exp) {
12385
12466
  case 'string':
12386
12467
  cacheKey = exp = exp.trim();
12387
12468
 
12469
+ var cache = (expensiveChecks ? cacheExpensive : cacheDefault);
12388
12470
  parsedExpression = cache[cacheKey];
12389
12471
 
12390
12472
  if (!parsedExpression) {
@@ -12393,8 +12475,9 @@ function $ParseProvider() {
12393
12475
  exp = exp.substring(2);
12394
12476
  }
12395
12477
 
12396
- var lexer = new Lexer($parseOptions);
12397
- var parser = new Parser(lexer, $filter, $parseOptions);
12478
+ var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions;
12479
+ var lexer = new Lexer(parseOptions);
12480
+ var parser = new Parser(lexer, $filter, parseOptions);
12398
12481
  parsedExpression = parser.parse(exp);
12399
12482
 
12400
12483
  if (parsedExpression.constant) {
@@ -12567,7 +12650,7 @@ function $ParseProvider() {
12567
12650
  var result = interceptorFn(value, scope, locals);
12568
12651
  // we only return the interceptor's result if the
12569
12652
  // initial value is defined (for bind-once)
12570
- return isDefined(value) ? result : value;
12653
+ return isDefined(value) || interceptorFn.$stateful ? result : value;
12571
12654
  };
12572
12655
 
12573
12656
  // Propagate $$watchDelegates other then inputsWatchDelegate
@@ -13300,6 +13383,10 @@ function $RootScopeProvider() {
13300
13383
  expect(parent.salutation).toEqual('Hello');
13301
13384
  * ```
13302
13385
  *
13386
+ * When interacting with `Scope` in tests, additional helper methods are available on the
13387
+ * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional
13388
+ * details.
13389
+ *
13303
13390
  *
13304
13391
  * @param {Object.<string, function()>=} providers Map of service factory which need to be
13305
13392
  * provided for the current scope. Defaults to {@link ng}.
@@ -13738,6 +13825,9 @@ function $RootScopeProvider() {
13738
13825
  newValue = _value;
13739
13826
  var newLength, key, bothNaN, newItem, oldItem;
13740
13827
 
13828
+ // If the new value is undefined, then return undefined as the watch may be a one-time watch
13829
+ if (isUndefined(newValue)) return;
13830
+
13741
13831
  if (!isObject(newValue)) { // if primitive
13742
13832
  if (oldValue !== newValue) {
13743
13833
  oldValue = newValue;
@@ -18540,7 +18630,7 @@ var inputType = {
18540
18630
 
18541
18631
  /**
18542
18632
  * @ngdoc input
18543
- * @name input[dateTimeLocal]
18633
+ * @name input[datetime-local]
18544
18634
  *
18545
18635
  * @description
18546
18636
  * Input with datetime validation and transformation. In browsers that do not yet support
@@ -19916,9 +20006,6 @@ var VALID_CLASS = 'ng-valid',
19916
20006
  * };
19917
20007
  * ```
19918
20008
  *
19919
- * @param {string} name The name of the validator.
19920
- * @param {Function} validationFn The validation function that will be run.
19921
- *
19922
20009
  * @property {Array.<Function>} $viewChangeListeners Array of functions to execute whenever the
19923
20010
  * view value has changed. It is called with no arguments, and its return value is ignored.
19924
20011
  * This can be used in place of additional $watches against the model value.
@@ -19932,6 +20019,7 @@ var VALID_CLASS = 'ng-valid',
19932
20019
  * @property {boolean} $dirty True if user has already interacted with the control.
19933
20020
  * @property {boolean} $valid True if there is no error.
19934
20021
  * @property {boolean} $invalid True if at least one error on the control.
20022
+ * @property {string} $name The name attribute of the control.
19935
20023
  *
19936
20024
  * @description
19937
20025
  *
@@ -20632,7 +20720,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
20632
20720
  * - {@link input[email] email}
20633
20721
  * - {@link input[url] url}
20634
20722
  * - {@link input[date] date}
20635
- * - {@link input[dateTimeLocal] dateTimeLocal}
20723
+ * - {@link input[datetime-local] datetime-local}
20636
20724
  * - {@link input[time] time}
20637
20725
  * - {@link input[month] month}
20638
20726
  * - {@link input[week] week}
@@ -21112,12 +21200,17 @@ var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
21112
21200
  * @name ngValue
21113
21201
  *
21114
21202
  * @description
21115
- * Binds the given expression to the value of `option` or `input[radio]`, so
21116
- * that when the element is selected, the `ngModel` of that element is set to
21203
+ * Binds the given expression to the value of `<option>` or {@link input[radio] `input[radio]`},
21204
+ * so that when the element is selected, the {@link ngModel `ngModel`} of that element is set to
21117
21205
  * the bound value.
21118
21206
  *
21119
- * `ngValue` is useful when dynamically generating lists of radio buttons using `ng-repeat`, as
21120
- * shown below.
21207
+ * `ngValue` is useful when dynamically generating lists of radio buttons using
21208
+ * {@link ngRepeat `ngRepeat`}, as shown below.
21209
+ *
21210
+ * Likewise, `ngValue` can be used to generate `<option>` elements for
21211
+ * the {@link select `select`} element. In that case however, only strings are supported
21212
+ * for the `value `attribute, so the resulting `ngModel` will always be a string.
21213
+ * Support for `select` models with non-string values is available via `ngOptions`.
21121
21214
  *
21122
21215
  * @element input
21123
21216
  * @param {string=} ngValue angular expression, whose value will be bound to the `value` attribute
@@ -22541,7 +22634,11 @@ forEach(
22541
22634
  return {
22542
22635
  restrict: 'A',
22543
22636
  compile: function($element, attr) {
22544
- var fn = $parse(attr[directiveName]);
22637
+ // We expose the powerful $event object on the scope that provides access to the Window,
22638
+ // etc. that isn't protected by the fast paths in $parse. We explicitly request better
22639
+ // checks at the cost of speed since event handler expressions are not executed as
22640
+ // frequently as regular change detection.
22641
+ var fn = $parse(attr[directiveName], /* interceptorFn */ null, /* expensiveChecks */ true);
22545
22642
  return function ngEventHandler(scope, element) {
22546
22643
  element.on(eventName, function(event) {
22547
22644
  var callback = function() {
@@ -23376,7 +23473,7 @@ var ngIncludeFillContentDirective = ['$compile',
23376
23473
  $compile(jqLiteBuildFragment(ctrl.template, document).childNodes)(scope,
23377
23474
  function namespaceAdaptedClone(clone) {
23378
23475
  $element.append(clone);
23379
- }, undefined, undefined, $element);
23476
+ }, {futureParentElement: $element});
23380
23477
  return;
23381
23478
  }
23382
23479
 
@@ -25340,7 +25437,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) {
25340
25437
  if (multiple) {
25341
25438
  return isDefined(selectedSet.remove(callExpression(compareValueFn, key, value)));
25342
25439
  } else {
25343
- return viewValue == callExpression(compareValueFn, key, value);
25440
+ return viewValue === callExpression(compareValueFn, key, value);
25344
25441
  }
25345
25442
  };
25346
25443
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.1
2
+ * @license AngularJS v1.3.2
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license AngularJS v1.3.1
2
+ * @license AngularJS v1.3.2
3
3
  * (c) 2010-2014 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
@@ -243,6 +243,17 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
243
243
  .directive('ngDisabled', ['$aria', function($aria) {
244
244
  return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
245
245
  }])
246
+ .directive('ngMessages', function() {
247
+ return {
248
+ restrict: 'A',
249
+ require: '?ngMessages',
250
+ link: function(scope, elem, attr, ngMessages) {
251
+ if (!elem.attr('aria-live')) {
252
+ elem.attr('aria-live', 'assertive');
253
+ }
254
+ }
255
+ };
256
+ })
246
257
  .directive('ngClick', ngAriaTabindex)
247
258
  .directive('ngDblclick', ngAriaTabindex);
248
259