Module Brr.El
DOM elements.
The type El.t
technically represents DOM Node objects. However most of DOM processing happens on elements. So we make it as if El.t
values were just elements and most of the functions of this module will fail on text nodes. Except on children
where you may see them you'll likely never run into problems. The is_txt
function can be used to check for textiness.
type document
See
Brr.Document.t
this is a forward declaration.
type window
See
Brr.Window.t
this is a forward declaration.
type tag_name
= Jstr.t
The type for element tag names.
type t
The type for elements. Technically this is a DOM
Node
object. But we focus on DOM manipulation via elements, not the various kind of nodes that may exist.
val v : ?d:document -> ?at:At.t list -> tag_name -> t list -> t
v ?d ?at name cs
is an elementname
with attributeat
(defaults to[]
) and childrencs
. Ifat
specifies an attribute more thanonce, the last one takes over with the exception ofAt.class'
whose occurences accumulate to define the final value.d
is the document on which the element is defined it defaultsBrr.G.document
.
val txt : ?d:document -> Jstr.t -> t
txt s
is the texts
.d
is the document on which the element is defined it defaultsBrr.G.document
. WARNING This is not strictly speaking an element most function of this module will error with this value.
val is_txt : t -> bool
is_txt e
istrue
iffe
is a text node. Note that in this cases many of the function below fail.
val is_el : t -> bool
is_el e
istrue
iffe
is an element node.
val tag_name : t -> tag_name
name e
is the tag name of elemente
lowercased. Foris_txt
nodes this returns"#text"
.
val txt_text : t -> Jstr.t
txt_text e
is the text ofe
ife
is a text node and the empty string otherwise.
Element lookups
See also document element lookups.
val find_by_class : ?root:t -> Jstr.t -> t list
els_by_class ~root c
are the elements with classc
that are descendents ofroot
(defaults toDocument.root
).
val find_by_tag_name : ?root:t -> Jstr.t -> t list
find_by_tag_name ~root n
are the elements with tag namet
that are descendents ofroot
(defaults toDocument.root
).
Children
val children : ?only_els:bool -> t -> t list
children e
aree
's children. Warning, unlessonly_els
istrue
(defaults tofalse
) not all returned elements will satisfyis_el
here.
val insert_siblings : [ `Before | `After | `Replace ] -> t -> t list -> unit
insert_siblings loc e l
insertsl
before, after or instead of elemente
according toloc
.
val remove : t -> unit
remove e
removese
from the document.
Attributes and properties
val set_at : At.name -> Jstr.t option -> t -> unit
set_at a v e
sets the attributea
ofe
tov
. Ifv
isNone
the attribute is removed.
module Prop : sig ... end
Element properties.
val prop : 'a Prop.t -> t -> 'a
prop p e
is the propertyp
ofe
if defined andfalse
,0
,0.
orJstr.empty
as applicable if undefined.
Classes
Style
module Style : sig ... end
Style property names.
val computed_style : ?w:window -> Style.prop -> t -> Jstr.t
computed_style ?w p e
is the computed style propertyp
ofe
in windoww
(defaults toWindow
.global).
val inline_style : Style.prop -> t -> Jstr.t
inline_style p e
is the inline style propertyp
ofe
.
val set_inline_style : ?important:bool -> Style.prop -> Jstr.t -> t -> unit
set_inline_style ~important p v e
sets the inline style propertyp
ofe
tov
with priorityimportant
(defaults tofalse
).
Layout
val inner_x : t -> float
inner_x e
is the horizontal coordinate in the viewport ofe
's inner bound. AddWindow.scroll_x
to get the position relative to the document.
val inner_y : t -> float
inner_y e
is the vertical coordinate in the viewport ofe
's inner bound. AddWindow.scroll_y
to get the position relative to the document.
val inner_w : t -> float
inner_w e
ise
's inner bound width.
val inner_h : t -> float
inner_h e
ise
's inner bound height.
val bound_x : t -> float
bound_x e
is the horizontal coordinate in the viewport ofe
's bound. AddWindow.scroll_x
to get the position relative to the document.
val bound_y : t -> float
bound_y e
is the vertical coordinate in the viewport ofe
's bound. AddWindow.scroll_y
to get the position relative to the document.
val bound_w : t -> float
bound_w e
ise
's bound width.
val bound_h : t -> float
bound_h e
ise
's bound height.
Scrolling
val scroll_x : t -> float
scroll_x e
is the number of pixels scrolled horizontally.
val scroll_y : t -> float
scroll_y e
is the number of pixels scrolled vertically.
val scroll_w : t -> float
scroll_w e
is the minimum width the element would require to display without a vertical scrollbar.
val scroll_h : t -> float
scroll_h e
is the minimum height the element would require to display without a vertical scrollbar.
val scroll_into_view : ?align_v:[ `Start | `End ] -> t -> unit
scroll_into_view ~align e
scrollse
into view. Ifalign_v
is`Start
(default) the top of the element is align with to to the top of the scrollable area. Ifalign_v
is`End
the bottom of the element is aligned with the bottom of the scrollable area.
Focus
val has_focus : t -> bool
has_focus e
istrue
ife
has focus in the document it belongs to.
val set_has_focus : bool -> t -> unit
set_has_focus b e
sets the focus ofe
tob
in the document it belongs do.
Pointer locking
val is_locking_pointer : t -> bool
is_locking_pointer e
istrue
ife
is the element which locked the pointer.
val request_pointer_lock : t -> unit Fut.or_error
request_pointer_lock e
requests the pointer to be locked toe
in the document it belongs to. This listens on the document for the nextEv.pointerlockchange
andEv.pointerlockerror
to resolve the future appropriately.
Fullscreen
Fullscreen navigation enum.
type fullscreen_opts
The type for FullscreenOptions objects.
val fullscreen_opts : ?navigation_ui:Navigation_ui.t -> unit -> fullscreen_opts
fullscreen_opts ()
are options for fullscreen with given parameters.
val request_fullscreen : ?opts:fullscreen_opts -> t -> unit Fut.or_error
request_fullscreen e
requests to make the element to be displayed in fullscreen mode.
Click simulation
val click : t -> unit
click e
simulates a click one
.
val select_text : t -> unit
select_text e
selects the textual contents ofe
. If the DOM elemente
has noselect
method this does nothing.
Element interfaces
Some interfaces are in other modules. See for example Brr_io.Media.El
for the media element interface and Brr_canvas.Canvas
for the Canvas Element interface.
module Input : sig ... end
The HTML input element interface .
Element names and constructors
See the MDN HTML element reference.
Convention. Whenever an element name conflicts with an OCaml keyword we prime it, see for example object'
.
module Name : sig ... end
Element names
type cons
= ?d:document -> ?at:At.t list -> t list -> t
The type for element constructors. This is simply
v
with a pre-applied element name.
type void_cons
= ?d:document -> ?at:At.t list -> unit -> t
The type for void element constructors. This is simply
v
with a pre-applied element name and without children.
val blockquote : cons
val figcaption : cons