All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.viaoa.web.html.input.InputText Maven / Gradle / Ivy

package com.viaoa.web.html.input;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.viaoa.util.OAStr;
import com.viaoa.util.OAString;
import com.viaoa.web.html.OAHtmlComponent.InputModeType;
import com.viaoa.web.html.OAHtmlComponent.InputType;
import com.viaoa.web.util.OAJspUtil;

public class InputText extends InputElement {
    
    public InputText(String id) {
        super(id, InputType.Text);
    }

    // used by subclasses to set the input type, ex: "tel"
    protected InputText(String id, InputType type) {
        super(id, type);
    }
    
    
    public String getValue() {
        return htmlComponent.getValue();
    }
    public void setValue(String value) {
        htmlComponent.setValue(value);
    }

    public String getPlaceHolder() {
        return htmlComponent.getPlaceHolder();
    }
    public void setPlaceHolder(String placeHolder) {
        htmlComponent.setPlaceHolder(placeHolder);
    }

    public String getPattern() {
        return htmlComponent.getPattern();
    }

    public void setPattern(String pattern) {
        htmlComponent.setPattern(pattern);
    }
    
    public boolean getReadOnly() {
        return htmlComponent.getReadOnly();
    }

    public boolean isReadOnly() {
        return htmlComponent.getReadOnly();
    }
    public void setReadOnly(boolean b) {
        htmlComponent.setReadOnly(b);
    }
    
    public boolean getRequired() {
        return htmlComponent.getRequired();
    }

    public boolean isRequired() {
        return htmlComponent.getRequired();
    }

    public void setRequired(boolean req) {
        htmlComponent.setRequired(req);
    }
    

    // Id of datalist element
    public String getList() {
        return htmlComponent.getList();
    }

    public void setList(String listId) {
        htmlComponent.setList(listId);
    }
    
    public List getDataList() {
        return htmlComponent.getDataList();
    }

    public void setDataList(List lst) {
        htmlComponent.setDataList(lst);
    }
    

    
    /**
     * The display width of the text field, number of characters wide.
     */
    public int getSize() {
        return htmlComponent.getSize();
    }

    public void setSize(int val) {
        htmlComponent.setSize(val);
    }
    
    public int getMinLength() {
        return htmlComponent.getMinLength();
    }

    public void setMinLength(int val) {
        htmlComponent.setMinLength(val);
    }

    public int getMaxLength() {
        return htmlComponent.getMaxLength();
    }

    public void setMaxLength(int val) {
        htmlComponent.setMaxLength(val);
    }

    public String getAutoComplete() {
        return htmlComponent.getAutoComplete();
    }
    public void setAutoComplete(String val) {
        htmlComponent.setAutoComplete(val);
    }
    
    public String getInputMode() {
        return htmlComponent.getInputMode();
    }

    public void setInputMode(String mode) {
        htmlComponent.setInputMode(mode);
    }

    public void setInputMode(InputModeType type) {
        htmlComponent.setInputMode(type);
    }


    public boolean getSpellCheck() {
        return htmlComponent.getSpellCheck();
    }
    public boolean isSpellCheck() {
        return getSpellCheck();
    }
    public void setSpellCheck(boolean b) {
        htmlComponent.setSpellCheck(b);
    }
    
    public String getFloatLabel() {
        return htmlComponent.getFloatLabel();
    }

    public void setFloatLabel(String floatLabel) {
        htmlComponent.setFloatLabel(floatLabel);
    }

    public String getCalcDisplayName() {
        String s = getName();
        if (OAString.isEmpty(s)) {
            s = getPlaceHolder();
            if (OAString.isEmpty(s)) {
                s = getId();
            }
        }
        return s;
    }
    
    
    @Override
    protected String getVerifyScript() {
        StringBuilder sb = null;
        if (isRequired()) {
            if (sb == null) {
                sb = new StringBuilder();
            }

            String s = "Field " + getCalcDisplayName() + " is required";
            sb.append("if ($('#" + getId() + "').val() == '') {");
            sb.append("   requires.push('" + s + "');");
            sb.append("   $('#" + getId() + "').addClass('oaError');");
            sb.append("}\n");
        }

        int max = getMaxLength();
        if (max > 0) {
            if (sb == null) {
                sb = new StringBuilder();
            }
            sb.append("if ($('#" + getId() + "').val().length > " + max + ") {");
            sb.append("    errors.push('Field "+getCalcDisplayName()+" can not be longer than " + max + " characters');");
            sb.append("    $('#" + getId() + "').addClass('oaError');");
            sb.append("}\n");
        }

        int min = getMinLength();
        if (min > 0) {
            if (sb == null) {
                sb = new StringBuilder();
            }
            sb.append("if ($('#" + getId() + "').val().length < " + min + ") {");
            sb.append("    errors.push('Field "+getCalcDisplayName()+" must be at least " + min + " characters');");
            sb.append("    $('#" + getId() + "').addClass('oaError');");
            sb.append("}\n");
        }
        

        if (OAStr.isNotEmpty(getPattern())) {
            if (sb == null) {
                sb = new StringBuilder();
            }

            sb.append("regex = new RegExp(/" + OAJspUtil.createEmbeddedJsString(getPattern(),'/') + "/);");
            sb.append("val = $('#" + getId() + "').val();");
            sb.append("if (!val.match(regex)) {");
            sb.append("    errors.push('Field "+ getCalcDisplayName() + " must match regex pattern "+ OAJspUtil.createEmbeddedJsString(getPattern(), '\'') +"');");
            sb.append("    $('#" + getId() + "').addClass('oaError');");
            sb.append("}\n");
        }
        
        if (sb == null) return null;
        return sb.toString();
    }


    private static Set hsSupported = new HashSet<>();  // lowercase
    static {
        hsSupported.add("value");
        hsSupported.add("placeholder");
        hsSupported.add("pattern");
        hsSupported.add("readonly");
        hsSupported.add("required");
        hsSupported.add("list");
        hsSupported.add("datalist");
        hsSupported.add("size");
        hsSupported.add("minlength");
        hsSupported.add("maxlength");
        hsSupported.add("autocomplete");
        hsSupported.add("inputmode");
        hsSupported.add("spellcheck");
        hsSupported.add("floatlabel");
    }
    public boolean isSupported(String name) {
        if (name == null) return false;
        return super.isSupported(name) || hsSupported.contains(name.toLowerCase());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy