A library for building dynamic webapps, using Js_of_ocaml
Module type
Class type
Library bonsai.web_ui_form

Adds a clickable error hint for this form

val collapsible_group : ?starts_open:bool -> string Bonsai_web.Value.t -> 'a t Bonsai_web.Value.t -> 'a t Bonsai_web.Computation.t

Adds a group that is clickable. Visibility for sub-forms is initially determined by starts_open but is toggled by clicking on the label.

val on_change : ?on_error:( Core.Error.t -> unit Ui_effect.t ) Bonsai_web.Value.t -> (module Bonsai_web.Bonsai.Model with type t = 'a) -> f:( 'a -> unit Ui_effect.t ) Bonsai_web.Value.t -> 'a t Bonsai_web.Value.t -> unit Bonsai_web.Computation.t

Adds a on_change handler to a Form.t.

The function f is called when 1. the (successfully validated) value of the form changes. 2. the form transitions from producing an Error to producing a value. 3. the form initializes with a value

on_error is called when 1. the error message changes 2. the form transitions from producing a value to an error 3. the form initializes with an error

val validate_via_effect : (module Bonsai_web.Bonsai.Model with type t = 'a) -> 'a t Bonsai_web.Value.t -> f:( 'a -> unit Core.Or_error.t Bonsai_web.Effect.t ) Bonsai_web.Value.t -> 'a t Bonsai_web.Computation.t

Unlike validate which requires the validation function to be available locally (and synchronous), validate_via_effect runs an effectful computation. The asynchrony makes this function interesting: When a value is in the midst of validated, the resultant form is resolved to an Error.

module Record_builder : sig ... end