The goog.ui.SubMenuRenderer Class

goog.ui.SubMenuRenderer
> goog.ui.MenuItemRenderer
> goog.ui.ControlRenderer

Default renderer for {@link goog.ui.SubMenu}s. Each item has the following structure:

...(menuitem content)...
... (submenu content) ...

.CSS_CLASS {string}

Default CSS class to be applied to the root element of components rendered by this renderer.

.canDecorate(element)

Inherited from goog.ui.ControlRenderer .

Returns true if this renderer can decorate the element, false otherwise. The default implementation always returns true.

element {Element}
Element to decorate.
returns {boolean}
Whether the renderer can decorate the element.

.createDom(control)

Overrides {@link goog.ui.MenuItemRenderer#createDom} by adding the additional class 'goog-submenu' to the created element, and passes the element to {@link goog.ui.SubMenuItemRenderer#addArrow_} to add an child element that can be styled to show an arrow.

control {goog.ui.Control}
goog.ui.SubMenu to render.
returns {Element}
Root element for the item.

.decorate(control, element)

Overrides {@link goog.ui.MenuItemRenderer#decorate} by adding the additional class 'goog-submenu' to the decorated element, and passing the element to {@link goog.ui.SubMenuItemRenderer#addArrow_} to add a child element that can be styled to show an arrow. Also searches the element for a child with the class goog-menu. If a matching child element is found, creates a goog.ui.Menu, uses it to decorate the child element, and passes that menu to subMenu.setMenu.

control {goog.ui.Control}
goog.ui.SubMenu to render.
element {Element}
Element to decorate.
returns {Element}
Root element for the item.
@suppress
{visibility} setContentInternal and setStateInternal

.enableClassName(control, className, enable)

Inherited from goog.ui.ControlRenderer .

Updates the control's DOM by adding or removing the specified class name to/from its root element. May add additional combined classes as needed in IE6 and lower. Because of this, subclasses should use this method when modifying class names on the control's root element.

control {goog.ui.Control|Element}
Control instance (or root element) to be updated.
className {string}
CSS class name to add or remove.
enable {boolean}
Whether to add or remove the class name.

.enableExtraClassName(control, className, enable)

Inherited from goog.ui.ControlRenderer .

Updates the control's DOM by adding or removing the specified extra class name to/from its element.

control {goog.ui.Control}
Control to be updated.
className {string}
CSS class name to add or remove.
enable {boolean}
Whether to add or remove the class name.

.getAriaRole()

Inherited from goog.ui.MenuItemRenderer .

Returns the ARIA role to be applied to the control. See http://wiki/Main/ARIA for more info.

returns {goog.dom.a11y.Role|undefined}
ARIA role.

.getContentElement(element)

Inherited from goog.ui.MenuItemRenderer .

Takes the control's root element and returns the parent element of the control's contents. Since by default controls are rendered as a single DIV, the default implementation returns the element itself. Subclasses with more complex DOM structures must override this method as needed.

element {Element}
Root element of the control whose content element is to be returned.
returns {Element}
The control's content element.

.getCssClass()

Inherited from goog.ui.MenuItemRenderer .

Returns the CSS class name to be applied to the root element of all components rendered or decorated using this renderer. The class name is expected to uniquely identify the renderer class, i.e. no two renderer classes are expected to share the same CSS class name.

returns {string}
Renderer-specific CSS class name.

.getIe6ClassCombinations()

Inherited from goog.ui.ControlRenderer .

Returns an array of combinations of classes to apply combined class names for in IE6 and below. See {@link IE6_CLASS_COMBINATIONS} for more detail. This method doesn't reference {@link IE6_CLASS_COMBINATIONS} so that it can be compiled out, but subclasses should return their IE6_CLASS_COMBINATIONS static constant instead.

returns {Array.<Array.<string>>}
Array of class name combinations.

.getKeyEventTarget(control)

Inherited from goog.ui.ControlRenderer .

Returns the element within the component's DOM that should receive keyboard focus (null if none). The default implementation returns the control's root element.

control {goog.ui.Control}
Control whose key event target is to be returned.
returns {Element}
The key event target.

.getStructuralCssClass()

Inherited from goog.ui.ControlRenderer .

Returns the name of a DOM structure-specific CSS class to be applied to the root element of all components rendered or decorated using this renderer. Unlike the class name returned by {@link #getCssClass}, the structural class name may be shared among different renderers that generate similar DOM structures. The structural class name also serves as the basis of derived class names used to identify and style structural elements of the control's DOM, as well as the basis for state-specific class names. The default implementation returns the same class name as {@link #getCssClass}, but subclasses are expected to override this method as needed.

returns {string}
DOM structure-specific CSS class name (same as the renderer- specific CSS class name by default).

.initializeDom(control)

Overrides {@link goog.ui.MenuItemRenderer#initializeDom} to tweak the DOM structure for the span.goog-submenu-arrow element depending on the text direction (LTR or RTL). When the SubMenu is RTL the arrow will be given the additional class of goog-submenu-arrow-rtl, and the arrow will be moved up to be the first child in the SubMenu's element. Otherwise the arrow will have the class goog-submenu-arrow-ltr, and be kept as the last child of the SubMenu's element.

control {goog.ui.Control}
goog.ui.SubMenu whose DOM is to be initialized as it enters the document.

.isFocusable(control)

Inherited from goog.ui.ControlRenderer .

Returns true if the control's key event target supports keyboard focus (based on its {@code tabIndex} attribute), false otherwise.

control {goog.ui.Control}
Control whose key event target is to be checked.
returns {boolean}
Whether the control's key event target is focusable.

.setAllowTextSelection(element, allow)

Inherited from goog.ui.ControlRenderer .

Allows or disallows text selection within the control's DOM.

element {Element}
The control's root element.
allow {boolean}
Whether the element should allow text selection.

.setAriaRole(element, opt_preferredRole)

Inherited from goog.ui.ControlRenderer .

Sets the element's ARIA role.

element {Element}
Element to update.
opt_preferredRole {?goog.dom.a11y.Role=}
The preferred ARIA role.

.setAriaStates(control, element)

Inherited from goog.ui.ControlRenderer .

Sets the element's ARIA states. An element does not need an ARIA role in order to have an ARIA state. Only states which are initialized to be true will be set.

control {!goog.ui.Control}
Control whose ARIA state will be updated.
element {!Element}
Element whose ARIA state is to be updated.

.setCheckable(item, element, checkable)

Inherited from goog.ui.MenuItemRenderer .

Enables/disables checkbox semantics on the menu item.

item {goog.ui.Control}
Menu item to update.
element {Element}
Menu item element to update (may be null if the item hasn't been rendered yet).
checkable {boolean}
Whether the item should be checkable.

.setContent(element, content)

Takes a menu item's root element, and sets its content to the given text caption or DOM structure. Overrides the superclass immplementation by making sure that the submenu arrow structure is preserved.

element {Element}
The item's root element.
content {goog.ui.ControlContent}
Text caption or DOM structure to be set as the item's content.

.setFocusable(control, focusable)

Inherited from goog.ui.ControlRenderer .

Updates the control's key event target to make it focusable or non-focusable via its {@code tabIndex} attribute. Does nothing if the control doesn't support the {@code FOCUSED} state, or if it has no key event target.

control {goog.ui.Control}
Control whose key event target is to be updated.
focusable {boolean}
Whether to enable keyboard focus support on the control's key event target.

.setRightToLeft(element, rightToLeft)

Inherited from goog.ui.ControlRenderer .

Applies special styling to/from the control's element if it is rendered right-to-left, and removes it if it is rendered left-to-right.

element {Element}
The control's root element.
rightToLeft {boolean}
Whether the component is rendered right-to-left.

.setSelectable(item, element, selectable)

Inherited from goog.ui.MenuItemRenderer .

Enables/disables radio button semantics on the menu item.

item {goog.ui.Control}
Menu item to update.
element {Element}
Menu item element to update (may be null if the item hasn't been rendered yet).
selectable {boolean}
Whether the item should be selectable.

.setState(control, state, enable)

Inherited from goog.ui.ControlRenderer .

Updates the appearance of the control in response to a state change.

control {goog.ui.Control}
Control instance to update.
state {goog.ui.Component.State}
State to enable or disable.
enable {boolean}
Whether the control is entering or exiting the state.

.setVisible(element, visible)

Inherited from goog.ui.ControlRenderer .

Shows or hides the element.

element {Element}
Element to update.
visible {boolean}
Whether to show the element.