The CSS selector that identifies the field we'll be binding to in the template. Note that the minimum amount of changes are made to that field. For example, the type of the field (type="string", number, etc) is left up to the template.
The initial value of the form field. This will be serialized using the valueSeralizer.
In most cases the same as the valueConverter. File uplaods, as one example of when this isn't the case, convert a FileParamHolder, but their event handlers still get a String.
Creates a handler function, maps it (potentially using S.fmapFunc
),
and returns the resulting function id to bind to the HTML
field.
Creates a handler function, maps it (potentially using S.fmapFunc
),
and returns the resulting function id to bind to the HTML
field. See the implementation in SimpleFieldHolder
for a sample.
This should return a copy of this BaseFieldHolder
with the
specified event handler attached.
This should return a copy of this BaseFieldHolder
with the
specified event handler attached. Left abstract because by far the
best implementation is using a case class copy method.
This should return a copy of this BaseFieldHolder with the specified validation attached.
This should return a copy of this BaseFieldHolder with the specified validation attached. Left abstract because by far the best implementation is using a case class copy method.
This should return a copy of this BaseFieldHolder with the specified validation attached.
This should return a copy of this BaseFieldHolder with the specified validation attached. Left abstract because by far the best implementation is using a case class copy method.
Adds the given event handler to the list of event handlers this field will have on the client.
Adds the given event handler to the list of event handlers this field
will have on the client. See EventHandler for more. Meant to be
used with Formality.on for fluency (e.g., field -> on("change", checkStuff _)
).
Note that FieldHolder
s are immutable; this returns a copy of this
FieldHolder
with an updated event handler list.
Aliased as handlingEvent
for folks who don't like operators.
Adds the given boxed validation to the list of validations run on this field at form processing time.
Adds the given boxed validation to the list of validations run on this
field at form processing time. Note that validations may add
attributes to the field to indicate on the client side what types of
validations are expected; see the Validation
trait for more.
Note that FieldHolder
s are immutable; this returns a copy of this
FieldHolder
with an updated validation list.
Aliased as validatingWith
for folks who don't
like operators.
Adds the given validation to the list of validations run on this field at form processing time.
Adds the given validation to the list of validations run on this field at form processing time. Note that validations may add attributes to the field to indicate on the client side what types of validations are expected; see the Validation trait for more.
Note that FieldHolders are immutable; this returns a copy of this FieldHolder with an updated validation list.
Aliased as validatingWith
for folks who
don't like operators.
Adds the passed error messages, using S.error
.
Adds the passed error messages, using S.error
. Can be overridden to use
something other than S.error
.
Defines the base transform that adds the function id and initial value to the HTML field specified in the selector parameter.
Defines the base transform that adds the function id and initial value to the HTML field specified in the selector parameter. When overriding, it is highly suggested that you call super.baseTransform and append your own transforms to that.
Provides the CSS transform that transforms an input field in the template into one that will be processed by this field's value conversion and validation functions, that will have the provided initial value, and that will run this field's associated callbacks for the event handlers it has specified.
Provides the CSS transform that transforms an input field in the template into one that will be processed by this field's value conversion and validation functions, that will have the provided initial value, and that will run this field's associated callbacks for the event handlers it has specified.
If you override the binder, please make sure you properly
map your handler function, event handlers, and validations. This
binder automatically calls generateFunctionIdAndHandler
and binds
its result to the name of the HTML field, and your code must do
something similar to ensure the server-side function you define is
called on form submission.
Computes the final field value and applies any validations.
Computes the final field value and applies any validations. Ensures validations only run once no matter how many times the field value is accessed.
This is the final computed field value after all validations have been handled.
This is the final computed field value after all validations have been
handled. It memoizes the result of computeFieldValue
.
Stores the field name generated by generateFunctionIdAndHandler
.
Stores the field name generated by generateFunctionIdAndHandler
. The
current field name should be accessed from here rather than directly
through generateFunctionIdAndHandler
except in case of clear preference.
The handler function should set this TransientRequestVar
to the
appropriate value.
The handler function should set this TransientRequestVar
to the
appropriate value.
Returns the current value of the field.
Returns the current value of the field. If no value was seen in the last
form submission, invokes boxedValidations
and registers any resulting
validation errors.
FieldHolder represents a form field that processes a value of type FieldValueType, and that can run a set of validations on the incoming field value when it is submitted. It can also attach event handler callbacks that call back to the server with the current inputted value when certain events occur on the client.
This base provides about 80% of the structure that most fields will share. It provides an overridable handler function that will handle the field when it is submitted in a form. This can be overridden by child classes for e.g. file handling.