diff --git a/tns-core-modules/ui/dialogs/dialogs-common.ts b/tns-core-modules/ui/dialogs/dialogs-common.ts index e8f3f3352..b1eb372fe 100644 --- a/tns-core-modules/ui/dialogs/dialogs-common.ts +++ b/tns-core-modules/ui/dialogs/dialogs-common.ts @@ -25,6 +25,11 @@ export module inputType { * Password input type. */ export const password: string = "password"; + + /** + * Email input type. + */ + export const email: string = "email"; } let frame: typeof frameModule; diff --git a/tns-core-modules/ui/dialogs/dialogs.android.ts b/tns-core-modules/ui/dialogs/dialogs.android.ts index 516fbefd6..97d18981b 100644 --- a/tns-core-modules/ui/dialogs/dialogs.android.ts +++ b/tns-core-modules/ui/dialogs/dialogs.android.ts @@ -179,8 +179,12 @@ export function prompt(arg: any): Promise { const input = new android.widget.EditText(androidApp.foregroundActivity); - if (options && options.inputType === inputType.password) { - input.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD); + if (options) { + if (options.inputType === inputType.password) { + input.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD); + } else if (options.inputType === inputType.email) { + input.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); + } } input.setText(options && options.defaultText || ""); diff --git a/tns-core-modules/ui/dialogs/dialogs.d.ts b/tns-core-modules/ui/dialogs/dialogs.d.ts index ca22832c1..394220318 100644 --- a/tns-core-modules/ui/dialogs/dialogs.d.ts +++ b/tns-core-modules/ui/dialogs/dialogs.d.ts @@ -14,6 +14,11 @@ export module inputType { * Password input type. */ export var password: string; + + /** + * Email input type. + */ + export var email: string; } /** @@ -167,7 +172,7 @@ export interface PromptOptions extends ConfirmOptions { defaultText?: string; /** - * Gets or sets the prompt input type (plain text or password). + * Gets or sets the prompt input type (plain text, password, or email). */ inputType?: string; } diff --git a/tns-core-modules/ui/dialogs/dialogs.ios.ts b/tns-core-modules/ui/dialogs/dialogs.ios.ts index c46c26284..675ef7ff5 100644 --- a/tns-core-modules/ui/dialogs/dialogs.ios.ts +++ b/tns-core-modules/ui/dialogs/dialogs.ios.ts @@ -240,6 +240,10 @@ export function prompt(arg: any): Promise { textField = alert.textFieldAtIndex(0); textField.text = isString(options.defaultText) ? options.defaultText : ""; + if (options.inputType === inputType.email) { + textField.keyboardType = UIKeyboardType.EmailAddress; + } + // Assign first to local letiable, otherwise it will be garbage collected since delegate is weak reference. let delegate = UIAlertViewDelegateImpl.initWithCallback(function (view, index) { resolve({ result: getDialogResult(alert.tag, index), text: textField.text }); @@ -257,6 +261,10 @@ export function prompt(arg: any): Promise { arg.text = isString(options.defaultText) ? options.defaultText : ""; arg.secureTextEntry = options && options.inputType === inputType.password; + if (options && options.inputType === inputType.email) { + arg.keyboardType = UIKeyboardType.EmailAddress; + } + let color = getTextFieldColor(); if (color) { arg.textColor = arg.tintColor = color.ios;