Library
Module
Module type
Parameter
Class
Class type
module Call_on_input_when : sig ... end
val raw :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?disabled:bool ->
?placeholder:string ->
?on_return:(unit -> unit Virtual_dom.Vdom.Effect.t) ->
value:string ->
on_input:(string -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a text input where the value
is *exactly* what is displayed in the box. If you change value
, it will change the value out from under the user, even if they have the box focused. This is one solution for specific use-cases where pressing Enter
will submit the value and you want to clear the box as a result.
on_return
is called when the user presses the enter key with the text box focused.
val of_stringable :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
(module Core.Stringable.S with type t = 'a) ->
value:'a option ->
on_input:('a option -> unit Virtual_dom.Vdom.Effect.t) ->
Virtual_dom.Vdom.Node.t
Creates a text input of some serializable type. If of_string
raises an exception, None
is returned.
val validated :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
?on_return:(unit -> unit Virtual_dom.Vdom.Effect.t) ->
(module Core.Stringable with type t = 'a) ->
value:'a Validated.t ->
on_input:('a Validated.update -> unit Virtual_dom.Vdom.Effect.t) ->
Virtual_dom.Vdom.Node.t
Creates a text input of a serializable type, wrapping it in a type that stores either a valid input or last invalid string.
Note that you usually need to use Validated.merge in your action handler.
To provide visual feedback to user, use css with selector on aria-invalid, e.g.
input[aria-invalid="true"] { bg-color: red; }
If you ever change ~value
to be Validated.initial_empty
, it will clear the contents of the box regardless of whether the user has focus.
val text :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
value:string option ->
on_input:(string option -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a text input that equates an empty input with None
and a non-empty input as Some string
.
val number :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
(module Core.Stringable.S with type t = 'a) ->
value:'a option ->
step:float ->
on_input:('a option -> unit Virtual_dom.Vdom.Effect.t) ->
Virtual_dom.Vdom.Node.t
Creates a number input that equates an empty input with None
and a non-empty input as Some 'a
. Because number input values are represented as strings in HTML, you can use any module that deserializes integral values. If of_string
raises an exception, None
is returned. Note that step
controls how up/down increments/decrements the value and does not enforce that the value is a multiple of step
.
You cannot use Float
because of the way the default to_string
adds trailing periods to whole numbers like "0.". Use Decimal
exported from this library instead.
val range :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
(module Core.Stringable.S with type t = 'a) ->
value:'a option ->
step:float ->
on_input:('a option -> unit Virtual_dom.Vdom.Effect.t) ->
Virtual_dom.Vdom.Node.t
A slider bar. Roughly equivalent to number
, but with a different appearance. We still need to take a Stringable.S
interface because the browser only gives us values as strings.
val time :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
value:Core.Time_ns.Ofday.t option ->
on_input:(Core.Time_ns.Ofday.t option -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a time input that equates an empty input with None
and a non-empty input as Some Time_ns.Ofday.t
.
val date :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
value:Core.Date.t option ->
on_input:(Core.Date.t option -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a date input that equates an empty input with None
and a non-empty input as Some Date.t
.
val datetime_local :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
?utc_offset:Core.Time_ns.Span.t ->
value:Core.Time_ns.t option ->
on_input:(Core.Time_ns.t option -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a time input that equates an empty input with None
and a non-empty input as Some Time_ns.t
.
Because the underlying datepicker expects the datetime_local to be specified in the format yyyy-MM-ddThh:mm with optional ":ss" or ":ss.SSS" when using this widget a timezone should be specified.
val text_area :
?extra_attrs:Virtual_dom.Vdom.Attr.t list ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
?placeholder:string ->
value:string ->
on_input:(string -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a textarea input without a None
representation.
val color_picker :
?extra_attr:Virtual_dom.Vdom.Attr.t ->
?call_on_input_when:Call_on_input_when.t ->
?disabled:bool ->
value:[ `Hex of string ] ->
on_input:([> `Hex of string ] -> unit Virtual_dom.Vdom.Effect.t) ->
unit ->
Virtual_dom.Vdom.Node.t
Creates a color input that produces values are of the form (`Hex color) where color
is a hexadecimal string like "#ffcc00". Note that using ~call_on_input_when:Text_changed
fires the on_input
callback whenever a new color is selected.