GUACAMOLE-292: Add support for email fields.

This commit is contained in:
Michael Jumper
2017-02-22 01:04:27 -08:00
parent afd051e59f
commit 8830123c9b
8 changed files with 73 additions and 2 deletions

View File

@@ -0,0 +1,37 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.guacamole.form;
/**
* Represents a text field which may contain an email address.
*/
public class EmailField extends Field {
/**
* Creates a new EmailField with the given name.
*
* @param name
* The unique name to associate with this field.
*/
public EmailField(String name) {
super(name, Field.Type.EMAIL);
}
}

View File

@@ -47,6 +47,12 @@ public class Field {
*/ */
public static String TEXT = "TEXT"; public static String TEXT = "TEXT";
/**
* An email address field. This field type generally behaves
* identically to arbitrary text fields, but has semantic differences.
*/
public static String EMAIL = "EMAIL";
/** /**
* A username field. This field type generally behaves identically to * A username field. This field type generally behaves identically to
* arbitrary text fields, but has semantic differences. * arbitrary text fields, but has semantic differences.

View File

@@ -47,6 +47,16 @@ angular.module('form').provider('formService', function formServiceProvider() {
templateUrl : 'app/form/templates/textField.html' templateUrl : 'app/form/templates/textField.html'
}, },
/**
* Email address field type.
*
* @see {@link Field.Type.EMAIL}
* @type FieldType
*/
'EMAIL' : {
templateUrl : 'app/form/templates/emailField.html'
},
/** /**
* Numeric field type. * Numeric field type.
* *

View File

@@ -0,0 +1,8 @@
<div class="email-field">
<input type="email"
ng-model="model"
ng-hide="readOnly"
autocorrect="off"
autocapitalize="off"/>
<a href="mailto:{{model}}" ng-show="readOnly">{{model}}</a>
</div>

View File

@@ -17,11 +17,11 @@
* under the License. * under the License.
*/ */
input[type=checkbox], input[type=number], input[type=text], input[type=radio], label, textarea { input[type=checkbox], input[type=number], input[type=text], input[type=email], input[type=radio], label, textarea {
-webkit-tap-highlight-color: rgba(128,192,128,0.5); -webkit-tap-highlight-color: rgba(128,192,128,0.5);
} }
div.location, input[type=text], input[type=number], input[type=password], textarea { div.location, input[type=text], input[type=email], input[type=number], input[type=password], textarea {
border: 1px solid #777; border: 1px solid #777;
-moz-border-radius: 0.2em; -moz-border-radius: 0.2em;
-webkit-border-radius: 0.2em; -webkit-border-radius: 0.2em;

View File

@@ -19,6 +19,7 @@
/* Do not stretch attributes to fit available area */ /* Do not stretch attributes to fit available area */
.attributes input[type=text], .attributes input[type=text],
.attributes input[type=email],
.attributes input[type=password], .attributes input[type=password],
.attributes input[type=number] { .attributes input[type=number] {
width: auto; width: auto;

View File

@@ -19,6 +19,7 @@
/* Do not stretch connection parameters to fit available area */ /* Do not stretch connection parameters to fit available area */
.connection-parameters input[type=text], .connection-parameters input[type=text],
.connection-parameters input[type=email],
.connection-parameters input[type=password], .connection-parameters input[type=password],
.connection-parameters input[type=number] { .connection-parameters input[type=number] {
width: auto; width: auto;

View File

@@ -75,6 +75,14 @@ angular.module('rest').factory('Field', [function defineField() {
*/ */
TEXT : 'TEXT', TEXT : 'TEXT',
/**
* The type string associated with parameters that may contain an email
* address.
*
* @type String
*/
EMAIL : 'EMAIL',
/** /**
* The type string associated with parameters that may contain an * The type string associated with parameters that may contain an
* arbitrary string, where that string represents the username of the * arbitrary string, where that string represents the username of the