API Docs for: 1.0.0
Show:

File: src/gallery-collapse-toggle/js/CollapseToggle.js

"use strict";

/**********************************************************************
 * Widget which allows collapsing a chunk of content, e.g., a form, down to
 * a much smaller summary.
 * 
 * @module gallery-collapse-toggle
 */

/**********************************************************************
 * Overrides Y.Node.show() to make it look like a flickering neon sign.
 * 
 * @main gallery-collapse-toggle
 * @class CollapseToggle
 * @extends Widget
 * @constructor
 * @param config {Object} configuration
 */
function CollapseToggle(
	/* object */ config)
{
	CollapseToggle.superclass.constructor.call(this, config);
}

CollapseToggle.NAME = "collapsetoggle";

CollapseToggle.ATTRS =
{
	/**
	 * State of the widget.
	 * 
	 * @attribute collapsed
	 * @type {Boolean}
	 */
	collapsed:
	{
		value:     false,
		validator: Y.Lang.isBoolean
	}
};

CollapseToggle.HTML_PARSER =
{
	summary: function(content_box)
	{
		return content_box.one('> .summary');
	},

	content: function(content_box)
	{
		return content_box.one('> .content');
	}
};

Y.extend(CollapseToggle, Y.Widget,
{
	renderUI: function()
	{
		this.get('contentBox').prepend('<div class="toggle"></div>');
	},

	bindUI: function()
	{
		this.get('contentBox').one('> .toggle').on('click', function()
		{
			this.set('collapsed', !this.get('collapsed'));
			this.syncUI();
		},
		this);
	},

	syncUI: function()
	{
		this.get('contentBox').replaceClass('collapsed|expanded', this.get('collapsed') ? 'collapsed' : 'expanded');
	}
});

Y.CollapseToggle = CollapseToggle;