ui.Control Extends goog.ui.Component
Base class for UI controls. Extends goog.ui.Component by adding the following:
  • a goog.events.KeyHandler, to simplify keyboard handling,
  • a pluggable renderer framework, to simplify the creation of simple controls without the need to subclass this class,
  • the notion of component content, like a text caption or DOM structure displayed in the component (e.g. a button label),
  • getter and setter for component content, as well as a getter and setter specifically for caption text (for convenience),
  • support for hiding/showing the component,
  • fine-grained control over supported states and state transition events, and
  • default mouse and keyboard event handling.
This class has sufficient built-in functionality for most simple UI controls. All controls dispatch SHOW, HIDE, ENTER, LEAVE, and ACTION events on show, hide, mouseover, mouseout, and user action, respectively. Additional states are also supported. See closure/demos/control.html for example usage.

Inheritance

Constructor

goog.ui.Control(opt_contentopt_rendereropt_domHelper)

Parameters

opt_content : goog.ui.ControlContent=
Text caption or DOM structure to display as the content of the control (if any).
opt_renderer : goog.ui.ControlRenderer=
Renderer used to render or decorate the component; defaults to goog.ui.ControlRenderer.
opt_domHelper : goog.dom.DomHelper=
Optional DOM helper, used for document interaction.

Instance Methods

Public Protected Private
addClassName(className)
Adds the given class name to the list of classes to be applied to the component's root element.
Arguments:
className : string
Additional class name to be applied to the component's root element.
code »
canDecorate(element) boolean
Returns true if the given element can be decorated by this component. Overrides goog.ui.Component#canDecorate.
Arguments:
element : Element
Element to decorate.
Returns: boolean  Whether the element can be decorated by this component.
code »
createDom()
Creates the control's DOM. Overrides goog.ui.Component#createDom by delegating DOM manipulation to the control's renderer.
code »
decorateInternal(element)
Decorates the given element with this component. Overrides goog.ui.Component#decorateInternal by delegating DOM manipulation to the control's renderer.
Arguments:
element : Element
Element to decorate.
code »
disposeInternal()
No description.
code »
enableClassName(classNameenable)
Adds or removes the given class name to/from the list of classes to be applied to the component's root element.
Arguments:
className : string
CSS class name to add or remove.
enable : boolean
Whether to add or remove the class name.
code »
enableMouseEventHandling_(enable)
Enables or disables mouse event handling on the control.
Arguments:
enable : boolean
Whether to enable mouse event handling.
code »
enterDocument()
Configures the component after its DOM has been rendered, and sets up event handling. Overrides goog.ui.Component#enterDocument.
code »
exitDocument()
Cleans up the component before its DOM is removed from the document, and removes event handlers. Overrides goog.ui.Component#exitDocument by making sure that components that are removed from the document aren't focusable (i.e. have no tab index).
code »
getCaption() string
No description.
Returns: string  Text caption of the control or empty string if none.
code »
getContent() goog.ui.ControlContent
Returns the text caption or DOM structure displayed in the component.
Returns: goog.ui.ControlContent  Text caption or DOM structure comprising the component's contents.
code »
getContentElement() Element
Returns the DOM element into which child components are to be rendered, or null if the control itself hasn't been rendered yet. Overrides goog.ui.Component#getContentElement by delegating to the renderer.
Returns: Element  Element to contain child elements (null if none).
code »
getExtraClassNames() ?Array.<string>
Returns any additional class name(s) to be applied to the component's root element, or null if no extra class names are needed.
Returns: ?Array.<string>  Additional class names to be applied to the component's root element (null if none).
code »
getKeyEventTarget() Element
Returns the DOM element on which the control is listening for keyboard events (null if none).
Returns: Element  Element on which the control is listening for key events.
code »
getKeyHandler() !goog.events.KeyHandler
Returns the keyboard event handler for this component, lazily created the first time this method is called. Considered protected; should only be used within this package and by subclasses.
Returns: !goog.events.KeyHandler  Keyboard event handler for this component.
code »
getPreferredAriaRole() ?goog.a11y.aria.Role
Returns the control's preferred ARIA role. This can be used by a control to override the role that would be assigned by the renderer. This is useful in cases where a different ARIA role is appropriate for a control because of the context in which it's used. E.g., a goog.ui.MenuButton added to a goog.ui.Select should have an ARIA role of LISTBOX and not MENUITEM.
Returns: ?goog.a11y.aria.Role  This control's preferred ARIA role or null if no preferred ARIA role is set.
code »
getRenderer() goog.ui.ControlRenderer | undefined
Returns the renderer used by this component to render itself or to decorate an existing element.
Returns: goog.ui.ControlRenderer | undefined  Renderer used by the component (undefined if none).
code »
getState() number
Returns the component's state as a bit mask of goog.ui.Component.States.
Returns: number  Bit mask representing component state.
code »
handleBlur(e)
Handles blur events on the component's key event target element. Always deactivates the component. In addition, if the component is focusable, updates its state and styling to indicate that it no longer has keyboard focus. Considered protected; should only be used within this package and by subclasses. Warning: IE dispatches focus and blur events asynchronously!
Arguments:
e : goog.events.Event
Blur event to handle.
code »
handleContextMenu(e)
Handles contextmenu events.
Arguments:
e : goog.events.BrowserEvent
Event to handle.
code »
handleDblClick(e)
Handles dblclick events. Should only be registered if the user agent is IE. If the component is enabled, performs its associated action by calling performActionInternal. This is used to allow more performant buttons in IE. In IE, no mousedown event is fired when that mousedown will trigger a dblclick event. Because of this, a user clicking quickly will only cause ACTION events to fire on every other click. This is a workaround to generate ACTION events for every click. Unfortunately, this workaround won't ever trigger the ACTIVE state. This is roughly the same behaviour as if this were a 'button' element with a listener on mouseup. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.Event
Mouse event to handle.
code »
handleFocus(e)
Handles focus events on the component's key event target element. If the component is focusable, updates its state and styling to indicate that it now has keyboard focus. Considered protected; should only be used within this package and by subclasses. Warning: IE dispatches focus and blur events asynchronously!
Arguments:
e : goog.events.Event
Focus event to handle.
code »
handleKeyEvent(e) boolean
Attempts to handle a keyboard event, if the component is enabled and visible, by calling handleKeyEventInternal. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.KeyEvent
Key event to handle.
Returns: boolean  Whether the key event was handled.
code »
handleKeyEventInternal(e) boolean
Attempts to handle a keyboard event; returns true if the event was handled, false otherwise. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.KeyEvent
Key event to handle.
Returns: boolean  Whether the key event was handled.
code »
handleMouseDown(e)
Handles mousedown events. If the component is enabled, highlights and activates it. If the component isn't configured for keyboard access, prevents it from receiving keyboard focus. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.Event
Mouse event to handle.
code »
handleMouseOut(e)
Handles mouseout events. Dispatches a LEAVE event; if the event isn't canceled, and the component supports auto-highlighting, deactivates and un-highlights the component. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.BrowserEvent
Mouse event to handle.
code »
handleMouseOver(e)
Handles mouseover events. Dispatches an ENTER event; if the event isn't canceled, the component is enabled, and it supports auto-highlighting, highlights the component. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.BrowserEvent
Mouse event to handle.
code »
handleMouseUp(e)
Handles mouseup events. If the component is enabled, highlights it. If the component has previously been activated, performs its associated action by calling performActionInternal, then deactivates it. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.Event
Mouse event to handle.
code »
hasState(state) boolean
Returns true if the component is in the specified state, false otherwise.
Arguments:
state : goog.ui.Component.State
State to check.
Returns: boolean  Whether the component is in the given state.
code »
isActive() boolean
Returns true if the component is active (pressed), false otherwise.
Returns: boolean  Whether the component is active.
code »
isAllowTextSelection() boolean
Returns true if the control allows text selection within its DOM, false otherwise. Controls that disallow text selection have the appropriate unselectable styling applied to their elements. Note that controls hosted in containers will report that they allow text selection even if their container disallows text selection.
Returns: boolean  Whether the control allows text selection.
code »
isAutoState(state) boolean
Returns true if the component provides default event handling for the state, false otherwise.
Arguments:
state : goog.ui.Component.State
State to check.
Returns: boolean  Whether the component provides default event handling for the state.
code »
isChecked() boolean
Returns true if the component is checked, false otherwise.
Returns: boolean  Whether the component is checked.
code »
isDispatchTransitionEvents(state) boolean
Returns true if the component is set to dispatch transition events for the given state, false otherwise.
Arguments:
state : goog.ui.Component.State
State to check.
Returns: boolean  Whether the component dispatches transition events for the state.
code »
isEnabled() boolean
Returns true if the component is enabled, false otherwise.
Returns: boolean  Whether the component is enabled.
code »
isFocused() boolean
Returns true if the component is styled to indicate that it has keyboard focus, false otherwise. Note that isFocused() returning true doesn't guarantee that the component's key event target has keyborad focus, only that it is styled as such.
Returns: boolean  Whether the component is styled to indicate as having keyboard focus.
code »
isHandleMouseEvents() boolean
Returns true if the control is configured to handle its own mouse events, false otherwise. Controls not hosted in goog.ui.Containers have to handle their own mouse events, but controls hosted in containers may allow their parent to handle mouse events on their behalf. Considered protected; should only be used within this package and by subclasses.
Returns: boolean  Whether the control handles its own mouse events.
code »
isHighlighted() boolean
Returns true if the component is currently highlighted, false otherwise.
Returns: boolean  Whether the component is highlighted.
code »
isOpen() boolean
Returns true if the component is open (expanded), false otherwise.
Returns: boolean  Whether the component is open.
code »
isParentDisabled_() boolean
Returns true if the control has a parent that is itself disabled, false otherwise.
Returns: boolean  Whether the component is hosted in a disabled container.
code »
isSelected() boolean
Returns true if the component is selected, false otherwise.
Returns: boolean  Whether the component is selected.
code »
isSupportedState(state) boolean
Returns true if the component supports the specified state, false otherwise.
Arguments:
state : goog.ui.Component.State
State to check.
Returns: boolean  Whether the component supports the given state.
code »
isTransitionAllowed(stateenable) boolean
Returns true if the transition into or out of the given state is allowed to proceed, false otherwise. A state transition is allowed under the following conditions:
  • the component supports the state,
  • the component isn't already in the target state,
  • either the component is configured not to dispatch events for this state transition, or a transition event was dispatched and wasn't canceled by any event listener, and
  • the component hasn't been disposed of
Considered protected; should only be used within this package and by subclasses.
Arguments:
state : goog.ui.Component.State
State to/from which the control is transitioning.
enable : boolean
Whether the control is entering or leaving the state.
Returns: boolean  Whether the state transition is allowed to proceed.
code »
isVisible() boolean
Returns true if the component's visibility is set to visible, false if it is set to hidden. A component that is set to hidden is guaranteed to be hidden from the user, but the reverse isn't necessarily true. A component may be set to visible but can otherwise be obscured by another element, rendered off-screen, or hidden using direct CSS manipulation.
Returns: boolean  Whether the component is visible.
code »
performActionInternal(e) boolean
Performs the appropriate action when the control is activated by the user. The default implementation first updates the checked and selected state of controls that support them, then dispatches an ACTION event. Considered protected; should only be used within this package and by subclasses.
Arguments:
e : goog.events.Event
Event that triggered the action.
Returns: boolean  Whether the action is allowed to proceed.
code »
removeClassName(className)
Removes the given class name from the list of classes to be applied to the component's root element.
Arguments:
className : string
Class name to be removed from the component's root element.
code »
setActive(active)
Activates or deactivates the component. Does nothing if this state transition is disallowed.
Arguments:
active : boolean
Whether to activate or deactivate the component.
code »
setAllowTextSelection(allow)
Allows or disallows text selection within the control's DOM.
Arguments:
allow : boolean
Whether the control should allow text selection.
code »
setAutoStates(statesenable)
Enables or disables automatic event handling for the given state(s).
Arguments:
states : number
Bit mask of goog.ui.Component.States for which default event handling is to be enabled or disabled.
enable : boolean
Whether the component should provide default event handling for the state(s).
code »
setCaption(caption)
Sets the text caption of the component.
Arguments:
caption : string
Text caption of the component.
code »
setChecked(check)
Checks or unchecks the component. Does nothing if this state transition is disallowed.
Arguments:
check : boolean
Whether to check or uncheck the component.
code »
setContent(content)
Sets the component's content to the given text caption, element, or array of nodes. (If the argument is an array of nodes, it must be an actual array, not an array-like object.)
Arguments:
content : goog.ui.ControlContent
Text caption or DOM structure to set as the component's contents.
code »
setContentInternal(content)
Sets the component's content to the given text caption, element, or array of nodes. Unlike #setContent, doesn't modify the component's DOM. Called by renderers during element decoration. This should only be used by subclasses and its associated renderers.
Arguments:
content : goog.ui.ControlContent
Text caption or DOM structure to set as the component's contents.
code »
setDispatchTransitionEvents(statesenable)
Enables or disables transition events for the given state(s). Controls handle state transitions internally by default, and only dispatch state transition events if explicitly requested to do so by calling this method.
Arguments:
states : number
Bit mask of goog.ui.Component.States for which transition events should be enabled or disabled.
enable : boolean
Whether transition events should be enabled.
code »
setEnabled(enable)
Enables or disables the component. Does nothing if this state transition is disallowed. If the component is both visible and focusable, updates its focused state and tab index as needed. If the component is being disabled, ensures that it is also deactivated and un-highlighted first. Note that the component's enabled/disabled state is "locked" as long as it is hosted in a goog.ui.Container that is itself disabled; this is to prevent clients from accidentally re-enabling a control that is in a disabled container.
Arguments:
enable : boolean
Whether to enable or disable the component.
code »
setFocused(focused)
Applies or removes styling indicating that the component has keyboard focus. Note that unlike the other "set" methods, this method is called as a result of the component's element having received or lost keyboard focus, not the other way around, so calling setFocused(true) doesn't guarantee that the component's key event target has keyboard focus, only that it is styled as such.
Arguments:
focused : boolean
Whether to apply or remove styling to indicate that the component's element has keyboard focus.
code »
setHandleMouseEvents(enable)
Enables or disables mouse event handling for the control. Containers may use this method to disable mouse event handling in their child controls. Considered protected; should only be used within this package and by subclasses.
Arguments:
enable : boolean
Whether to enable or disable mouse event handling.
code »
setHighlighted(highlight)
Highlights or unhighlights the component. Does nothing if this state transition is disallowed.
Arguments:
highlight : boolean
Whether to highlight or unhighlight the component.
code »
setOpen(open)
Opens (expands) or closes (collapses) the component. Does nothing if this state transition is disallowed.
Arguments:
open : boolean
Whether to open or close the component.
code »
setPreferredAriaRole(role)
Sets the control's preferred ARIA role. This can be used to override the role that would be assigned by the renderer. This is useful in cases where a different ARIA role is appropriate for a control because of the context in which it's used. E.g., a goog.ui.MenuButton added to a goog.ui.Select should have an ARIA role of LISTBOX and not MENUITEM.
Arguments:
role : goog.a11y.aria.Role
This control's preferred ARIA role.
code »
setRenderer(renderer)
Registers the given renderer with the component. Changing renderers after the component has entered the document is an error.
Arguments:
renderer : goog.ui.ControlRenderer
Renderer used by the component.
code »
setRightToLeft()
No description.
code »
setSelected(select)
Selects or unselects the component. Does nothing if this state transition is disallowed.
Arguments:
select : boolean
Whether to select or unselect the component.
code »
setState(stateenable)
Sets or clears the given state on the component, and updates its styling accordingly. Does nothing if the component is already in the correct state or if it doesn't support the specified state. Doesn't dispatch any state transition events; use advisedly.
Arguments:
state : goog.ui.Component.State
State to set or clear.
enable : boolean
Whether to set or clear the state (if supported).
code »
setStateInternal(state)
Sets the component's state to the state represented by a bit mask of goog.ui.Component.States. Unlike #setState, doesn't update the component's styling, and doesn't reject unsupported states. Called by renderers during element decoration. Considered protected; should only be used within this package and by subclasses. This should only be used by subclasses and its associated renderers.
Arguments:
state : number
Bit mask representing component state.
code »
setSupportedState(statesupport)
Enables or disables support for the given state. Disabling support for a state while the component is in that state is an error.
Arguments:
state : goog.ui.Component.State
State to support or de-support.
support : boolean
Whether the component should support the state.
code »
setVisible(visibleopt_force) boolean
Shows or hides the component. Does nothing if the component already has the requested visibility. Otherwise, dispatches a SHOW or HIDE event as appropriate, giving listeners a chance to prevent the visibility change. When showing a component that is both enabled and focusable, ensures that its key target has a tab index. When hiding a component that is enabled and focusable, blurs its key target and removes its tab index.
Arguments:
visible : boolean
Whether to show or hide the component.
opt_force : boolean=
If true, doesn't check whether the component already has the requested visibility, and doesn't dispatch any events.
Returns: boolean  Whether the visibility was changed.
code »
addChild(childopt_render)
Adds the specified component as the last child of this component. See goog.ui.Component#addChildAt for detailed semantics.
Arguments:
child : goog.ui.Component
The new child component.
opt_render : boolean=
If true, the child component will be rendered into the parent.
code »
addChildAt(childindexopt_render) void
Adds the specified component as a child of this component at the given 0-based index. Both addChild and addChildAt assume the following contract between parent and child components:
  • the child component's element must be a descendant of the parent component's element, and
  • the DOM state of the child component must be consistent with the DOM state of the parent component (see isInDocument) in the steady state -- the exception is to addChildAt(child, i, false) and then immediately decorate/render the child.
In particular, parent.addChild(child) will throw an error if the child component is already in the document, but the parent isn't. Clients of this API may call addChild and addChildAt with opt_render set to true. If opt_render is true, calling these methods will automatically render the child component's element into the parent component's element. If the parent does not yet have an element, then createDom will automatically be invoked on the parent before rendering the child. Invoking parent.addChild(child, true) will throw an error if the child component is already in the document, regardless of the parent's DOM state. If opt_render is true and the parent component is not already in the document, enterDocument will not be called on this component at this point. Finally, this method also throws an error if the new child already has a different parent, or the given index is out of bounds.
Arguments:
child : goog.ui.Component
The new child component.
index : number
0-based index at which the new child component is to be added; must be between 0 and the current child count (inclusive).
opt_render : boolean=
If true, the child component will be rendered into the parent.
Returns: void  Nada.
code »
canDecorate(element) boolean
Determines if a given element can be decorated by this type of component. This method should be overridden by inheriting objects.
Arguments:
element : Element
Element to decorate.
Returns: boolean  True if the element can be decorated, false otherwise.
code »
createDom()
Creates the initial DOM representation for the component. The default implementation is to set this.element_ = div.
code »
decorate(element)
Decorates the element for the UI component. If the element is in the document, the enterDocument method will be called. If goog.ui.Component.ALLOW_DETACHED_DECORATION is false, the caller must pass an element that is in the document.
Arguments:
element : Element
Element to decorate.
code »
decorateInternal(element)
Actually decorates the element. Should be overridden by inheriting objects. This method can assume there are checks to ensure the component has not already been rendered have occurred and that enter document will be called afterwards. This method is considered protected.
Arguments:
element : Element
Element to decorate.
code »
disposeInternal()
Disposes of the component. Calls exitDocument, which is expected to remove event handlers and clean up the component. Propagates the call to the component's children, if any. Removes the component's DOM from the document unless it was decorated.
code »
enterDocument()
Called when the component's element is known to be in the document. Anything using document.getElementById etc. should be done at this stage. If the component contains child components, this call is propagated to its children.
code »
exitDocument()
Called by dispose to clean up the elements and listeners created by a component, or by a parent component/application who has removed the component from the document but wants to reuse it later. If the component contains child components, this call is propagated to its children. It should be possible for the component to be rendered again once this method has been called.
code »
forEachChild(fopt_obj)
Calls the given function on each of this component's children in order. If opt_obj is provided, it will be used as the 'this' object in the function when called. The function should take two arguments: the child component and its 0-based index. The return value is ignored.
Arguments:
f : function(this:T,?,number):?
The function to call for every child component; should take 2 arguments (the child and its index).
opt_obj : T=
Used as the 'this' object in f when called.
code »
getChild(id) ?goog.ui.Component
Returns the child with the given ID, or null if no such child exists.
Arguments:
id : string
Child component ID.
Returns: ?goog.ui.Component  The child with the given ID; null if none.
code »
getChildAt(index) ?goog.ui.Component
Returns the child at the given index, or null if the index is out of bounds.
Arguments:
index : number
0-based index.
Returns: ?goog.ui.Component  The child at the given index; null if none.
code »
getChildCount() number
Returns the number of children of this component.
Returns: number  The number of children.
code »
getChildIds() !Array.<string>
Returns an array containing the IDs of the children of this component, or an empty array if the component has no children.
Returns: !Array.<string>  Child component IDs.
code »
getContentElement() Element
Returns the DOM element into which child components are to be rendered, or null if the component itself hasn't been rendered yet. This default implementation returns the component's root element. Subclasses with complex DOM structures must override this method.
Returns: Element  Element to contain child elements (null if none).
code »
getDomHelper() !goog.dom.DomHelper
Returns the dom helper that is being used on this component.
Returns: !goog.dom.DomHelper  The dom helper used on this component.
code »
getElement() Element
Gets the component's element.
Returns: Element  The element for the component.
code »
getElementByClass(className) Element
Returns the first element in this component's DOM with the provided className.
Arguments:
className : string
The name of the class to look for.
Returns: Element  The first item with the class name provided.
code »
getElementByFragment(idFragment) Element
Helper function for returning an element in the document with a unique id generated using makeId().
Arguments:
idFragment : string
The partial id.
Returns: Element  The element with the unique id, or null if it cannot be found.
code »
getElementStrict() !Element
Gets the component's element. This differs from getElement in that it assumes that the element exists (i.e. the component has been rendered/decorated) and will cause an assertion error otherwise (if assertion is enabled).
Returns: !Element  The element for the component.
code »
getElementsByClass(className) !goog.array.ArrayLike
Returns an array of all the elements in this component's DOM with the provided className.
Arguments:
className : string
The name of the class to look for.
Returns: !goog.array.ArrayLike  The items found with the class name provided.
code »
getFragmentFromId(id) string
Helper function for returning the fragment portion of an id generated using makeId().
Arguments:
id : string
Id generated with makeId().
Returns: string  Fragment.
code »
getHandler() !goog.events.EventHandler.<T>
Returns the event handler for this component, lazily created the first time this method is called.
Returns: !goog.events.EventHandler.<T>  Event handler for this component.
code »
getId() string
Gets the unique ID for the instance of this component. If the instance doesn't already have an ID, generates one on the fly.
Returns: string  Unique component ID.
code »
getModel() *
Returns the model associated with the UI component.
Returns: *  The model.
code »
getParent() ?goog.ui.Component
Returns the component's parent, if any.
Returns: ?goog.ui.Component  The parent component.
code »
getRequiredElementByClass(className) !Element
Similar to getElementByClass except that it expects the element to be present in the dom thus returning a required value. Otherwise, will assert.
Arguments:
className : string
The name of the class to look for.
Returns: !Element  The first item with the class name provided.
code »
hasChildren() boolean
Returns true if the component has children.
Returns: boolean  True if the component has children.
code »
indexOfChild(child) number
Returns the 0-based index of the given child component, or -1 if no such child is found.
Arguments:
child : ?goog.ui.Component
The child component.
Returns: number  0-based index of the child component; -1 if not found.
code »
isInDocument() boolean
Determines whether the component has been added to the document.
Returns: boolean  TRUE if rendered. Otherwise, FALSE.
code »
isRightToLeft() boolean
Returns true if the component is rendered right-to-left, false otherwise. The first time this function is invoked, the right-to-left rendering property is set if it has not been already.
Returns: boolean  Whether the control is rendered right-to-left.
code »
makeId(idFragment) string
Helper function for subclasses that gets a unique id for a given fragment, this can be used by components to generate unique string ids for DOM elements.
Arguments:
idFragment : string
A partial id.
Returns: string  Unique element id.
code »
makeIds(object) !Object
Makes a collection of ids. This is a convenience method for makeId. The object's values are the id fragments and the new values are the generated ids. The key will remain the same.
Arguments:
object : Object
The object that will be used to create the ids.
Returns: !Object  An object of id keys to generated ids.
code »
removeChild(childopt_unrender) goog.ui.Component
Removes the given child from this component, and returns it. Throws an error if the argument is invalid or if the specified child isn't found in the parent component. The argument can either be a string (interpreted as the ID of the child component to remove) or the child component itself. If opt_unrender is true, calls goog.ui.component#exitDocument on the removed child, and subsequently detaches the child's DOM from the document. Otherwise it is the caller's responsibility to clean up the child component's DOM.
Arguments:
child : string | goog.ui.Component | null
The ID of the child to remove, or the child component itself.
opt_unrender : boolean=
If true, calls exitDocument on the removed child component, and detaches its DOM from the document.
Returns: goog.ui.Component  The removed component, if any.
code »
removeChildAt(indexopt_unrender) goog.ui.Component
Removes the child at the given index from this component, and returns it. Throws an error if the argument is out of bounds, or if the specified child isn't found in the parent. See goog.ui.Component#removeChild for detailed semantics.
Arguments:
index : number
0-based index of the child to remove.
opt_unrender : boolean=
If true, calls exitDocument on the removed child component, and detaches its DOM from the document.
Returns: goog.ui.Component  The removed component, if any.
code »
removeChildren(opt_unrender) !Array.<goog.ui.Component>
Removes every child component attached to this one and returns them.
Arguments:
opt_unrender : boolean=
If true, calls #exitDocument on the removed child components, and detaches their DOM from the document.
Returns: !Array.<goog.ui.Component>  The removed components if any.
code »
render(opt_parentElement)
Renders the component. If a parent element is supplied, the component's element will be appended to it. If there is no optional parent element and the element doesn't have a parentNode then it will be appended to the document body. If this component has a parent component, and the parent component is not in the document already, then this will not call enterDocument on this component. Throws an Error if the component is already rendered.
Arguments:
opt_parentElement : Element=
Optional parent element to render the component into.
code »
renderBefore(sibling)
Renders the component before another element. The other element should be in the document already. Throws an Error if the component is already rendered.
Arguments:
sibling : Node
Node to render the component before.
code »
render_(opt_parentElementopt_beforeNode)
Renders the component. If a parent element is supplied, the component's element will be appended to it. If there is no optional parent element and the element doesn't have a parentNode then it will be appended to the document body. If this component has a parent component, and the parent component is not in the document already, then this will not call enterDocument on this component. Throws an Error if the component is already rendered.
Arguments:
opt_parentElement : Element=
Optional parent element to render the component into.
opt_beforeNode : Node=
Node before which the component is to be rendered. If left out the node is appended to the parent element.
code »
setElementInternal(element)
Sets the component's root element to the given element. Considered protected and final. This should generally only be called during createDom. Setting the element does not actually change which element is rendered, only the element that is associated with this UI component. This should only be used by subclasses and its associated renderers.
Arguments:
element : Element
Root element for the component.
code »
setId(id)
Assigns an ID to this component instance. It is the caller's responsibility to guarantee that the ID is unique. If the component is a child of a parent component, then the parent component's child index is updated to reflect the new ID; this may throw an error if the parent already has a child with an ID that conflicts with the new ID.
Arguments:
id : string
Unique component ID.
code »
setModel(obj)
Sets the model associated with the UI component.
Arguments:
obj : *
The model.
code »
setParent(parent)
Sets the parent of this component to use for event bubbling. Throws an error if the component already has a parent or if an attempt is made to add a component to itself as a child. Callers must use removeChild or removeChildAt to remove components from their containers before calling this method.
Arguments:
parent : goog.ui.Component
The parent component.
code »
setParentEventTarget()
Overrides goog.events.EventTarget#setParentEventTarget to throw an error if the parent component is set, and the argument is not the parent.
code »
setRightToLeft(rightToLeft)
Set is right-to-left. This function should be used if the component needs to know the rendering direction during dom creation (i.e. before #enterDocument is called and is right-to-left is set).
Arguments:
rightToLeft : boolean
Whether the component is rendered right-to-left.
code »
wasDecorated() boolean
No description.
Returns: boolean  Whether the component was decorated.
code »
addEventListener(typeopt_captureopt_handlerScope)
Use #listen instead, when possible. Otherwise, use goog.events.listen if you are passing Object (instead of Function) as handler. Adds an event listener to the event target. The same handler can only be added once per the type. Even if you add the same handler multiple times using the same type then it will only be called once when the event is dispatched.
Arguments:
type : string
The type of the event to listen for.
: ?function():? | ?{handleEvent:function():?
No description.
opt_capture : boolean=
In DOM-compliant browsers, this determines whether the listener is fired during the capture or bubble phase of the event.
opt_handlerScope : Object=
Object in whose scope to call the listener.
code »
assertInitialized_()
Asserts that the event target instance is initialized properly.
code »
dispatchEvent()
No description.
code »
disposeInternal()
Removes listeners from this object. Classes that extend EventTarget may need to override this method in order to remove references to DOM Elements and additional listeners.
code »
fireListeners()
No description.
code »
getListener()
No description.
code »
getListeners()
No description.
code »
getParentEventTarget() goog.events.EventTarget
Returns the parent of this event target to use for bubbling.
Returns: goog.events.EventTarget  The parent EventTarget or null if there is no parent.
code »
hasListener()
No description.
code »
listen()
No description.
code »
listenOnce()
No description.
code »
removeAllListeners()
No description.
code »
removeEventListener(typeopt_captureopt_handlerScope)
Use #unlisten instead, when possible. Otherwise, use goog.events.unlisten if you are passing Object (instead of Function) as handler. Removes an event listener from the event target. The handler must be the same object as the one added. If the handler has not been added then nothing is done.
Arguments:
type : string
The type of the event to listen for.
: ?function():? | ?{handleEvent:function():?
No description.
opt_capture : boolean=
In DOM-compliant browsers, this determines whether the listener is fired during the capture or bubble phase of the event.
opt_handlerScope : Object=
Object in whose scope to call the listener.
code »
setParentEventTarget(parent)
Sets the parent of this event target to use for capture/bubble mechanism.
Arguments:
parent : goog.events.EventTarget
Parent listenable (null if none).
code »
setTargetForTesting(target)
Sets the target to be used for event.target when firing event. Mainly used for testing. For example, see goog.testing.events.mixinListenable.
Arguments:
target : !Object
The target.
code »
unlisten()
No description.
code »
unlistenByKey()
No description.
code »
addOnDisposeCallback(callbackopt_scope)
Invokes a callback function when this object is disposed. Callbacks are invoked in the order in which they were added.
Arguments:
callback : function(this:T):?
The callback function.
opt_scope : T=
An optional scope to call the callback in.
code »
dispose() void
Disposes of the object. If the object hasn't already been disposed of, calls #disposeInternal. Classes that extend goog.Disposable should override #disposeInternal in order to delete references to COM objects, DOM nodes, and other disposable objects. Reentrant.
Returns: void  Nothing.
code »
disposeInternal()
Deletes or nulls out any references to COM objects, DOM nodes, or other disposable objects. Classes that extend goog.Disposable should override this method. Not reentrant. To avoid calling it twice, it must only be called from the subclass' disposeInternal method. Everywhere else the public dispose method must be used. For example:
  mypackage.MyClass = function() {
    mypackage.MyClass.base(this, 'constructor');
    // Constructor logic specific to MyClass.
    ...
  };
  goog.inherits(mypackage.MyClass, goog.Disposable);

  mypackage.MyClass.prototype.disposeInternal = function() {
    // Dispose logic specific to MyClass.
    ...
    // Call superclass's disposeInternal at the end of the subclass's, like
    // in C++, to avoid hard-to-catch issues.
    mypackage.MyClass.base(this, 'disposeInternal');
  };
code »
getDisposed() boolean
Use #isDisposed instead. No description.
Returns: boolean  Whether the object has been disposed of.
code »
isDisposed() boolean
No description.
Returns: boolean  Whether the object has been disposed of.
code »
registerDisposable(disposable)
Associates a disposable object with this object so that they will be disposed together.
Arguments:
disposable : goog.disposable.IDisposable
that will be disposed when this object is disposed.
code »

Instance Properties

allowTextSelection_ :
Whether the control allows text selection within its DOM. Defaults to false.
Code »
autoStates_ :
A bit mask of goog.ui.Component.States for which this component provides default event handling. For example, a component that handles the HOVER state automatically will highlight itself on mouseover, whereas a component that doesn't handle HOVER automatically will only dispatch ENTER and LEAVE events but not call setHighlighted on itself. By default, components provide default event handling for all states. Controls hosted in containers (e.g. menu items in a menu, or buttons in a toolbar) will typically want to have their container manage their highlight state. Selectable controls managed by a selection model will also typically want their selection state to be managed by the model.
Code »
constructor :
No description.
Code »
content_ :
Text caption or DOM structure displayed in the component.
Code »
extraClassNames_ :
Additional class name(s) to apply to the control's root element, if any.
Code »
handleMouseEvents_ :
Whether the control should listen for and handle mouse events; defaults to true.
Code »
keyHandler_ : goog.events.KeyHandler
Keyboard event handler.
Code »
preferredAriaRole_ :
The control's preferred ARIA role.
Code »
Renderer associated with the component.
Code »
state_ :
Current component state; a bit mask of goog.ui.Component.States.
Code »
statesWithTransitionEvents_ :
A bit mask of goog.ui.Component.States for which this component dispatches state transition events. Because events are expensive, the default behavior is to not dispatch any state transition events at all. Use the #setDispatchTransitionEvents API to request transition events as needed. Subclasses may enable transition events by default. Controls hosted in containers or managed by a selection model will typically want to dispatch transition events.
Code »
supportedStates_ :
A bit mask of goog.ui.Component.States this component supports.
Code »
visible_ :
Component visibility.
Code »
childIndex_ :
Map of child component IDs to child components. Used for constant-time random access to child components by ID. Lazily initialized on first use. Must be kept in sync with children_. This property is strictly private and must not be accessed directly outside of this class! We use a plain Object, not a goog.structs.Map, for simplicity. This means components can't have children with IDs such as 'constructor' or 'valueOf', but this shouldn't really be an issue in practice, and if it is, we can always fix it later without changing the API.
Code »
children_ :
Array of child components. Lazily initialized on first use. Must be kept in sync with childIndex_. This property is strictly private and must not be accessed directly outside of this class!
Code »
constructor :
No description.
Code »
DomHelper used to interact with the document, allowing components to be created in a different window.
Code »
element_ :
The DOM element for the component.
Code »
googUiComponentHandler_ : goog.events.EventHandler
Event handler. TODO(user): rename it to handler_ after all component subclasses in inside Google have been cleaned up. Code search: http://go/component_code_search
Code »
idGenerator_ : goog.ui.IdGenerator
Generator for unique IDs.
Code »
id_ :
Unique ID of the component, lazily initialized in goog.ui.Component#getId if needed. This property is strictly private and must not be accessed directly outside of this class!
Code »
inDocument_ :
Whether the component is in the document.
Code »
model_ :
Arbitrary data object associated with the component. Such as meta-data.
Code »
parent_ : goog.ui.Component
Parent component to which events will be propagated. This property is strictly private and must not be accessed directly outside of this class!
Code »
rightToLeft_ :
Whether the component is rendered right-to-left. Right-to-left is set lazily when #isRightToLeft is called the first time, unless it has been set by calling #setRightToLeft explicitly.
Code »
wasDecorated_ :
Flag used to keep track of whether a component decorated an already existing element or whether it created the DOM itself. If an element is decorated, dispose will leave the node in the document. It is up to the app to remove the node. If an element was rendered, dispose will remove the node automatically.
Code »
actualEventTarget_ : goog.events.EventTarget
The object to use for event.target. Useful when mixing in an EventTarget to another object.
Code »
constructor :
No description.
Code »
eventTargetListeners_ : goog.events.ListenerMap
Maps of event type to an array of listeners.
Code »
parentEventTarget_ : goog.events.EventTarget
Parent event target, used during event bubbling. TODO(user): Change this to goog.events.Listenable. This currently breaks people who expect getParentEventTarget to return goog.events.EventTarget.
Code »
creationStack :
If monitoring the goog.Disposable instances is enabled, stores the creation stack trace of the Disposable instance.
Code »
disposed_ :
Whether the object has been disposed of.
Code »
onDisposeCallbacks_ :
Callbacks to invoke when this object is disposed.
Code »

Static Methods

goog.ui.Control.decorate(element) ?goog.ui.Control
Use goog.ui.decorate instead. Takes an element, and decorates it with a goog.ui.Control instance if a suitable decorator is found.
Arguments:
element : Element
Element to decorate.
Returns: ?goog.ui.Control  New control instance that decorates the element (null if none).
code »
goog.ui.Control.getDecorator(element) ?goog.ui.Control
Use goog.ui.registry.getDecorator instead. Takes an element and returns a new instance of goog.ui.Control or a subclass, suitable to decorate it (based on the element's CSS class).
Arguments:
element : Element
Element to decorate.
Returns: ?goog.ui.Control  New control instance to decorate the element (null if none).
code »
goog.ui.Control.isMouseEventWithinElement_(eelem) boolean
Checks if a mouse event (mouseover or mouseout) occured below an element.
Arguments:
e : goog.events.BrowserEvent
Mouse event (should be mouseover or mouseout).
elem : Element
The ancestor element.
Returns: boolean  Whether the event has a relatedTarget (the element the mouse is coming from) and it's a descendent of elem.
code »
goog.ui.Control.registerDecorator(classNamedecoratorFunction)
Use goog.ui.registry.setDecoratorByClassName instead. Maps a CSS class name to a function that returns a new instance of goog.ui.Control or a subclass thereof, suitable to decorate an element that has the specified CSS class. UI components that extend goog.ui.Control and want goog.ui.Containers to be able to discover and decorate elements using them should register a factory function via this API.
Arguments:
className : string
CSS class name.
decoratorFunction : Function
Function that takes no arguments and returns a new instance of a control to decorate an element with the given class.
code »

Static Properties

goog.ui.Control.superClass_ :
No description.
Code »

Package ui

Package Reference