mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 02:54:11 +08:00
feat: add integer only keyboard type for text-field and for all editable text components
This commit is contained in:
@ -38,7 +38,7 @@ export abstract class EditableTextBase extends TextBase implements EditableTextB
|
||||
export const placeholderColorProperty = new CssProperty<Style, Color>({ name: "placeholderColor", cssName: "placeholder-color", equalityComparer: Color.equals, valueConverter: (v) => new Color(v) });
|
||||
placeholderColorProperty.register(Style);
|
||||
|
||||
const keyboardTypeConverter = makeParser<KeyboardType>(makeValidator<KeyboardType>("datetime", "phone", "number", "url", "email"));
|
||||
const keyboardTypeConverter = makeParser<KeyboardType>(makeValidator<KeyboardType>("datetime", "phone", "number", "url", "email", "integer"));
|
||||
|
||||
export const keyboardTypeProperty = new Property<EditableTextBase, KeyboardType>({ name: "keyboardType", valueConverter: keyboardTypeConverter });
|
||||
keyboardTypeProperty.register(EditableTextBase);
|
||||
|
@ -248,8 +248,9 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
[keyboardTypeProperty.getDefault](): number {
|
||||
return this.nativeTextViewProtected.getInputType();
|
||||
}
|
||||
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | number) {
|
||||
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | "integer" | number) {
|
||||
let newInputType;
|
||||
|
||||
switch (value) {
|
||||
case "datetime":
|
||||
newInputType = android.text.InputType.TYPE_CLASS_DATETIME | android.text.InputType.TYPE_DATETIME_VARIATION_NORMAL;
|
||||
@ -271,6 +272,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
newInputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
|
||||
break;
|
||||
|
||||
case "integer":
|
||||
newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_PASSWORD;
|
||||
break;
|
||||
|
||||
default:
|
||||
newInputType = value;
|
||||
break;
|
||||
|
@ -65,7 +65,7 @@ export class EditableTextBase extends TextBase {
|
||||
//@endprivate
|
||||
}
|
||||
|
||||
export type KeyboardType = "datetime" | "phone" | "number" | "url" | "email";
|
||||
export type KeyboardType = "datetime" | "phone" | "number" | "url" | "email" | "integer";
|
||||
export type ReturnKeyType = "done" | "next" | "go" | "search" | "send";
|
||||
export type UpdateTextTrigger = "focusLost" | "textChanged";
|
||||
export type AutocapitalizationType = "none" | "words" | "sentences" | "allcharacters";
|
||||
|
@ -13,7 +13,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
this.notify({ eventName: EditableTextBase.blurEvent, object: this });
|
||||
}
|
||||
|
||||
[keyboardTypeProperty.getDefault](): "datetime" | "phone" | "number" | "url" | "email" | string {
|
||||
[keyboardTypeProperty.getDefault](): "datetime" | "phone" | "number" | "url" | "email" | "integer" | string {
|
||||
let keyboardType = this.nativeTextViewProtected.keyboardType;
|
||||
switch (keyboardType) {
|
||||
case UIKeyboardType.NumbersAndPunctuation:
|
||||
@ -28,11 +28,14 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
case UIKeyboardType.EmailAddress:
|
||||
return "email";
|
||||
|
||||
case UIKeyboardType.NumberPad:
|
||||
return "integer";
|
||||
|
||||
default:
|
||||
return keyboardType.toString();
|
||||
}
|
||||
}
|
||||
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | string) {
|
||||
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | "integer" | string) {
|
||||
let newKeyboardType: UIKeyboardType;
|
||||
switch (value) {
|
||||
case "datetime":
|
||||
@ -55,6 +58,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
|
||||
newKeyboardType = UIKeyboardType.EmailAddress;
|
||||
break;
|
||||
|
||||
case "integer":
|
||||
newKeyboardType = UIKeyboardType.NumberPad;
|
||||
break;
|
||||
|
||||
default:
|
||||
let kt = +value;
|
||||
if (!isNaN(kt)) {
|
||||
|
6
nativescript-core/ui/enums/enums.d.ts
vendored
6
nativescript-core/ui/enums/enums.d.ts
vendored
@ -73,6 +73,12 @@ export module KeyboardType {
|
||||
* iOS: [UIKeyboardTypeEmailAddress](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/c/tdef/UIKeyboardType)
|
||||
*/
|
||||
export const email: BaseKeyboardType
|
||||
|
||||
/**
|
||||
* Android: [TYPE_CLASS_NUMBER](http://developer.android.com/reference/android/text/InputType.html#TYPE_CLASS_NUMBER | [TYPE_NUMBER_VARIATION_PASSWORD](android type_text_variation_password))
|
||||
* iOS: [UIKeyboardTypeNumberPad](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/c/tdef/UIKeyboardType)
|
||||
*/
|
||||
export const integer: BaseKeyboardType
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7,6 +7,7 @@ export module KeyboardType {
|
||||
export const number = "number";
|
||||
export const url = "url";
|
||||
export const email = "email";
|
||||
export const integer = "integer";
|
||||
}
|
||||
|
||||
export module ReturnKeyType {
|
||||
|
@ -77,6 +77,9 @@ export class TextField extends TextFieldBase {
|
||||
case "email":
|
||||
inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
|
||||
break;
|
||||
case "integer":
|
||||
inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_PASSWORD;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user