Component for Bootstrap form group with input of type number

ccm-docs
Jens Pelzetter 2020-11-18 19:42:41 +01:00
parent b23c1f8f25
commit 242ac98043
4 changed files with 108 additions and 53 deletions

View File

@ -1,33 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:cc="http://xmlns.jcp.org/jsf/composite"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<cc:interface shortDescription="A base component for form groups. The control (input) is added by the input facet.">
<cc:attribute name="help"
required="true"
shortDescription="A short description of the input field"
type="String" />
<cc:attribute name="inputId"
required="true"
shortDescription="The ID of the input field."
type="String" />
<cc:attribute name="label"
required="true"
shortDescription="The label of the input field."
type="String" />
<cc:facet name="input" required="true" />
</cc:interface>
<cc:implementation>
<div class="form-group">
<label for="#{cc.attrs.inputId}">${cc.attrs.label}</label>
<cc:renderFacet name="input" />
<small class="form-text text-muted"
id="#{cc.attrs.inputId}-help">
#{cc.attrs.help}
</small>
</div>
</cc:implementation>
</html>

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:cc="http://xmlns.jcp.org/jsf/composite"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<cc:interface shortDescription="Component for a form group with a number input">
<cc:attribute name="help"
required="true"
shortDescription="A short description of the input field"
type="String" />
<cc:attribute name="inputId"
required="true"
shortDescription="The ID of the input field."
type="String" />
<cc:attribute name="label"
required="true"
shortDescription="The label of the input field."
type="String" />
<cc:attribute name="max"
required="false"
shortDescription="Maximum allowed value."
type="String" />
<cc:attribute name="min"
required="false"
shortDescription="Minimum allowed value."
type="String" />
<cc:attribute name="name"
required="true"
shortDescription="The name of the input field. This is also the name which is used to send the value of the input to the server."
type="String" />
<cc:attribute name="placeholder"
required="false"
shortDescription="A placeholder to show in the empty field."
type="String" />
<cc:attribute default="false"
name="required"
shortDescription="Is the field required?"
required="false"
type="boolean" />
<cc:attribute name="step"
required="false"
shortDescription="Stepping interval for the input"
type="String" />
<cc:attribute name="value"
required="false"
shortDescription="Value of the input field"
type="String" />
</cc:interface>
<cc:implementation>
<pre>
step = #{cc.attrs.step}
step = #{(not empty cc.attrs.step) ? cc.attrs.step : null}
step not empty? #{not empty cc.attrs.step}
</pre>
<div>
<div class="form-group">
<label for="#{cc.attrs.inputId}">${cc.attrs.label}</label>
<!--<cc:renderFacet name="input" />-->
<input aria-describedby="#{cc.attrs.inputId}-help"
data-step="#{cc.attrs.step}"
id="#{cc.attrs.inputId}"
max="#{not empty cc.attrs.max ? cc.attrs.max : null}"
min="#{not empty cc.attrs.min ? cc.attrs.min : null}"
name="#{cc.attrs.name}"
placeholder="#{not empty cc.attrs.placeholder ? cc.attrs.placeholder : null}"
required="#{cc.attrs.required ? 'required' : null}"
step="#{cc.attrs.step}"
type="number"
value="#{not empty cc.attrs.value ? cc.attrs.value : null}" />
<small class="form-text text-muted"
id="#{cc.attrs.inputId}-help">
#{cc.attrs.help}
</small>
</div>
</div>
</cc:implementation>
</html>

View File

@ -1,6 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap" <html xmlns="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml" xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core" xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:cc="http://xmlns.jcp.org/jsf/composite" xmlns:cc="http://xmlns.jcp.org/jsf/composite"
xmlns:f="http://xmlns.jcp.org/jsf/core"> xmlns:f="http://xmlns.jcp.org/jsf/core">
@ -53,23 +53,24 @@
type="String" /> type="String" />
</cc:interface> </cc:interface>
<cc:implementation> <cc:implementation>
<bootstrap:formGroup help="#{cc.attrs.help}" <div class="form-group">
inputId="#{cc.attrs.inputId}" <label for="#{cc.attrs.inputId}">${cc.attrs.label}</label>
label="#{cc.attrs.label}"> <input aria-describedby="#{cc.attrs.inputId}-help"
<f:facet name="input"> id="#{cc.attrs.inputId}"
<input aria-describedby="#{cc.attrs.inputId}-help" maxlength="#{(not empty cc.attrs.maxlength) ? cc.attrs.maxlength : null}"
id="#{cc.attrs.inputId}" minlength="#{(not empty cc.attrs.minlength) ? cc.attrs.minlength : null}"
maxlength="#{(not empty cc.attrs.maxlength) ? cc.attrs.maxlength : null}" name="#{cc.attrs.name}"
minlength="#{(not empty cc.attrs.minlength) ? cc.attrs.minlength : null}" pattern="#{not empty cc.attrs.pattern ? cc.attrs.pattern : null}"
name="#{cc.attrs.name}" placeholder="#{not empty cc.attrs.placeholder ? cc.attrs.placeholder: null}"
pattern="#{not empty cc.attrs.pattern ? cc.attrs.pattern : null}" required="#{cc.attrs.required ? 'required' : null}"
placeholder="#{not empty cc.attrs.placeholder ? cc.attrs.placeholder: null}" size="#{not empty cc.attrs.size ? cc.attrs.size : null}"
required="#{cc.attrs.required ? 'required' : ''}" type="text"
size="#{not empty cc.attrs.size ? cc.attrs.size : null}" value="#{not empty cc.attrs.value ? cc.attrs.value : ''}" />
value="#{not empty cc.attrs.value ? cc.attrs.value : ''}" <small class="form-text text-muted"
type="text" /> id="#{cc.attrs.inputId}-help">
</f:facet> #{cc.attrs.help}
</bootstrap:formGroup> </small>
</div>
</cc:implementation> </cc:implementation>
</html> </html>

View File

@ -23,7 +23,14 @@
<bootstrap:formGroupText help="test" <bootstrap:formGroupText help="test"
inputId="test" inputId="test"
label="Test" label="Test"
name="test" /> name="test"
value="foobar bar" />
<bootstrap:formGroupNumber help="The price"
inputId="price"
label="Price"
name="price"
step="0.01"
value="10.0" />
</form> </form>
<p>ToDo</p> <p>ToDo</p>
</div> </div>