diff --git a/nativescript-core/ui/editable-text-base/editable-text-base-common.ts b/nativescript-core/ui/editable-text-base/editable-text-base-common.ts index 24937a733..46d6d306e 100644 --- a/nativescript-core/ui/editable-text-base/editable-text-base-common.ts +++ b/nativescript-core/ui/editable-text-base/editable-text-base-common.ts @@ -38,7 +38,7 @@ export abstract class EditableTextBase extends TextBase implements EditableTextB export const placeholderColorProperty = new CssProperty({ name: "placeholderColor", cssName: "placeholder-color", equalityComparer: Color.equals, valueConverter: (v) => new Color(v) }); placeholderColorProperty.register(Style); -const keyboardTypeConverter = makeParser(makeValidator("datetime", "phone", "number", "url", "email")); +const keyboardTypeConverter = makeParser(makeValidator("datetime", "phone", "number", "url", "email", "integer")); export const keyboardTypeProperty = new Property({ name: "keyboardType", valueConverter: keyboardTypeConverter }); keyboardTypeProperty.register(EditableTextBase); diff --git a/nativescript-core/ui/editable-text-base/editable-text-base.android.ts b/nativescript-core/ui/editable-text-base/editable-text-base.android.ts index ce0c15eeb..23d40bd0e 100644 --- a/nativescript-core/ui/editable-text-base/editable-text-base.android.ts +++ b/nativescript-core/ui/editable-text-base/editable-text-base.android.ts @@ -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; diff --git a/nativescript-core/ui/editable-text-base/editable-text-base.d.ts b/nativescript-core/ui/editable-text-base/editable-text-base.d.ts index 43585d97b..ca145aa1a 100644 --- a/nativescript-core/ui/editable-text-base/editable-text-base.d.ts +++ b/nativescript-core/ui/editable-text-base/editable-text-base.d.ts @@ -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"; diff --git a/nativescript-core/ui/editable-text-base/editable-text-base.ios.ts b/nativescript-core/ui/editable-text-base/editable-text-base.ios.ts index 747fd261a..4f74250fc 100644 --- a/nativescript-core/ui/editable-text-base/editable-text-base.ios.ts +++ b/nativescript-core/ui/editable-text-base/editable-text-base.ios.ts @@ -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)) { diff --git a/nativescript-core/ui/enums/enums.d.ts b/nativescript-core/ui/enums/enums.d.ts index 7181606b3..2c82c99eb 100644 --- a/nativescript-core/ui/enums/enums.d.ts +++ b/nativescript-core/ui/enums/enums.d.ts @@ -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 } /** diff --git a/nativescript-core/ui/enums/enums.ts b/nativescript-core/ui/enums/enums.ts index 97558a2e2..702cd8330 100644 --- a/nativescript-core/ui/enums/enums.ts +++ b/nativescript-core/ui/enums/enums.ts @@ -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 { diff --git a/nativescript-core/ui/text-field/text-field.android.ts b/nativescript-core/ui/text-field/text-field.android.ts index e86e4f1f6..bd8afa4b7 100644 --- a/nativescript-core/ui/text-field/text-field.android.ts +++ b/nativescript-core/ui/text-field/text-field.android.ts @@ -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; }