angular-cn/tools/public_api_guard
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
..
animations build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
common build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
compiler build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
core fix(core): provide `NgModuleRef` in `ViewContainerRef.createComponent`. (#15350) 2017-03-21 14:26:26 -05:00
forms fix(forms): make composition event buffering configurable (#15256) 2017-03-21 16:47:18 -05:00
http build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
platform-browser build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
platform-browser-dynamic build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
platform-server build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
platform-webworker build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
platform-webworker-dynamic build: fix paths to typings files so tsickle resolves imports correctly 2017-03-16 17:34:29 -07:00
router feat(router): add `ParamMap.keys` to get a list of parameters 2017-03-20 09:19:32 -07:00
upgrade feat(upgrade): use `ComponentFactory.inputs/outputs/ngContentSelectors` (#15214) 2017-03-17 13:52:50 -05:00