Android TextInput now supports strings for autoCapitalize

Summary:
Similar to D15909582, this change makes the Android TextInput take strings for the value of autoCapitalize and not just numbers. As we are going to stop sending view configs from native and instead hardcode them in JS we can't do that anymore.

In this commit we are supporting the old style as well as the new style.

Changelog:
[Android] [Internal] - Supporting autoCapitalize as string to clean up internal TextInput.js file

Reviewed By: mdvacca

Differential Revision: D15911323

fbshipit-source-id: b236fdb314489cc1ef33f9214ff2d6b0e28b7310
This commit is contained in:
Eli White
2019-06-21 16:10:43 -07:00
committed by Facebook Github Bot
parent 173a5cc222
commit 38d974e6a2
@@ -28,10 +28,12 @@ import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
import com.facebook.common.logging.FLog;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.Dynamic;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.bridge.ReadableMap;
import com.facebook.react.bridge.ReadableType;
import com.facebook.react.bridge.UIManager;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.module.annotations.ReactModule;
@@ -640,13 +642,34 @@ public class ReactTextInputManager extends BaseViewManager<ReactEditText, Layout
checkPasswordType(view);
}
// This prop temporarily takes both numbers and strings.
// Number values are deprecated and will be removed in a future release.
// See T46146267
@ReactProp(name = "autoCapitalize")
public void setAutoCapitalize(ReactEditText view, int autoCapitalize) {
public void setAutoCapitalize(ReactEditText view, Dynamic autoCapitalize) {
int autoCapitalizeValue = InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
if (autoCapitalize.getType() == ReadableType.Number) {
autoCapitalizeValue = autoCapitalize.asInt();
} else if (autoCapitalize.getType() == ReadableType.String) {
final String autoCapitalizeStr = autoCapitalize.asString();
if (autoCapitalizeStr.equals("none")) {
autoCapitalizeValue = 0;
} else if (autoCapitalizeStr.equals("characters")) {
autoCapitalizeValue = InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS;
} else if (autoCapitalizeStr.equals("words")) {
autoCapitalizeValue = InputType.TYPE_TEXT_FLAG_CAP_WORDS;
} else if (autoCapitalizeStr.equals("sentences")) {
autoCapitalizeValue = InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
}
}
updateStagedInputTypeFlag(
view,
InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_CAP_WORDS |
InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS,
autoCapitalize);
autoCapitalizeValue);
}
@ReactProp(name = "keyboardType")