diff --git a/apps/automated/src/ui/text-field/text-field-tests.ts b/apps/automated/src/ui/text-field/text-field-tests.ts index 46b656b1a..780c3f3e6 100644 --- a/apps/automated/src/ui/text-field/text-field-tests.ts +++ b/apps/automated/src/ui/text-field/text-field-tests.ts @@ -339,6 +339,32 @@ export var testSetKeyboardTypeNumberAndSecure = function () { }); }; +export var testSetSecureAndKeyboardTypeDecimal = function () { + helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array) { + var textField = views[0]; + + textField.secure = true; + textField.keyboardType = 'decimal'; + + var expectedValue = true; + var actualValue = getNativeSecure(textField); + TKUnit.assert(actualValue === expectedValue, 'Actual: ' + actualValue + '; Expected: ' + expectedValue); + }); +}; + +export var testSetKeyboardTypeDecimalAndSecure = function () { + helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array) { + var textField = views[0]; + + textField.keyboardType = 'decimal'; + textField.secure = true; + + var expectedValue = true; + var actualValue = getNativeSecure(textField); + TKUnit.assert(actualValue === expectedValue, 'Actual: ' + actualValue + '; Expected: ' + expectedValue); + }); +}; + export var testBindSecureDirectlyToModel = function () { helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array) { var textField = views[0]; diff --git a/packages/core/core-types/index.ts b/packages/core/core-types/index.ts index 30c31c9cc..e7e574cf2 100644 --- a/packages/core/core-types/index.ts +++ b/packages/core/core-types/index.ts @@ -40,11 +40,12 @@ export namespace CoreTypes { unit: 'px', }; - export type KeyboardInputType = 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer'; + export type KeyboardInputType = 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer'; export namespace KeyboardType { export const datetime = 'datetime'; export const phone = 'phone'; export const number = 'number'; + export const decimal = 'decimal'; export const url = 'url'; export const email = 'email'; export const integer = 'integer'; diff --git a/packages/core/ui/editable-text-base/editable-text-base-common.ts b/packages/core/ui/editable-text-base/editable-text-base-common.ts index 166774899..346baf265 100644 --- a/packages/core/ui/editable-text-base/editable-text-base-common.ts +++ b/packages/core/ui/editable-text-base/editable-text-base-common.ts @@ -67,7 +67,7 @@ export const placeholderColorProperty = new CssProperty({ }); placeholderColorProperty.register(Style); -const keyboardTypeConverter = makeParser(makeValidator(CoreTypes.KeyboardType.datetime, CoreTypes.KeyboardType.phone, CoreTypes.KeyboardType.number, CoreTypes.KeyboardType.url, CoreTypes.KeyboardType.email, CoreTypes.KeyboardType.integer), true); +const keyboardTypeConverter = makeParser(makeValidator(CoreTypes.KeyboardType.datetime, CoreTypes.KeyboardType.phone, CoreTypes.KeyboardType.number, CoreTypes.KeyboardType.decimal, CoreTypes.KeyboardType.url, CoreTypes.KeyboardType.email, CoreTypes.KeyboardType.integer), true); export const autofillTypeProperty = new Property({ name: 'autofillType' }); autofillTypeProperty.register(EditableTextBase); diff --git a/packages/core/ui/editable-text-base/index.android.ts b/packages/core/ui/editable-text-base/index.android.ts index 6f5a1e972..8ff4a4e07 100644 --- a/packages/core/ui/editable-text-base/index.android.ts +++ b/packages/core/ui/editable-text-base/index.android.ts @@ -204,7 +204,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon { [keyboardTypeProperty.getDefault](): number { return this.nativeTextViewProtected.getInputType(); } - [keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer' | number) { + [keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer' | number) { let newInputType; switch (value) { @@ -220,6 +220,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon { 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; break; + case 'decimal': + newInputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED; + break; + case 'url': newInputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI; break; diff --git a/packages/core/ui/editable-text-base/index.ios.ts b/packages/core/ui/editable-text-base/index.ios.ts index 305ddb359..e12efe3eb 100644 --- a/packages/core/ui/editable-text-base/index.ios.ts +++ b/packages/core/ui/editable-text-base/index.ios.ts @@ -34,7 +34,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon { return keyboardType.toString(); } } - [keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'url' | 'email' | 'integer' | string) { + [keyboardTypeProperty.setNative](value: 'datetime' | 'phone' | 'number' | 'decimal' | 'url' | 'email' | 'integer' | string) { let newKeyboardType: UIKeyboardType; switch (value) { case 'datetime': @@ -49,6 +49,10 @@ export abstract class EditableTextBase extends EditableTextBaseCommon { newKeyboardType = UIKeyboardType.NumbersAndPunctuation; break; + case 'decimal': + newKeyboardType = UIKeyboardType.DecimalPad; + break; + case 'url': newKeyboardType = UIKeyboardType.URL; break; diff --git a/packages/core/ui/text-field/index.android.ts b/packages/core/ui/text-field/index.android.ts index 04c5cf9d3..f3ca90085 100644 --- a/packages/core/ui/text-field/index.android.ts +++ b/packages/core/ui/text-field/index.android.ts @@ -78,6 +78,9 @@ export class TextField extends TextFieldBase { case 'number': 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; break; + case 'decimal': + inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED; + break; case 'url': inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI; break;