Skip to content

Commit 954e1c6

Browse files
committed
feat: add integer only keyboard type for text-field and for all editable text components
1 parent c5b7f43 commit 954e1c6

7 files changed

Lines changed: 27 additions & 5 deletions

File tree

nativescript-core/ui/editable-text-base/editable-text-base-common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export abstract class EditableTextBase extends TextBase implements EditableTextB
3838
export const placeholderColorProperty = new CssProperty<Style, Color>({ name: "placeholderColor", cssName: "placeholder-color", equalityComparer: Color.equals, valueConverter: (v) => new Color(v) });
3939
placeholderColorProperty.register(Style);
4040

41-
const keyboardTypeConverter = makeParser<KeyboardType>(makeValidator<KeyboardType>("datetime", "phone", "number", "url", "email"));
41+
const keyboardTypeConverter = makeParser<KeyboardType>(makeValidator<KeyboardType>("datetime", "phone", "number", "url", "email", "integer"));
4242

4343
export const keyboardTypeProperty = new Property<EditableTextBase, KeyboardType>({ name: "keyboardType", valueConverter: keyboardTypeConverter });
4444
keyboardTypeProperty.register(EditableTextBase);

nativescript-core/ui/editable-text-base/editable-text-base.android.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,9 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
248248
[keyboardTypeProperty.getDefault](): number {
249249
return this.nativeTextViewProtected.getInputType();
250250
}
251-
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | number) {
251+
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | "integer" | number) {
252252
let newInputType;
253+
253254
switch (value) {
254255
case "datetime":
255256
newInputType = android.text.InputType.TYPE_CLASS_DATETIME | android.text.InputType.TYPE_DATETIME_VARIATION_NORMAL;
@@ -271,6 +272,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
271272
newInputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
272273
break;
273274

275+
case "integer":
276+
newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_PASSWORD;
277+
break;
278+
274279
default:
275280
newInputType = value;
276281
break;

nativescript-core/ui/editable-text-base/editable-text-base.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class EditableTextBase extends TextBase {
6565
//@endprivate
6666
}
6767

68-
export type KeyboardType = "datetime" | "phone" | "number" | "url" | "email";
68+
export type KeyboardType = "datetime" | "phone" | "number" | "url" | "email" | "integer";
6969
export type ReturnKeyType = "done" | "next" | "go" | "search" | "send";
7070
export type UpdateTextTrigger = "focusLost" | "textChanged";
7171
export type AutocapitalizationType = "none" | "words" | "sentences" | "allcharacters";

nativescript-core/ui/editable-text-base/editable-text-base.ios.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
1313
this.notify({ eventName: EditableTextBase.blurEvent, object: this });
1414
}
1515

16-
[keyboardTypeProperty.getDefault](): "datetime" | "phone" | "number" | "url" | "email" | string {
16+
[keyboardTypeProperty.getDefault](): "datetime" | "phone" | "number" | "url" | "email" | "integer" | string {
1717
let keyboardType = this.nativeTextViewProtected.keyboardType;
1818
switch (keyboardType) {
1919
case UIKeyboardType.NumbersAndPunctuation:
@@ -28,11 +28,14 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
2828
case UIKeyboardType.EmailAddress:
2929
return "email";
3030

31+
case UIKeyboardType.NumberPad:
32+
return "integer";
33+
3134
default:
3235
return keyboardType.toString();
3336
}
3437
}
35-
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | string) {
38+
[keyboardTypeProperty.setNative](value: "datetime" | "phone" | "number" | "url" | "email" | "integer" | string) {
3639
let newKeyboardType: UIKeyboardType;
3740
switch (value) {
3841
case "datetime":
@@ -55,6 +58,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
5558
newKeyboardType = UIKeyboardType.EmailAddress;
5659
break;
5760

61+
case "integer":
62+
newKeyboardType = UIKeyboardType.NumberPad;
63+
break;
64+
5865
default:
5966
let kt = +value;
6067
if (!isNaN(kt)) {

nativescript-core/ui/enums/enums.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ export module KeyboardType {
7373
* iOS: [UIKeyboardTypeEmailAddress](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/c/tdef/UIKeyboardType)
7474
*/
7575
export const email: BaseKeyboardType
76+
77+
/**
78+
* 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))
79+
* iOS: [UIKeyboardTypeNumberPad](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/c/tdef/UIKeyboardType)
80+
*/
81+
export const integer: BaseKeyboardType
7682
}
7783

7884
/**

nativescript-core/ui/enums/enums.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export module KeyboardType {
77
export const number = "number";
88
export const url = "url";
99
export const email = "email";
10+
export const integer = "integer";
1011
}
1112

1213
export module ReturnKeyType {

nativescript-core/ui/text-field/text-field.android.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ export class TextField extends TextFieldBase {
7777
case "email":
7878
inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
7979
break;
80+
case "integer":
81+
inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_PASSWORD;
82+
break;
8083
default:
8184
break;
8285
}

0 commit comments

Comments
 (0)