scrollview-list-debug.js revision e669f4800bb30c0f9b6ac93af6c8390e5f3c672b
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyYUI.add('scrollview-list', function(Y) {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly/**
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * Provides a plugin, which adds support for a scroll indicator to ScrollView instances
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly *
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @module scrollview-list
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly */
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnellyvar getCN = Y.ClassNameManager.getClassName,
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellySCROLLVIEW = 'scrollview',
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyLIST_CLASS = getCN(SCROLLVIEW, 'list'),
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyITEM_CLASS = getCN(SCROLLVIEW, 'item'),
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyCONTENT_BOX = "contentBox",
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyRENDERED = 'rendered',
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyRENDER_UI = 'renderUI',
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyHOST = "host";
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly/**
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * ScrollView plugin that adds class names to immediate descendant "<li>" to
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * allow for easier styling through CSS
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly *
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @class ScrollViewList
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @namespace Plugin
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @extends Plugin.Base
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @constructor
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly */
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnellyfunction ListPlugin() {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly ListPlugin.superclass.constructor.apply(this, arguments);
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly}
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly/**
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * The identity of the plugin
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly *
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @property NAME
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @type String
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @default 'pluginList'
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @static
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly */
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyListPlugin.NAME = 'pluginList';
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly/**
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * The namespace on which the plugin will reside.
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly *
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @property NS
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @type String
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @default 'list'
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @static
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly */
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyListPlugin.NS = 'list';
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly/**
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * The default attribute configuration for the plugin
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly *
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @property ATTRS
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @type Object
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @static
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly */
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny DonnellyListPlugin.ATTRS = {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly /**
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * Specifies whether the list elements (the immediate <ul>'s and the immediate <li>'s inside those <ul>'s) have class names attached to them or not
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly *
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @attribute isAttached
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @type boolean
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly * @deprecated No real use for this attribute on the public API
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly */
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly isAttached: {
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly value:false,
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly validator: Y.Lang.isBoolean
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly }
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly};
8f9d94fb7812612dff92ce14a37dbcad4ff02c1cJenny Donnelly
Y.namespace("Plugin").ScrollViewList = Y.extend(ListPlugin, Y.Plugin.Base, {
/**
* Designated initializer
*
* @method initializer
*/
initializer: function() {
this._host = this.get(HOST);
this.afterHostEvent("render", this._addClassesToList);
},
_addClassesToList: function() {
if (!this.get('isAttached')) {
var cb = this._host.get(CONTENT_BOX),
ulList,
liList;
if (cb.hasChildNodes()) {
//get all direct descendants of the UL's that are directly under the content box.
ulList = cb.all('> ul');
liList = cb.all('> ul > li');
//go through the UL's and add the class
ulList.each(function(list) {
list.addClass(LIST_CLASS);
});
//go through LI's and add the class
liList.each(function(item) {
item.addClass(ITEM_CLASS);
});
this.set('isAttached', true);
// We need to call this again, since sv-list
// relies on the "-vert" class, to apply padding.
// [ 1st syncUI pass applies -vert, 2nd pass re-calcs dims ]
this._host.syncUI();
}
}
}
});
}, '@VERSION@' ,{skinnable:true, requires:['plugin', 'classnamemanager']});