-
Notifications
You must be signed in to change notification settings - Fork 46
Development Archive
Jonny Buchanan edited this page Mar 6, 2015
·
6 revisions
- ☑ Remove
onStateChange - ☑ Fix for using
this.addError()inclean()- now checks for duplicates. - How can we avoid clearing async validation messages unnecessarily?
- ☑ Only validate if data has changed since the last validation was triggered.
- Special cases for
onBlur:- ☑ Trigger any pending validation.
- ☑ Always validate if the field is required and empty.
- ☑ New conditional CSS class Form properties:
optionalCssClass&pendingCssClass - Async validation
- API (allow fields to have custom but separate sync and async validation):
- ☑
form.clean<Field>: function([cb]) { }- use existing method, callback optional - ☑
form.clean: function(cb) { }- use existing method, callback optional - ☑
formset.clean: function(cb) { }- use existing method, callback optional - Async versions of any top-level API which triggers the equivalent of full-form/
onSubmitvalidation.- ☑
form.validate(cb)
- ☑
- ☑
- ☑ Async
onChange(hooked up automatically by newforms)- Custom field validation functions now get a callback if they have an arity of 1
- Async
onSubmit(user's responsibility to hook up)- ☑ Callback once all async validation completes
- ☑ New form state for pending validations
- ☑ These need to be cancellable for cases where multiple async validations are running simultaneously and some of their results need to be ignored
- Can be used to display "working" status to the user and to delay final callback for full-form validation until al async validations are complete.
- ☑ Add a method to BoundField to retrieve this status per-field
- ☑ Use this to implement display of pending async field validation in default rendering methods.
- ☑ Add
pendingCssClassand generate it from BoundField
- ☑ Add a method to BaseForm to retrieve pending status for all fields
- ☑ A Form should never be
isComplete()if still pending async validation
- ☑ A Form should never be
- ☑ Add a method to BaseForm to retrieve this status for cross-field validation
- ☑ Implement display of pending cross-field/whole-form validation in default rendering methods.
- ☑ Add a method to BoundField to retrieve this status per-field
- API (allow fields to have custom but separate sync and async validation):
- ☑ Create React components for default rendering
- ☑ Deprecate
asDiv/asTable/asUl
- ☑ Deprecate
- Changes to onChange & active validation
- ☑ Rename
onStateChangetoonChange- ☑ Detect
onStateChange, reassign toonChangeand warn of deprecation in 0.9 dev version
- ☑ Detect
- ☑ Passing
onChangenow implies `validation: 'auto'- ☑ Check for both being passed and warn that it's not necessary in 0.9 dev version
- ☑ Always hook up an
onChangehandler to widgets to keepform.dataup to date with user input, even if it's not being validated
- ☑ Rename
- ☑ Use
form.validate()as a means of forcing a full clean with the form's current data (always populated by onChange) - FormSet & FormSet-related changes
- ☑ Add
formset.validate([form]) - ☑ Add
formset.addError(error)for adding cross-form errors externally - ☑ Add
formset.deleteForm(index) - ☑ Add
form.notEmpty()- ☑ Cache the result of
hasChanged()each time it's executed - Indicates that
emptyPermittedno longer applies - use for highlighting required fields in extra forms in FormSets once the user has made a change.
- ☑ Cache the result of
- ☑ Make
addAnother()anddeleteForm()call back to re-render whenonChange()is available
- ☑ Add
- ☑ Allow cross-form validation method to specify which fields it uses (to avoid calling it when possible)
-
API:
clean: ['field1', 'field2', function() { ... }] -
☑ Detect this in
DeclarativeFieldsMetaand transform to equivalent of:var clean = function() { ... } clean.fields = {'field1': true, 'field2': true}
-
- Use React 0.12
- ☑ Add a
localesmodule for adding/getting locales and setting a default. - ☑ Change the
formatsmodule to uselocales, adding agetFormat()function to get input/output formats by locale.
- ☑ Add support for partial cleaning/validation
- ☑ Add a
controlled(default:false) option to Forms to enable use of controlled input components- ☑ Add a
prefixed(default:false) option tosetData()andupdateData(), as the user shouldn't be forced to pass prefixed field names in order to programatically update controlled fields.
- ☑ Add a
- ☑ Add interactive onChange validation - whole form or per-field
- ☑ Allow registration of multiple event handlers
- ☑
'auto'validation adds delayedonChangean instantonBlurvalidation to text fields, so the user also gets feedback when leaving a required field if they didn't change anything.
- ☑ Add API for updating
form.datawithout triggering validation, for controlled components- ☑
validate(default:true) andclearErrors(default:true) options toupdateData() - ☑
validate(default:true) option tosetData()
- ☑
- ☑ Get FormSets working with 0.6 features
- ☑ Pass kwargs through to
form.setData() - ☑
validate(default:true) option tosetData()
- ☑ Pass kwargs through to
- ☑ Rename
isBoundtoisInitialRender- more explicit about what it's actually used for.
- ☑ Migrate from DOMBuilder to React
- ☑ Generate
React.DOMcomponents - ☑ Manual validation, no changes needed to cleaning/validation process
- ☑ Build data object from the DOM using
formData() - ☑ Make FormSet API more suitable for the client side