Skip to content

Commit 1edb446

Browse files
committed
feat(TextField): decimal keyboardType (#10789)
1 parent b6e1090 commit 1edb446

File tree

6 files changed

+42
-4
lines changed

6 files changed

+42
-4
lines changed

apps/automated/src/ui/text-field/text-field-tests.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,32 @@ export var testSetKeyboardTypeNumberAndSecure = function () {
339339
});
340340
};
341341

342+
export var testSetSecureAndKeyboardTypeDecimal = function () {
343+
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<View>) {
344+
var textField = <TextField>views[0];
345+
346+
textField.secure = true;
347+
textField.keyboardType = 'decimal';
348+
349+
var expectedValue = true;
350+
var actualValue = getNativeSecure(textField);
351+
TKUnit.assert(actualValue === expectedValue, 'Actual: ' + actualValue + '; Expected: ' + expectedValue);
352+
});
353+
};
354+
355+
export var testSetKeyboardTypeDecimalAndSecure = function () {
356+
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<View>) {
357+
var textField = <TextField>views[0];
358+
359+
textField.keyboardType = 'decimal';
360+
textField.secure = true;
361+
362+
var expectedValue = true;
363+
var actualValue = getNativeSecure(textField);
364+
TKUnit.assert(actualValue === expectedValue, 'Actual: ' + actualValue + '; Expected: ' + expectedValue);
365+
});
366+
};
367+
342368
export var testBindSecureDirectlyToModel = function () {
343369
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<View>) {
344370
var textField = <TextField>views[0];

packages/core/core-types/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ export namespace CoreTypes {
4040
unit: 'px',
4141
};
4242

43-
export type KeyboardInputType = 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer';
43+
export type KeyboardInputType = 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer';
4444
export namespace KeyboardType {
4545
export const datetime = 'datetime';
4646
export const phone = 'phone';
4747
export const number = 'number';
48+
export const decimal = 'decimal';
4849
export const url = 'url';
4950
export const email = 'email';
5051
export const integer = 'integer';

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ export const placeholderColorProperty = new CssProperty<Style, Color>({
6767
});
6868
placeholderColorProperty.register(Style);
6969

70-
const keyboardTypeConverter = makeParser<CoreTypes.KeyboardInputType>(makeValidator<CoreTypes.KeyboardInputType>(CoreTypes.KeyboardType.datetime, CoreTypes.KeyboardType.phone, CoreTypes.KeyboardType.number, CoreTypes.KeyboardType.url, CoreTypes.KeyboardType.email, CoreTypes.KeyboardType.integer), true);
70+
const keyboardTypeConverter = makeParser<CoreTypes.KeyboardInputType>(makeValidator<CoreTypes.KeyboardInputType>(CoreTypes.KeyboardType.datetime, CoreTypes.KeyboardType.phone, CoreTypes.KeyboardType.number, CoreTypes.KeyboardType.decimal, CoreTypes.KeyboardType.url, CoreTypes.KeyboardType.email, CoreTypes.KeyboardType.integer), true);
7171

7272
export const autofillTypeProperty = new Property<EditableTextBase, CoreTypes.AutofillType>({ name: 'autofillType' });
7373
autofillTypeProperty.register(EditableTextBase);

packages/core/ui/editable-text-base/index.android.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
204204
[keyboardTypeProperty.getDefault](): number {
205205
return this.nativeTextViewProtected.getInputType();
206206
}
207-
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer' | number) {
207+
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer' | number) {
208208
let newInputType;
209209

210210
switch (value) {
@@ -220,6 +220,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
220220
newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_NORMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL;
221221
break;
222222

223+
case 'decimal':
224+
newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED;
225+
break;
226+
223227
case 'url':
224228
newInputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI;
225229
break;

packages/core/ui/editable-text-base/index.ios.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
3434
return keyboardType.toString();
3535
}
3636
}
37-
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer' | string) {
37+
[keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer' | string) {
3838
let newKeyboardType: UIKeyboardType;
3939
switch (value) {
4040
case 'datetime':
@@ -49,6 +49,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
4949
newKeyboardType = UIKeyboardType.NumbersAndPunctuation;
5050
break;
5151

52+
case 'decimal':
53+
newKeyboardType = UIKeyboardType.DecimalPad;
54+
break;
55+
5256
case 'url':
5357
newKeyboardType = UIKeyboardType.URL;
5458
break;

packages/core/ui/text-field/index.android.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ export class TextField extends TextFieldBase {
7878
case 'number':
7979
inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_NORMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL;
8080
break;
81+
case 'decimal':
82+
inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED;
83+
break;
8184
case 'url':
8285
inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI;
8386
break;

0 commit comments

Comments
 (0)