UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

174 lines (148 loc) 4.05 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Tino Butz (tbtz) ************************************************************************ */ /** * Base class for all list item renderer. */ qx.Class.define("qx.ui.mobile.list.renderer.Abstract", { extend: qx.ui.mobile.container.Composite, type: "abstract", /* ***************************************************************************** CONSTRUCTOR ***************************************************************************** */ construct(layout) { super(layout); this.initSelectable(); this.initRemovable(); this.initShowArrow(); }, /* ***************************************************************************** PROPERTIES ***************************************************************************** */ properties: { // overridden defaultCssClass: { refine: true, init: "list-item" }, /** * Whether the row is selected. */ selected: { check: "Boolean", init: false, apply: "_applySelected" }, /** * Whether the row is selectable. */ selectable: { check: "Boolean", init: true, apply: "_applyAttribute" }, /** * Whether the row is removable. */ removable: { check: "Boolean", init: false, apply: "_applyRemovable" }, /** * Whether to show an arrow in the row. */ showArrow: { check: "Boolean", init: false, apply: "_applyShowArrow" }, //overridden activatable: { refine: true, init: true } }, /* ***************************************************************************** MEMBERS ***************************************************************************** */ members: { // abstract method /** * Resets all defined child widgets. Override this method in your custom * list item renderer and reset all widgets displaying data. Needed as the * renderer is used for every row and otherwise data of a different row * might be displayed, when not all data displaying widgets are used for the row. * Gets called automatically by the {@link qx.ui.mobile.list.provider.Provider}. * */ reset() { if (qx.core.Environment.get("qx.debug")) { throw new Error("Abstract method call"); } }, // overridden _getTagName() { return "li"; }, /** * Returns the row index of a certain DOM element in the list from the given event. * * @param evt {qx.event.type.Event} The causing event. * @return {Integer} the index of the row. */ getRowIndexFromEvent(evt) { return this.getRowIndex(evt.getOriginalTarget()); }, /** * Returns the row index of a certain DOM element in the list. * * @param element {Element} DOM element to retrieve the index from. * @return {Integer} the index of the row. */ getRowIndex(element) { while (element.tagName != "LI") { element = element.parentNode; } return element.getAttribute("data-row"); }, // property apply _applyShowArrow(value, old) { if (value) { this.addCssClass("arrow"); } else { this.removeCssClass("arrow"); } }, // property apply _applyRemovable(value, old) { if (value) { this.addCssClass("removable"); } else { this.removeCssClass("removable"); } }, // property apply _applySelected(value, old) { if (value) { this.addCssClass("selected"); } else { this.removeCssClass("selected"); } } } });