From 979c2fe850471c266bcae16985eec251f6f65bbc Mon Sep 17 00:00:00 2001 From: Eddy Verbruggen Date: Thu, 6 Apr 2017 11:41:04 +0200 Subject: [PATCH] Feature: New Dialog-Prompt-Input-Type for E-Mails (#3905) * #3118 Feature: New Dialog-Prompt-Input-Type for E-Mails * Forgot to change a comment Changed Password to Email in a comment. --- tns-core-modules/ui/dialogs/dialogs-common.ts | 5 +++++ tns-core-modules/ui/dialogs/dialogs.android.ts | 8 ++++++-- tns-core-modules/ui/dialogs/dialogs.d.ts | 7 ++++++- tns-core-modules/ui/dialogs/dialogs.ios.ts | 8 ++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) 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;