Path: blob/trunk/third_party/closure/goog/ui/menuseparatorrenderer.js
4116 views
/**1* @license2* Copyright The Closure Library Authors.3* SPDX-License-Identifier: Apache-2.04*/56/**7* @fileoverview Renderer for {@link goog.ui.MenuSeparator}s.8*/910goog.provide('goog.ui.MenuSeparatorRenderer');1112goog.require('goog.dom');13goog.require('goog.dom.TagName');14goog.require('goog.dom.classlist');15goog.require('goog.ui.ControlRenderer');16goog.requireType('goog.ui.Control');17goog.requireType('goog.ui.ControlContent');18192021/**22* Renderer for menu separators.23* @constructor24* @extends {goog.ui.ControlRenderer}25*/26goog.ui.MenuSeparatorRenderer = function() {27'use strict';28goog.ui.ControlRenderer.call(this);29};30goog.inherits(goog.ui.MenuSeparatorRenderer, goog.ui.ControlRenderer);31goog.addSingletonGetter(goog.ui.MenuSeparatorRenderer);323334/**35* Default CSS class to be applied to the root element of components rendered36* by this renderer.37* @type {string}38*/39goog.ui.MenuSeparatorRenderer.CSS_CLASS = goog.getCssName('goog-menuseparator');404142/**43* Returns an empty, styled menu separator DIV. Overrides {@link44* goog.ui.ControlRenderer#createDom}.45* @param {goog.ui.Control} separator goog.ui.Separator to render.46* @return {!Element} Root element for the separator.47* @override48*/49goog.ui.MenuSeparatorRenderer.prototype.createDom = function(separator) {50'use strict';51return separator.getDomHelper().createDom(52goog.dom.TagName.DIV, this.getCssClass());53};545556/**57* Takes an existing element, and decorates it with the separator. Overrides58* {@link goog.ui.ControlRenderer#decorate}.59* @param {goog.ui.Control} separator goog.ui.MenuSeparator to decorate the60* element.61* @param {Element} element Element to decorate.62* @return {!Element} Decorated element.63* @override64*/65goog.ui.MenuSeparatorRenderer.prototype.decorate = function(66separator, element) {67'use strict';68// Normally handled in the superclass. But we don't call the superclass.69if (element.id) {70separator.setId(element.id);71}7273if (element.tagName == goog.dom.TagName.HR) {74// Replace HR with separator.75var hr = element;76element = this.createDom(separator);77goog.dom.insertSiblingBefore(element, hr);78goog.dom.removeNode(hr);79} else {80goog.dom.classlist.add(element, this.getCssClass());81}82return element;83};848586/**87* Overrides {@link goog.ui.ControlRenderer#setContent} to do nothing, since88* separators are empty.89* @param {Element} separator The separator's root element.90* @param {goog.ui.ControlContent} content Text caption or DOM structure to be91* set as the separators's content (ignored).92* @override93*/94goog.ui.MenuSeparatorRenderer.prototype.setContent = function(95separator, content) {96// Do nothing. Separators are empty.97};9899100/**101* Returns the CSS class to be applied to the root element of components102* rendered using this renderer.103* @return {string} Renderer-specific CSS class.104* @override105*/106goog.ui.MenuSeparatorRenderer.prototype.getCssClass = function() {107'use strict';108return goog.ui.MenuSeparatorRenderer.CSS_CLASS;109};110111112