==================
- Improved handling of object and multiselect fields such that the values
loaded are actually just the values, with select options being passed as the
``source`` field option. This is an important backwards-incompatible change.
- Added a field option ``multiple`` that, when truthy and the selected type is
object, makes the field be considered a list of objects. When using the
default templates, this turns a select widget into multi-select.
- When loading values into a form via the JS API rather than via HTTP as JSON,
assume full objects, not tokens to be contained.
- Add textarea template.
- Added the concept of required fields which cannot be saved when blank.
- More Bootstrap 3 compatibility.
- Simplified HTML mark-up of form elements.
- Removed the package metadata's implicit dependency on the test extra.
- Use `classy <https://github.com/mitsuhiko/classy>`_ classes.
- Consider HTTP error responses unrecoverable errors. This distinguishes them
from time-outs and connection errors.
- Add ``loaded`` property on Form, a Deferred so clients can check whether
loading has finished. This is mainly helpful for tests, e.g.::
selenium.waitForEval(
'$("jsform").data("form") && '
'$("jsform").data("form").loaded.state()', '"resolved"')
- Expose the ``get_template`` function for reuse outside the Form class.
- If an empty string is specified as ``form_template``, just use the existing
form DOM node without applying any template.
- Add jQuery plugin ``$().jsform_submit_button(callback)`` that sets up a
button that saves the jsform and calls a function after the successful save.