Module

Formless.Query

Package
purescript-formless-aj
Repository
ajnsit/purescript-formless-independent

This module exports helpers for working with Formless queries. Since many queries are used as actions and may involve injecting variants, these helpers are provided to remove any associated boilerplate. Prefer these over using data constructors from the Formless query algebra.

#submit Source

submit :: forall form. Query form

Submit the form, which will trigger a Submitted result if the form validates successfully.

#loadForm Source

loadForm :: forall form. form Record InputField -> Query form

Replace all form inputs with a new set of inputs, and re-initialize the form to a new state. Useful to set a new "initial state" for a form, especially when filling a form with data loaded asynchronously.

#loadForm_ Source

loadForm_ :: forall form. form Record InputField -> Query form

initialize as an action, so you don't need to specify a Unit result. Use to skip a use of Halogen.action.

#andThen Source

andThen :: forall form. Query form -> Query form -> Query form

Perform two Formless actions in sequence. Can be chained arbitrarily. Useful when a field needs to modify itself on change and also trigger validation on one or more other fields, or when a modification on one field should also modify another field.

#set Source

set :: forall o i e t0 sym inputs form. IsSymbol sym => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => SProxy sym -> i -> Query form

Set the input value of a form field at the specified label

#setValidate Source

setValidate :: forall o i e t0 sym inputs form. IsSymbol sym => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => SProxy sym -> i -> Query form

Set the input value of a form field at the specified label, also triggering validation to run on the field.

#asyncSetValidate Source

asyncSetValidate :: forall o i e t0 sym inputs form. IsSymbol sym => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => Milliseconds -> SProxy sym -> i -> Query form

Set the input value of a form field at the specified label, while debouncing validation so that it only runs after the specified amount of time has elapsed since the last modification. Useful when you need to avoid expensive validation but do not want to wait for a blur event to validate.

#modify Source

modify :: forall o i e t0 sym inputs form. IsSymbol sym => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => SProxy sym -> (i -> i) -> Query form

Modify the input value of a form field at the specified label with the provided function.

#modifyValidate Source

modifyValidate :: forall o i e t0 sym inputs form. IsSymbol sym => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => SProxy sym -> (i -> i) -> Query form

Modify the input value of a form field at the specified label, also triggering validation to run on the field, with the provided function.

#asyncModifyValidate Source

asyncModifyValidate :: forall o i e t0 sym inputs form. IsSymbol sym => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => Milliseconds -> SProxy sym -> (i -> i) -> Query form

Modify the input value of a form field at the specified label, while debouncing validation so that it only runs after the specified amount of time has elapsed since the last modification. Useful when you need to avoid expensive validation but do not want to wait for a blur event to validate.

#reset Source

reset :: forall o i e t0 sym inputs form. IsSymbol sym => Initial i => Newtype (form Variant InputFunction) (Variant inputs) => Cons sym (InputFunction e i o) t0 inputs => SProxy sym -> Query form

Reset the value of the specified form field to its default value according to the Initial type class.

#validate Source

validate :: forall o i e t0 sym us form. IsSymbol sym => Newtype (form Variant U) (Variant us) => Cons sym (U e i o) t0 us => SProxy sym -> Query form

A helper to create the correct Validate query for Formless, given a label

#setAll Source

setAll :: forall is' is form. Newtype (form Record InputField) (Record is') => HMap WrapField (Record is) (Record is') => Record is -> Query form

Provide a record of input fields to overwrite all current inputs. Unlike initialize, this does not otherwise reset the form as if it were new. Similar to calling set on every field in the form.

#modifyAll Source

modifyAll :: forall ifs' ifs form. Newtype (form Record InputFunction) (Record ifs') => HMap WrapField (Record ifs) (Record ifs') => Record ifs -> Query form

Provide a record of input functions to modify all current inputs. Similar to calling modify on every field in the form.

#resetAll Source

resetAll :: forall form. Query form

Reset all fields to their initial values, and reset the form to its initial pristine state, no touched fields.

#validateAll Source

validateAll :: forall form. Query form

Validate all fields in the form, collecting errors

#setValidateAll Source

setValidateAll :: forall is' is form. Newtype (form Record InputField) (Record is') => HMap WrapField (Record is) (Record is') => Record is -> Query form

Provide a record of inputs to overwrite all current inputs without resetting the form (as initialize does), and then validate the entire new set of fields. Similar to calling setValidate on every field in the form.

#modifyValidateAll Source

modifyValidateAll :: forall ifs' ifs form. Newtype (form Record InputFunction) (Record ifs') => HMap WrapField (Record ifs) (Record ifs') => Record ifs -> Query form

Provide a record of input functions to modify all current inputs, and then validate all fields. Similar to calling modifyValidate on every field in the form.