File: scrollview/js/list-plugin.js
- /**
- * Provides a plugin, which adds support for a scroll indicator to ScrollView instances
- *
- * @module scrollview-list
- */
- var getCN = Y.ClassNameManager.getClassName,
- SCROLLVIEW = 'scrollview',
- LIST_CLASS = getCN(SCROLLVIEW, 'list'),
- ITEM_CLASS = getCN(SCROLLVIEW, 'item'),
- CONTENT_BOX = "contentBox",
- HOST = "host";
-
- /**
- * ScrollView plugin that adds class names to immediate descendant "<li>" to
- * allow for easier styling through CSS
- *
- * @class ScrollViewList
- * @namespace Plugin
- * @extends Plugin.Base
- * @constructor
- */
- function ListPlugin() {
- ListPlugin.superclass.constructor.apply(this, arguments);
- }
-
-
- /**
- * The identity of the plugin
- *
- * @property NAME
- * @type String
- * @default 'pluginList'
- * @static
- */
- ListPlugin.NAME = 'pluginList';
-
- /**
- * The namespace on which the plugin will reside.
- *
- * @property NS
- * @type String
- * @default 'list'
- * @static
- */
- ListPlugin.NS = 'list';
-
-
- /**
- * The default attribute configuration for the plugin
- *
- * @property ATTRS
- * @type Object
- * @static
- */
- ListPlugin.ATTRS = {
-
- /**
- * 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
- *
- * @attribute isAttached
- * @type boolean
- * @deprecated No real use for this attribute on the public API
- */
- isAttached: {
- value:false,
- validator: Y.Lang.isBoolean
- }
- };
-
- 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();
- }
- }
- }
-
- });
-
-
-
-
-
-
-
-
-
-
-
-