aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2013-10-12fix($animate): ensure that a timeStamp is created if not provided by the ↵Matias Niemelä
browser event Firefox and (sometimes) Opera may not provide a timeStamp value in their event when passed to the event handler. This may cause animations not to close properly. This fix will automatically create a timeStamp value for the event in this situation when missing. Closes #3053
2013-10-11fix($compile): abort compilation when duplicate element transclusionIgor Minar
Issue an error and abort compilation when two directives that ask for transclusion are found on a single element. This configuration is not supported and we previously failed to issue the error because in the case of element transclusion the compilation is re-started and this caused the compilation context to be lost. The ngRepeat directive has been special-cased to bypass this warning because it knows how to handle this scenario internally. This is not an ideal solution to the problem of multiple transclusions per element, we are hoping to have this configuration supported by the compiler in the future. See #4357. Closes #3893 Closes #4217 Closes #3307
2013-10-11fix(directives): correct priority of structural directivesIgor Minar
BREAKING CHANGE: the priority of ngRepeat, ngSwitchWhen, ngIf, ngInclude and ngView has changed. This could affect directives that explicitly specify their priority. In order to make ngRepeat, ngSwitchWhen, ngIf, ngInclude and ngView work together in all common scenarios their directives are being adjusted to achieve the following precendence: Directive | Old Priority | New Priority ============================================= ngRepeat | 1000 | 1000 --------------------------------------------- ngSwitchWhen | 500 | 800 --------------------------------------------- ngIf | 1000 | 600 --------------------------------------------- ngInclude/ngView | 1000 | 400
2013-10-11fix($compile): make order directives w/ same priority deterministicIgor Minar
Array.prototype.sort is speced out to be as potentionally unstable sort, which is how it's implemented in FF and IE. This has caused the order of directives with the same priority to vary between browsers. For consistency sake, we now consider directive name and registration, order when determining the order of directives with the same priority. Note: it is still possible to get into a situation when the directive order is underministic - when source files are loaded asynchronously in non-deterministic order and there are are directives registered with the same name and priority, the order in which they will be applied will depend on the file load order.
2013-10-11style: strip white space from filesIgor Minar
2013-10-11chore($compile): remove dead codeIgor Minar
2013-10-11docs(ngAnimate): fix typosHack Reactor Students
Closes #4375
2013-10-11docs(ngAnimate): fix link to ngClass pageSaul Maddox
Link was set to ngShow and it should be set to ngClass.
2013-10-10fix($animate): perform internal caching on getComputedStyle to boost the ↵Matias Niemelä
performance of CSS3 transitions/animations Closes #4011 Closes #4124
2013-10-10fix($animate): ensure structural animations skip all child animations even ↵Matias Niemelä
if no animation is present during compile Closes #3215
2013-10-10refactor($animate): queue all successive animations to use only one reflowMatias Niemelä
2013-10-10fix($animate): cancel any ongoing child animations during move and leave ↵Matias Niemelä
animations
2013-10-10fix($animate): ensure elapsedTime always considers delay valuesMatias Niemelä
2013-10-10refactor($animate): avoid checking for transition/animation support during ↵Matias Niemelä
each animation
2013-10-10docs(ngInit): add note on best practicesBrian Ford
2013-10-10fix(modules): stop leaking global variables in testsPete Bacon Darwin
The routeUtils.js file was declaring a number of functions that were leaking into other modules such as ngMocks causing tests to pass incorrectly. Closes #4360
2013-10-10refactor(location): $location now uses urlUtils, not RegExJeff Cross
The location service, and other portions of the application, were relying on a complicated regular expression to get parts of a URL. But there is already a private urlUtils provider, which relies on HTMLAnchorElement to provide this information, and is suitable for most cases. In order to make urlUtils more accessible in the absence of DI, its methods were converted to standalone functions available globally. The urlUtils.resolve method was renamed urlResolve, and was refactored to only take 1 argument, url, and not the 2nd "parse" boolean. The method now always returns a parsed url. All places in code which previously wanted a string instead of a parsed url can now get the value from the href property of the returned object. Tests were also added to ensure IPv6 addresses were handled correctly. Closes #3533 Closes #2950 Closes #3249
2013-10-10docs($provide): improve docs and examples furtherPete Bacon Darwin
Improve the "tracking" service example by adding a configuration option. Get better formatting of the generated code samples using <pre> tags. Move the detailed explanations into each function's documentation block. Improve the overview and list the constituent functions by significance. Closes #4302
2013-10-10docs($provide): improve examples and explanationsTim Ruffles
$provide's example seems awkward. Replace with more real-world example, using an injected service, where the service defined has a good reason to be a singleton. There's quite a lot of confusion around $provide: http://stackoverflow.com/search?q=angularjs+service+vs+factory Tests for example at: http://jsbin.com/EMabAv/1/edit?js,output
2013-10-09feat(ngRepeat): use block separator commentsjankuca
Issue: multi-elements ng-repeat (ng-repeat-start, ng-repeat-end) can contain elements with a trancluding directive. This directive changes content of the row (template) and ng-repeat does not work correctly (when removing/moving rows), because ng-repeat works with the original template (elements). This changes ng-repeat behavior to traverse the DOM to find current elements everytime we are moving/removing rows (if the template has multiple elements). Closes #3104
2013-10-09fix(jqLite): ignore class methods on comment elementsVojta Jina
Since c785267e jqLite uses setAttribute (rather than className property) in order to change classes. Some elements (eg. Comment) do not have this method which blows up. jQuery silently ignores these method calls (because it uses className), so to get the same behavior as jQuery, we check for setAttribute method first.
2013-10-09revert: fix($parse): handle promises returned from parsed function callsIgor Minar
This reverts commit 3a65822023119b71deab5e298c7ef2de204caa13. The change cased regressions in third party components that require promises from getter functions not to be unwrapped. Since we have deprecated the promise unwrapping support in $parse it doesn't make much sense to fix this issue and deal with regressions in third party code. Closes #4158
2013-10-09fix($parse): deprecate promise unwrapping and make it an opt-inIgor Minar
This commit disables promise unwrapping and adds $parseProvider.unwrapPromises() getter/setter api that allows developers to turn the feature back on if needed. Promise unwrapping support will be removed from Angular in the future and this setting only allows for enabling it during transitional period. If the unwrapping is enabled, Angular will log a warning about each expression that unwraps a promise (to reduce the noise, each expression is logged only onces). To disable this logging use `$parseProvider.logPromiseWarnings(false)`. Previously promises found anywhere in the expression during expression evaluation would evaluate to undefined while unresolved and to the fulfillment value if fulfilled. This is a feature that didn't prove to be wildly useful or popular, primarily because of the dichotomy between data access in templates (accessed as raw values) and controller code (accessed as promises). In most code we ended up resolving promises manually in controllers or automatically via routing and unifying the model access in this way. Other downsides of automatic promise unwrapping: - when building components it's often desirable to receive the raw promises - adds complexity and slows down expression evaluation - makes expression code pre-generation unattractive due to the amount of code that needs to be generated - makes IDE auto-completion and tool support hard - adds too much magic BREAKING CHANGE: $parse and templates in general will no longer automatically unwrap promises. This feature has been deprecated and if absolutely needed, it can be reenabled during transitional period via `$parseProvider.unwrapPromises(true)` api. Closes #4158 Closes #4270
2013-10-09docs($anchorScroll): fix example controller and styleBen Lesh
Changed controller name in example html to ScrollCtrl to match name in example js. Add styling to example html so scrollable area is not obtrusive to documentation page design. Closes #3898
2013-10-09docs($log): explain how to configure debug loggingHenry Hazan
Closes #4348
2013-10-09fix(ngMock.$interval): should use angular.isDefinedMark J. Titorenko
The newly introduced `$interval` mock service for ngMock calls `isDefined` in the global namespace which fails when used within unit tests. This change adds the missing `angular.` prefix to such `isDefined` calls. Closes #4334 Closes #4353
2013-10-08docs(jqLite): improve jqLite docsBrian Ford
2013-10-08fix(ngTouch): ngClick does not pass touchend event when jQuery is loadedSteven Sojka
The trigger handler event in jqLite takes an event object as a second parameter, but jQuery requires an array of parameters. This is causing the touchend event to not come thtough in the click handler when jQuery is loaded.
2013-10-08fix(ngTouch): add $event to ng-swipeAdam Kent
Existing documentation implies that an Event object should be available as `$event` on swipe directives, which previously was only working for `ng-click`. Closes #4071 Closes #4321
2013-10-08docs(angular.equals): fix simple typoMarc Tamlyn
- JavasScript -> Javascript Closes #4323
2013-10-07fix(input): `false` is no longer an empty value by defaultPete Bacon Darwin
`checkboxInputType` and `ngList` directives need to have special logic for whether they are empty or not. Previously this had been hard coded into their own directives or the `ngRequired` directive. This made it difficult to handle these special cases. This change factors out the question of whether an input is empty into a method `$isEmpty` on the `ngModelController`. The `ngRequired` directive now uses this method when testing for validity and directives, such as `checkbox` or `ngList` can override it to apply logic specific to their needs. Closes #3490, #3658, #2594
2013-10-07feat($interval): add a service wrapping setIntervalJulie
The $interval service simplifies creating and testing recurring tasks. This service does not increment $browser's outstanding request count, which means that scenario tests and Protractor tests will not timeout when a site uses a polling function registered by $interval. Provides a workaround for #2402. For unit tests, repeated tasks can be controlled using ngMock$interval's tick(), tickNext(), and tickAll() functions.
2013-10-07fix(ngScenario): remove redundant assignmentPete Bacon Darwin
Closes #4315
2013-10-07revert: refactor($parse): only instantiate lex/parse onceIgor Minar
This reverts commit 281feba4caffd14ffbd6dedfb95ad6415cff8483. Since Lexer and Parser objects are stateful it is not safe to reuse them for parsing of multiple expressions. After recent refactoring into prototypical style, the instantiation of these objects is so cheap that it's not a huge win to use singletons here.
2013-10-07fix(*): protect calls to hasOwnProperty in public APIPeter Bacon Darwin
Objects received from outside AngularJS may have had their `hasOwnProperty` method overridden with something else. In cases where we can do this without incurring a performance penalty we call directly on Object.prototype.hasOwnProperty to ensure that we use the correct method. Also, we have some internal hash objects, where the keys for the map are provided from outside AngularJS. In such cases we either prevent `hasOwnProperty` from being used as a key or provide some other way of preventing our objects from having their `hasOwnProperty` overridden. BREAKING CHANGE: Inputs with name equal to "hasOwnProperty" are not allowed inside form or ngForm directives. Before, inputs whose name was "hasOwnProperty" were quietly ignored and not added to the scope. Now a badname exception is thrown. Using "hasOwnProperty" for an input name would be very unusual and bad practice. Either do not include such an input in a `form` or `ngForm` directive or change the name of the input. Closes #3331
2013-10-07style(select): fix semicolons and varsPeter Bacon Darwin
2013-10-07docs(ngModel): fix grammar and improve clarityDave Peticolas
Closes #4291
2013-10-07refactor($parse): only instantiate lex/parse oncePeter Bacon Darwin
Closes #4286
2013-10-07docs(ngValue): add docs for ngValue directiveBrian Ford
Closes #4267
2013-10-05fix(rootScope): make stopPropagation only stop its own eventPete Bacon Darwin
All sibling event handlers residing on the same scope to were stopped if one of them called stopPropagation. Closes #4204
2013-10-05docs(a): change model.$save() into something less deceptiveMichiel Staessen
Closes #4215
2013-10-05docs(ngList): improve grammar and clarityDave Peticolas
2013-10-05docs(filter): add missing semi-colonTom Elovie Spruce
Closes #4273
2013-10-05docs($resource): remove extra "to" from $resource docsDavid Barker
Closes #4287
2013-10-04fix(ngResource): Remove request body from $deleteJen Bourey
Prevent the obj.$delete instance method from sending the resource as the request body. This commit uses the existing hasBody boolean to only set httpConfig.data for methods which should have a request body. Closes #4280
2013-10-04chore($parse): convert parser() and lex() to prototype-based codejankuca
This reduces memory consumption of parsed angular expressions and speeds up parsing. This JSPerf case demonstrates the performance boost: http://jsperf.com/closure-vs-prototype-ngparser Chrome: 1.5–2x boost FF: slightly slower (I would love to know why) IE: 4x boost To be clear, this doesn't have any impact on runtime performance of expressions as demostrated in this JSPerf: http://jsperf.com/angular-parser-changes Closes #3681
2013-10-04fix(routeProvider): parametrized routes do not match against locations that ↵Nicola Peduzzi
would not valorize each parameters.
2013-10-03fix($compile): fix (reverse) directive postLink fn execution orderIgor Minar
previously the compile/link fns executed in this order controlled via priority: - CompilePriorityHigh, CompilePriorityMedium, CompilePriorityLow - PreLinkPriorityHigh, PreLinkPriorityMedium, PreLinkPriorityLow - link children - PostLinkPriorityHigh, PostLinkPriorityMedium, PostLinkPriorityLow This was changed to: - CompilePriorityHigh, CompilePriorityMedium, CompilePriorityLow - PreLinkPriorityHigh, PreLinkPriorityMedium, PreLinkPriorityLow - link children - PostLinkPriorityLow, PostLinkPriorityMedium , PostLinkPriorityHigh Using this order the child transclusion directive that gets replaced onto the current element get executed correctly (see issue #3558), and more generally, the order of execution of post linking function makes more sense. The incorrect order was an oversight that has gone unnoticed for many suns and moons. (FYI: postLink functions are the default linking functions) BREAKING CHANGE: the order of postLink fn is now mirror opposite of the order in which corresponding preLinking and compile functions execute. Very few directives in practice rely on order of postLinking function (unlike on the order of compile functions), so in the rare case of this change affecting an existing directive, it might be necessary to convert it to a preLinking function or give it negative priority (look at the diff of this commit to see how an internal attribute interpolation directive was adjusted). Closes #3558
2013-10-03fix($compile): don't terminate compilation for regular transclusion directivesIgor Minar
Previously we would stop the compilation for both regular and element transclusion directives which was wrong. Only element transclusion directives should be terminal.
2013-10-03docs(angular.bind): clarify that bind is partial applicationJoe Hanink
The `angular.bind` function reflects the definition of "partial application", which reduces a function's arity rather than transforming a function with n args into a chain of n functions, each having a single arg. curry : f(x,y,z) -> f(x)(y)(z) partial application : f(x,y,z) -> f(x)(y,z) Closes #4239