Class Element
- All Implemented Interfaces:
Serializable
Contains methods for updating and querying various parts of the element, such as attributes.
- Since:
- 1.0
- Author:
- Vaadin Ltd
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
Element
(StateNode node, ElementStateProvider stateProvider) Private constructor for initializing with an existing node and state provider.Creates an element using the given tag name. -
Method Summary
Modifier and TypeMethodDescriptionaddAttachListener
(ElementAttachListener attachListener) Adds an attach listener for this element.addDetachListener
(ElementDetachListener detachListener) Adds a detach listener for this element.addEventListener
(String eventType, DomEventListener listener) Adds an event listener for the given event type.addPropertyChangeListener
(String name, PropertyChangeListener listener) Adds a property change listener which is triggered when the property's value is updated on the server side.addPropertyChangeListener
(String propertyName, String domEventName, PropertyChangeListener listener) Adds a property change listener and configures the property to be synchronized to the server when a given DOM event is fired.<T extends Component>
TCreates a new component instance using this element.Attaches shadow root node.callJsFunction
(String functionName, Serializable... arguments) Calls the given function on the element with the given arguments.static Element
createText
(String text) Creates a text node with the given text.executeJs
(String expression, Serializable... parameters) Asynchronously runs the given JavaScript expression in the browser in the context of this element.static Element
Gets the element mapped to the given state node.static Element
get
(StateNode node, ElementStateProvider stateProvider) Gets the element mapped to the given state node and element state provider.getAttribute
(String attribute) Gets the value of the given attribute.Gets the defined attribute names.getChild
(int index) Returns the child element at the given position.int
Gets the number of child elements.Gets all the children of this element.Gets the set of CSS class names used for this element.Gets the component this element has been mapped to, if any.Gets the outer HTML for the element.Gets the parent element.getProperty
(String name) Gets the value of the given property as a string.boolean
getProperty
(String name, boolean defaultValue) Gets the value of the given property as a boolean, or the given default value if the underlying value isnull
.double
getProperty
(String name, double defaultValue) Gets the value of the given property as a double, or the given default value if the underlying value isnull
int
getProperty
(String name, int defaultValue) Gets the value of the given property as an integer, or the given default value if the underlying value isnull
getProperty
(String name, String defaultValue) Gets the value of the given property as a string.Gets the defined property names.getPropertyRaw
(String name) Gets the raw property value without any value conversion.protected Element
getSelf()
Gets the narrow typed reference to this object.Gets the shadow root of the element, if any.getStyle()
Gets the style instance for managing element inline styles.getTag()
Gets the tag name for the element.getText()
Gets the text content of this element.Gets the text content of this element tree.Gets the set of the theme names applied to the corresponding element intheme
attribute.boolean
hasAttribute
(String attribute) Checks if the given attribute has been set.boolean
hasProperty
(String name) Checks whether this element has a property with the given name.boolean
Get the enabled state of the element.boolean
Checks whether this element represents a text node.boolean
Gets the element visibility value.removeAttribute
(String attribute) Removes the given attribute.Removes this element from its parent.Removes this element from its parent and state tree.removeProperty
(String name) Removes the given property.Executes the similarly named DOM method on the client side.scrollIntoView
(ScrollOptions scrollOptions) Executes the similarly named DOM method on the client side.setAttribute
(String attribute, boolean value) Sets the given attribute to the given boolean value.setAttribute
(String attribute, AbstractStreamResource resource) Sets the given attribute to the givenStreamResource
value.setAttribute
(String attribute, String value) Sets the given attribute to the given value.setEnabled
(boolean enabled) Sets the enabled state of the element.setProperty
(String name, boolean value) Sets the given property to the given boolean value.setProperty
(String name, double value) Sets the given property to the given numeric value.setProperty
(String name, String value) Sets the given property to the given string value.setPropertyBean
(String name, Object value) Sets the given property to the given bean, converted to a JSON object.setPropertyJson
(String name, elemental.json.JsonValue value) Sets the given property to the given JSON value.<T> Element
setPropertyList
(String name, List<T> value) Sets the given property to the given list of beans or primitive values, converted to a JSON array.setPropertyMap
(String name, Map<String, ?> value) Sets the given property to the given map of beans or primitive values, converted to a JSON object.Sets the text content of this element, replacing any existing children.setVisible
(boolean visible) Sets the element visibility value.toString()
Methods inherited from class com.vaadin.flow.dom.Node
accept, appendChild, appendChild, appendVirtualChild, appendVirtualChild, ensureChildHasParent, equals, getNode, getParentNode, getStateProvider, hashCode, indexOfChild, insertChild, insertChild, isVirtualChild, removeAllChildren, removeChild, removeChild, removeChild, removeVirtualChild, removeVirtualChild, setChild
-
Constructor Details
-
Element
Private constructor for initializing with an existing node and state provider.- Parameters:
node
- the state node, not nullstateProvider
- the state provider, not null
-
Element
Creates an element using the given tag name.- Parameters:
tag
- the tag name of the element. Must be a non-empty string and can contain letters, numbers and dashes (-)
-
-
Method Details
-
get
Gets the element mapped to the given state node.- Parameters:
node
- the state node, notnull
- Returns:
- the element for the node, not
null
-
get
Gets the element mapped to the given state node and element state provider.- Parameters:
node
- the state nodestateProvider
- the element state provider- Returns:
- an element for the node and state provider, not
null
-
getChildCount
public int getChildCount()Gets the number of child elements.If the property "innerHTML" has been set explicitly then its value (the new element structure) won't be populated on the server side and this method will return
0
.- Overrides:
getChildCount
in classNode<Element>
- Returns:
- the number of child elements
- See Also:
-
getChild
Returns the child element at the given position.If property "innerHTML" has been set explicitly then its value (the new element structure) won't be populated on the server side and this method will not work.
-
getChildren
Gets all the children of this element.If property "innerHTML" has been set explicitly then its value (the new element structure) won't be populated on the server side and this method returns an empty stream.
- Overrides:
getChildren
in classNode<Element>
- Returns:
- a stream of children
- See Also:
-
createText
Creates a text node with the given text.- Parameters:
text
- the text in the node,null
is interpreted as an empty string- Returns:
- an element representing the text node, never
null
-
getTag
Gets the tag name for the element.- Returns:
- the tag name
-
setAttribute
Sets the given attribute to the given value.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
An attribute always has a String key and a String value.
Note: An empty attribute value ("") will be rendered as <div something> and not <div something="">.
Note that setting the attribute
class
will override anything that has been set previously viagetClassList()
.Note that you cannot set the attribute
style
using this method. Instead you should usegetStyle()
object.Note that attribute changes made on the server are sent to the client but attribute changes made on the client side are not reflected back to the server.
- Parameters:
attribute
- the name of the attributevalue
- the value of the attribute, not null- Returns:
- this element
-
setAttribute
Sets the given attribute to the given boolean value. Setting the value totrue
will internally set the value to""
, which will be rendered as <div name>, i.e. without any explicit value. Setting the value tofalse
is a shorthand for removing the attribute.Use
hasAttribute(String)
to check whether a boolean attribute has been set.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
- Parameters:
attribute
- the name of the attributevalue
- the value of the attribute- Returns:
- this element
- See Also:
-
setAttribute
Sets the given attribute to the givenStreamResource
value.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
This is a convenience method to register a
StreamResource
instance into the session and use the registered resource URI as an element attribute.- Parameters:
attribute
- the name of the attributeresource
- the resource value, not null- Returns:
- this element
- See Also:
-
getAttribute
Gets the value of the given attribute.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
An attribute always has a String key and a String value.
Note that for attribute
class
the contents of thegetClassList()
collection are returned as a single concatenated string.Note that for attribute
style
the contents of thegetStyle()
object are returned as a single concatenated string.Note that attribute changes made on the server are sent to the client but attribute changes made on the client side are not reflected back to the server.
- Parameters:
attribute
- the name of the attribute- Returns:
- the value of the attribute or null if the attribute has not been set
-
hasAttribute
Checks if the given attribute has been set.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
Note that attribute changes made on the server are sent to the client but attribute changes made on the client side are not reflected back to the server.
- Parameters:
attribute
- the name of the attribute- Returns:
- true if the attribute has been set, false otherwise
-
getAttributeNames
Gets the defined attribute names.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
Note that attribute changes made on the server are sent to the client but attribute changes made on the client side are not reflected back to the server.
- Returns:
- a stream of defined attribute names
-
removeAttribute
Removes the given attribute.Attribute names are considered case insensitive and all names will be converted to lower case automatically.
If the attribute has not been set, does nothing.
Note that attribute changes made on the server are sent to the client but attribute changes made on the client side are not reflected back to the server.
- Parameters:
attribute
- the name of the attribute- Returns:
- this element
-
addEventListener
Adds an event listener for the given event type.Event listeners are triggered in the order they are registered.
- Parameters:
eventType
- the type of event to listen to, notnull
listener
- the listener to add, notnull
- Returns:
- a handle that can be used for configuring or removing the listener
- See Also:
-
removeFromParent
Removes this element from its parent.Has no effect if the element does not have a parent
- Returns:
- this element
-
removeFromTree
Removes this element from its parent and state tree.- Returns:
- this element
-
getParent
Gets the parent element.The method may return
null
if the parent is not an element but aNode
.- Returns:
- the parent element or null if this element does not have a parent or the parent is not an element
- See Also:
-
setProperty
Sets the given property to the given string value.Note in order to update the following properties, you need to use the specific API for that:
Properties with different API Property Method classList / className getClassList()
style getStyle()
textContent getText()
andgetTextRecursively()
Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.The "innerHTML" property has an impact on the descendants structure of the element. So setting the "innerHTML" property removes all the children.
- Parameters:
name
- the property name, notnull
value
- the property value- Returns:
- this element
-
setProperty
Sets the given property to the given boolean value.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
value
- the property value- Returns:
- this element
-
setProperty
Sets the given property to the given numeric value.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
value
- the property value- Returns:
- this element
-
setPropertyJson
Sets the given property to the given JSON value.Please note that this method does not accept
null
as a value, sinceJson.createNull()
should be used instead for JSON values.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
value
- the property value, notnull
- Returns:
- this element
-
setPropertyBean
Sets the given property to the given bean, converted to a JSON object.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
value
- the property value, notnull
- Returns:
- this element
-
setPropertyList
Sets the given property to the given list of beans or primitive values, converted to a JSON array.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Type Parameters:
T
- the type of items in the list- Parameters:
name
- the property name, notnull
value
- the property value, notnull
- Returns:
- this element
-
setPropertyMap
Sets the given property to the given map of beans or primitive values, converted to a JSON object.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
value
- the property value, notnull
- Returns:
- this element
-
addPropertyChangeListener
Adds a property change listener which is triggered when the property's value is updated on the server side.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name to add the listener for, notnull
listener
- listener to get notifications about property value changes, notnull
- Returns:
- an event registration handle for removing the listener
- See Also:
-
addPropertyChangeListener
public DomListenerRegistration addPropertyChangeListener(String propertyName, String domEventName, PropertyChangeListener listener) Adds a property change listener and configures the property to be synchronized to the server when a given DOM event is fired. #seeaddPropertyChangeListener(String, PropertyChangeListener)
- Parameters:
propertyName
- the name of the element property to listen to, notnull
domEventName
- the name of the DOM event for which the property should be synchronized to the server, notnull
listener
- the property change listener not add, notnull
- Returns:
- a handle that can be used for configuring or removing the listener
- Since:
- 1.3
-
getProperty
Gets the value of the given property as a string. The returned value is converted to a string if it has been set as some other type.- Parameters:
name
- the property name, notnull
defaultValue
- the value to return if the property is not set, or if the value isnull
- Returns:
- the property value
-
getProperty
Gets the value of the given property as a string.- Parameters:
name
- the property name, notnull
- Returns:
- the property value, or
null
if no value is set
-
getProperty
Gets the value of the given property as a boolean, or the given default value if the underlying value isnull
.A value defined as some other type than boolean is converted according to JavaScript semantics:
- String values are
true
, except for the empty string. - Numerical values are
true
, except for 0 andNaN
. - JSON object and JSON array values are always
true
.
- Parameters:
name
- the property name, notnull
defaultValue
- the value to return if the property is not set, or if the value isnull
- Returns:
- the property value
- String values are
-
getProperty
Gets the value of the given property as a double, or the given default value if the underlying value isnull
A value defined as some other type than double is converted according to JavaScript semantics:
- String values are parsed to a number.
NaN
is returned if the string can't be parsed. - boolean
true
is 1, booleanfalse
is 0. - JSON object and JSON array values are always
NaN
.
- Parameters:
name
- the property name, notnull
defaultValue
- the value to return if the property is not set, or if the value isnull
- Returns:
- the property value
- String values are parsed to a number.
-
getProperty
Gets the value of the given property as an integer, or the given default value if the underlying value isnull
The value is converted in the same way as for
getProperty(String, double)
, and then truncated toint
.- Parameters:
name
- the property name, notnull
defaultValue
- the value to return if the property is not set, or if the value isnull
- Returns:
- the property value
-
getPropertyRaw
Gets the raw property value without any value conversion. The type of the value isString
,Double
,Boolean
orJsonValue
.null
is returned if there is no property with the given name or if the value is set tonull
.- Parameters:
name
- the property name, not null- Returns:
- the raw property value, or
null
-
removeProperty
Removes the given property.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
andDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
- Returns:
- this element
-
hasProperty
Checks whether this element has a property with the given name.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Parameters:
name
- the property name, notnull
- Returns:
true
if the property is present; otherwisefalse
-
getPropertyNames
Gets the defined property names.Note that properties changed on the server are updated on the client but changes made on the client side are not reflected back to the server unless configured using
addPropertyChangeListener(String, String, PropertyChangeListener)
orDomListenerRegistration.synchronizeProperty(String)
.- Returns:
- a stream of defined property names
-
isTextNode
public boolean isTextNode()Checks whether this element represents a text node.- Returns:
true
if this element is a text node; otherwisefalse
-
setText
Sets the text content of this element, replacing any existing children.- Parameters:
textContent
- the text content to set,null
is interpreted as an empty string- Returns:
- this element
-
getText
Gets the text content of this element. This includes only the text from any immediate child text nodes, but ignores text inside child elements. UsegetTextRecursively()
to get the full text that recursively includes the text content of the entire element tree.- Returns:
- the text content of this element
- See Also:
-
getTextRecursively
Gets the text content of this element tree. This includes the text content of all child nodes recursively. UsegetText()
to only get the text from text nodes that are immediate children of this element.- Returns:
- the text content of this element and all child elements
- See Also:
-
getClassList
Gets the set of CSS class names used for this element. The returned set can be modified to add or remove class names. The contents of the set is also reflected in the value of theclass
attribute.Despite the name implying a list being returned, the return type is actually a
Set
since the in-browser return value behaves like aSet
in Java.- Returns:
- a list of class names, never
null
-
getThemeList
Gets the set of the theme names applied to the corresponding element intheme
attribute. The set returned can be modified to add or remove the theme names, changes to the set will be reflected in the attribute value.Despite the name implying a list being returned, the return type is actually a
Set
since the in-browser return value behaves like aSet
in Java.- Returns:
- a list of theme names, never
null
-
getStyle
Gets the style instance for managing element inline styles.- Returns:
- the style object for the element
-
getComponent
Gets the component this element has been mapped to, if any.- Returns:
- an optional component, or an empty optional if no component has been mapped to this element
-
addAttachListener
Adds an attach listener for this element. It is invoked when the element is attached to a UI.When a hierarchy of elements is being attached, the event is fired child-first.
- Parameters:
attachListener
- the attach listener to add- Returns:
- an event registration handle for removing the listener
-
addDetachListener
Adds a detach listener for this element. It is invoked when the element is detached from a UI.When a hierarchy of elements is being detached, the event is fired child-first.
- Parameters:
detachListener
- the detach listener to add- Returns:
- an event registration handle for removing the listener
-
toString
-
getOuterHTML
Gets the outer HTML for the element.This operation recursively iterates the element and all children and should not be called unnecessarily.
- Returns:
- the outer HTML for the element
-
as
Creates a new component instance using this element.You can use this method when you have an element instance and want to use it through the API of a
Component
class.This method makes the component instance use the underlying element but does not attach the new component instance to the element so that
getComponent()
would return the component instance. This means thatgetParent()
,getChildren()
and possibly other methods which rely onElement
->Component
mappings will not work.To also map the element to the
Component
instance, useComponent.from(Element, Class)
- Type Parameters:
T
- the component type- Parameters:
componentType
- the component type- Returns:
- the component instance connected to the given element
- See Also:
-
callJsFunction
Calls the given function on the element with the given arguments.It is possible to get access to the return value of the execution by registering a handler with the returned pending result. If no handler is registered, the return value will be ignored.
The function will be called after all pending DOM updates have completed, at the same time that
Page.executeJs(String, Serializable...)
calls are invoked.If the element is not attached or not visible, the function call will be deferred until the element is attached and visible.
- Parameters:
functionName
- the name of the function to call, may contain dots to indicate a function on a property.arguments
- the arguments to pass to the function. Must be of a type supported by the communication mechanism, as defined byJsonCodec
- Returns:
- a pending result that can be used to get a return value from the execution
- See Also:
-
executeJs
Asynchronously runs the given JavaScript expression in the browser in the context of this element. The returnedPendingJavaScriptResult
can be used to retrieve anyreturn
value from the JavaScript expression. If no return value handler is registered, the return value will be ignored.This element will be available to the expression as
this
. The given parameters will be available as variables named$0
,$1
, and so on. Supported parameter types are:String
Integer
Double
Boolean
JsonValue
Element
(will be sent asnull
if the server-side element instance is not attached when the invocation is sent to the client)
'prefix' + $0
instead of'prefix$0'
andvalue[$0]
instead ofvalue.$0
since JavaScript variables aren't evaluated inside strings or property names.If the element is not attached or not visible, the function call will be deferred until the element is attached and visible.
- Parameters:
expression
- the JavaScript expression to invokeparameters
- parameters to pass to the expression- Returns:
- a pending result that can be used to get a value returned from the expression
-
attachShadow
Attaches shadow root node.- Returns:
- the attached shadow root
-
getShadowRoot
Gets the shadow root of the element, if any.- Returns:
- an optional shadow root node, or an empty optional if no shadow root has been attached
-
setVisible
Sets the element visibility value. Also executes pending javascript invocations, if their execution was requested while the element was not visible, and the element is now set as visible.- Parameters:
visible
- the element visibility value- Returns:
- this element
-
isVisible
public boolean isVisible()Gets the element visibility value.- Returns:
true
if the element is visible,false
otherwise
-
setEnabled
Sets the enabled state of the element.- Parameters:
enabled
- the enabled state- Returns:
- the element
-
isEnabled
public boolean isEnabled()Get the enabled state of the element.Object may be enabled by itself by but if its ascendant is disabled then it's considered as (implicitly) disabled.
- Returns:
true
if node is enabled,false
otherwise
-
getSelf
Description copied from class:Node
Gets the narrow typed reference to this object. -
scrollIntoView
Executes the similarly named DOM method on the client side.- Returns:
- the element
- See Also:
-
scrollIntoView
Executes the similarly named DOM method on the client side.- Parameters:
scrollOptions
- the scroll options to pass to the method- Returns:
- the element
- See Also:
-