angular-cn/tools
Kara Erickson 5efc86069f fix(forms): make composition event buffering configurable (#15256)
This commit fixes a regression where `ngModel` no longer syncs
letter by letter on Android devices, and instead syncs at the
end of every word. This broke when we introduced buffering of
IME events so IMEs like Pinyin keyboards or Katakana keyboards
wouldn't display composition strings. Unfortunately, iOS devices
and Android devices have opposite event behavior. Whereas iOS
devices fire composition events for IME keyboards only, Android
fires composition events for Latin-language keyboards. For
this reason, languages like English don't work as expected on
Android if we always buffer. So to support both platforms,
composition string buffering will only be turned on by default
for non-Android devices.

However, we have also added a `COMPOSITION_BUFFER_MODE` token
to make this configurable by the application. In some cases, apps
might might still want to receive intermediate values. For example,
some inputs begin searching based on Latin letters before a
character selection is made.

As a provider, this is fairly flexible. If you want to turn
composition buffering off, simply provide the token at the top
level:

```ts
providers: [
   {provide: COMPOSITION_BUFFER_MODE, useValue: false}
]
```

Or, if you want to change the mode  based on locale or platform,
you can use a factory:

```ts
import {shouldUseBuffering} from 'my/lib';

....
providers: [
   {provide: COMPOSITION_BUFFER_MODE, useFactory: shouldUseBuffering}
]
```

Closes #15079.

PR Close #15256
2017-03-21 16:47:18 -05:00
..
@angular/tsc-wrapped fix(tsc-wrapped): emit flat module format correctly on Windows (#15215) 2017-03-17 15:35:28 -05:00
build chore(build): remove unused build/util 2016-11-07 10:32:00 -08:00
cjs-jasmine refactor: update paths from modules/@angular to packages 2017-03-08 16:29:28 -08:00
code.angularjs.org build(publish): remove unneeded add-license-to-rx (#12734) 2016-11-10 15:56:14 -08:00
gulp-tasks build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
karma refactor: add license header to JS files & format files (#12081) 2016-10-04 20:39:20 -07:00
npm chore(npm): clean up clean-shrinkwrap script 2016-10-31 11:26:59 -07:00
public_api_guard fix(forms): make composition event buffering configurable (#15256) 2017-03-21 16:47:18 -05:00
travis refactor: add license header to JS files & format files (#12081) 2016-10-04 20:39:20 -07:00
tree-shaking-test refactor: update paths from modules/@angular to packages 2017-03-08 16:29:28 -08:00
tsc-watch refactor: update paths from modules/@angular to packages 2017-03-08 16:29:28 -08:00
tslint fix: build and test fixes for TS 2.1 (#13294) 2017-02-08 11:32:40 -06:00
validate-commit-message fix: validation messages support animations scope 2017-02-10 19:05:00 -06:00
check-environment.js build: allow check-environment.js to be run directly 2017-03-05 08:41:26 -08:00
chromedriverpatch.js refactor: add license header to JS files & format files (#12081) 2016-10-04 20:39:20 -07:00
jsconfig.json chore(vscode): add jsconfig.json and remove .settings dir 2015-10-29 13:53:21 +00:00
tsconfig.json build(aio): move doc-gen stuff from angular.io (#14097) 2017-01-26 23:46:59 -08:00
types.d.ts fix(fakeAsync): have fakeAsync use Proxy zone. (#10797) 2016-08-19 12:10:53 -07:00
utils.inc feat(bundle): add script to push bundles to code.angularjs.org 2015-04-14 14:50:53 -07:00