Tag: v1.5.0-rc.2
-
fix(ngTouch): deprecate ngClick and disable it by default
This commit deprecates the ngClick directive from the ngTouch module. Additionally, it disables it by default. It can be enabled in the new $touchProvider with the $touchProvider.ngClickOverrideEnabled() method. The directive was conceived to remove the 300ms delay for click events on mobile browsers, by sending a synthetic click event on touchstart. It also tried to make sure that the original click event that the browser sends after 300ms was "busted", so that no redundant "ghost-clicks" appear. There are various reasons why the directive is being deprecated. - "This is an ugly, terrible hack!" (says so in the source) - It is plagued by various bugs that are hard to fix / test for all platforms (see below) - Simply including ngTouch activates the ngClick override, which means even if you simply want to use ngSwipe, you may break parts of your app - There exist alternatives for removing the 300ms delay, that can be used very well with Angular: [FastClick](https://github.com/ftlabs/fastclick), [Tappy!](https://github.com/filamentgroup/tappy/) (There's also hammer.js for touch events / gestures) - The 300ms delay itself is on the way out - Chrome and Firefox for Android remove the 300ms delay when the usual `<meta name="viewport" content="width=device-width">` is set. In IE, the `touch-action` css property can be set to `none` or `manipulation` to remove the delay. Finally, since iOs 8, Safari doesn't delay "slow" taps anymore. There are some caveats though, which can be found in this excellent article on which this summary is based: http://developer.telerik.com/featured/300-ms-click-delay-ios-8/ Note that this change does not affect the `ngSwipe` directive. Issues with interactive elements (input, a etc.) when parent element has ngClick: Closes #4030 Closes #5307 Closes #6001 Closes #6432 Closes #7231 Closes #11358 Closes #12082 Closes #12153 Closes #12392 Closes #12545 Closes #12867 Closes #13213 Closes #13558 Other issues: - incorrect event order - incorrect event propagation - ghost-clicks / failing clickbusting with corner cases - browser specific bugs - et al. Closes #3296 Closes #3347 Closes #3447 Closes #3999 Closes #4428 Closes #6251 Closes #6330 Closes #7134 Closes #7935 Closes #9724 Closes #9744 Closes #9872 Closes #10211 Closes #10366 Closes #10918 Closes #11197 Closes #11261 Closes #11342 Closes #11577 Closes #12150 Closes #12317 Closes #12455 Closes #12734 Closes #13122 Closes #13272 Closes #13447 BREAKING CHANGE: The `ngClick` override directive from the `ngTouch` module is **deprecated and disabled by default**. This means that on touch-based devices, users might now experience a 300ms delay before a click event is fired. If you rely on this directive, you can still enable it with the `$touchProvider.ngClickOverrideEnabled()`method: ```js angular.module('myApp').config(function($touchProvider) { $touchProvider.ngClickOverrideEnabled(true); }); ``` For migration, we recommend using [FastClick](https://github.com/ftlabs/fastclick). Also note that modern browsers remove the 300ms delay under some circumstances: - Chrome and Firefox for Android remove the 300ms delay when the well-known `<meta name="viewport" content="width=device-width">` is set - Internet Explorer removes the delay when `touch-action` css property is set to `none` or `manipulation` - Since iOs 8, Safari removes the delay on so-called "slow taps" See this [article by Telerik](http://developer.telerik.com/featured/300-ms-click-delay-ios-8/) for more info on the topic. Note that this change does not affect the `ngSwipe` directive.
-
fix($animateCss): cancel fallback timeout when animation ends normally
Previously, css animations would not cancel the timeout when the animation ends normally (calling end explicitly / transitionEnd event). This meant that the timeout callback fn was always called after 150% of the animation time was over. Since the animation was already closed at this point, it would not do any work twice, but simply remove the timer data from the element. This commit changes the behavior to cancel the timeout and remove the data when it is found during animation closing. Closes #13787
-
docs(CHANGELOG): remove duplicates and fix typos
Removed some entries from `v1.5.0-beta.2` which are also included in `v1.5.0-beta.1` and fixed some typos. Closes #13858
-
docs($cookiesProvider): clarify parameters description
Fixed a grammatical mistake ("equals to"), made hyphenation consistent, fixed punctuation and clarified the sentence structure. Closes #13853 -
docs($resource): fix an unmatched link
Narretz committedJan 27, 2016 -
fix($parse): Preserve expensive checks when runnning $eval inside an …
…expression When running an expression with expensive checks, there is a call to `$eval` or `$evalAsync` then that expression is also evaluated using expensive checks Closes: #13850
-
fix($compile): properly denormalize templates when only one of the st…
…art/end symbols is different Previously, if either of the start/end interpolation symbols remained unchanged (i.e. `{{` or `}}`), then directive templates would not be denormalized properly. Changing only one of the start/end symbols (but not both) is an uncommon but legitimate usecase. Closes #13848 -
docs(guide/directives): improve Protractor test for bindings
This needs Protractor >= 1.3.0 to work. Closes #9330
-
feat($resource): add support for timeout in cancellable actions
Old behavior: actions can be either cancellable or have a numeric timeout. When having both defined, cancellable was ignored. With this commit: it's possible for actions to have both cancellable:true and numeric timeout defined. Example usage: ```js var Post = $resource('/posts/:id', {id: '@id'}, { get: { method: 'GET', cancellable: true, timeout: 10000 } }); var currentPost = Post.get({id: 1}); ... // the next request can cancel the previous one currentPost.$cancelRequest(); currentPost = Post.get({id: 2}); // any of those requests will also timeout, if the response // doesn't come within 10 seconds ``` Closes #13824 -
style(i18n): improve indentation for readability
petebacondarwin committedJan 26, 2016 -
chore(i18n): fix up i18n testing tools
petebacondarwin committedJan 26, 2016 -
feat($locale): Include original locale ID in $locale
petebacondarwin committedJan 26, 2016 Most systems use *IETF language tag* codes which are typically a combination of the ISO 639 language code and ISO 3166-1 country code with an underscore or hyphen delimiter. For example `en_US`, `en_AU`, etc. Whilst the `$locale.id` comes close, the lowercase format makes it impossible to transform to an IETF tag reliably. For example, it would be impossible to deduce `en_Dsrt_US` from `en-dsrt-us`. Closes #13390
-
Closes #13843
-
docs(guide/interpolation): fix dangling link
Narretz committedJan 25, 2016 -
docs(guide/directives): link to the scope property docs
Narretz committedJan 25, 2016 Closes #12500
-
docs(error/modulerr): add additional debugging help
This simple tip can help to diagnose the error. Closes #12958
-
docs(tutorial/Tutorial): Java installation
Add step to ensure java is installed on development machine. Closes #12938
-
docs(guide/Modules): update style guide link
The linked blog post recommends John Papa's Guide. Closes #12898
-
fix(dateFilter): follow the CLDR on pattern escape sequences
When there are two single quotes "''" (quotes for clarification) that are not part of an escape sequence, then this sequence should be handled as one single quote. See http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns second and forth examples Closes #12839
-
style(src): delete whitespace and use single quotes
This change edits syntax for code consistency. It removes whitespace to match the style of the rest of the code, and changes double quotes to single quotes to conform with Google's JavaScript Style Guide. Closes #12889
-
docs(error/unpr): add hint about using `ngStrictDi`
The unknown provider error often happens when code is minified and one did not use the correct syntax that supports minification. It's frustrating to have to hunt for a bug in minified code, so adding the simple hint that `ngStrictDi` will tell you what is wrong in the original code will save you quite some trouble. Closes #12717
-
docs(tutorial/step-7): add troubleshooting instructions
Show troubleshooting instructions as in step 11. Closes #12715
-
-
fix(ngAnimate): properly cancel-out previously running class-based an…
…imations Prior to this fix the addition and removal of a CSS class via ngAnimate would cause flicker effects because $animate was unable to keep track of the CSS classes once they were applied to the element. This fix ensures that ngAnimate always keeps a reference to the classes in the currently running animation so that cancelling works accordingly. The commit also adds a test for a previously untested animation merge path. Closes #10156 Closes #13822
-
docs(tutorial/step_12): change "click" to "hover"
Should be "hover" not "click", since we trigger the change at "mouseenter", not "click". Closes #13831
-
fix(ngSanitize): Blacklist the attribute `usemap`
Given that the attribute `name` is blacklisted, the attribute `usemap` should be blacklisted too. Closes: ##13826