form-lifecycle
Lifecycle logic for forms: edit, submit, error, success, pending. <1kb.
Install
$ npm install --save form-lifecycle
Usage
var form = var form = form// => {pristine: true, error: null, pending: false, success: null, fields: {}} var form2 = form// => {pristine: true, error: null, pending: true, success: null, fields: {}}) // ... And more. See below.
API
Every action returns a new form object, never mutating the existing one.
Lifecycle.create([data])
-> form
Creates a basic form, extended by initial
if desired.
pristine: true pending: false success: null error: null fields: {}
Also available as alias Lifecycle.reset
.
Lifecycle.reset(form, [data]) -> newForm
Creates a new form, extending it with optional data
. Effectively the same as create, except it follows the expected argument form of the others.
Lifecycle.edit(form, newFields) -> newForm
Extends fields
with newFields
.
Lifecycle.submit(form) -> newForm
pending
to truepristine
to trueerror
to nullsuccess
to nullfields
unchanged
Lifecycle.error(form, [error]) -> newForm
pending
to falsepristine
to falseerror
to supplied error or nullsuccess
to nullfields
unchanged
Lifecycle.success(form, [data]) -> newForm
pending
to falsepristine
to trueerror
to nullsuccess
to supplied data or truefields
unchanged
Lifecycle.atObjectPath(path) -> lifecycleAtPath
Run FormLifecycle methods at a path of a given object (usually your app state).
Given a string or array path, returns the same functions as above, set to run at the location determined by the path
. Instead of taking a form
as your first argument, these take an object.
The form will make changes to the object at the given path, and return the changed object.
Example:
var Form = var state = login: form: Form var loginForm = Form // Creates a new state object, with all references the same except for the path to state.login.form.var newState = loginForm
With Redux
var Form = var initialState = login: form: Form var loginForm = Form { }
License
MIT © Andrew Joslin