Expandable lets you show or hide content. Expandable needs a pair: a title and a container related to title.


// Create a new Expandable.
var expandable = new ch.Expandable([el], [options]);
// Create a new Expandable with custom options.
var expandable = new ch.Expandable({
    'container': document.querySelector('.my-container'),
    'toggle': false,
    'fx': 'slideDown',
    'content': ''
// Create a new Expandable using the shorthand way (content as parameter).
var expandable = new ch.Expandable('');


  • el - HTMLElement : A HTMLElement to create an instance of ch.Expandable.
  • options - Object : Options to customize an instance.
    • fx - String : Enable or disable UI effects. You must use: "slideDown", "fadeIn" or "none". Default: "none".
    • toggle - Boolean : Customize toggle behavior. Default: true.
    • container - HTMLElement : The container where the expanbdale puts its content. Default: the next sibling of el parameter.
    • content - String | HTMLElement : The content to be shown into the expandable container.


Mixes In


.Component#name String

The name of a component.

.container HTMLElement

The expandable container.

// Gets the expandable container.

.Expandable#name String

The name of the component.

.trigger HTMLElement

The expandable trigger.

// Gets the expandable trigger.

.uid Number

A unique id to identify the instance of a component.




Returns a reference to the constructor function.



Destroys an instance of Component and remove its data from asociated element.

// Destroy a component
// Empty the component reference
component = undefined;

.disable() → {component}


Disables an instance of Component.

// Disabling an instance of Component.

.enable() → {component}


Enables an instance of Component.

// Enabling an instance of Component.

.require() → {component}


Adds functionality or abilities from other classes.

// You can require some abilitiest to use in your component.
// For example you should require the collpasible abitliy.
var component = new Component(element, options);



Returns a reference to the constructor function.



Destroys an Expandable instance.

// Destroy an expandable
// Empty the expandable reference
expandable = undefined;

.hide() → {expandable}


Hides component's container.

// Close an expandable.

.isShown() → {Boolean}


Returns a Boolean specifying if the component's core behavior is shown. That means it will return 'true' if the component is on, and it will return false otherwise.

// Execute a function if the component is shown.
if (expandable.isShown()) {

.show(content, options) → {expandable}


Shows expandable's content.

  • content - String | HTMLElement : The content that will be used by expandable.
  • options - Object : A custom options to be used with content loaded by ajax.
    • method - String : The type of request ("POST" or "GET") to load content by ajax. Default: "GET".
    • params - String : Params like query string to be sent to the server.
    • cache - Boolean : Force to cache the request by the browser. Default: true.
    • async - Boolean : Force to sent request asynchronously. Default: true.
    • waiting - String | HTMLElement : Temporary content to use while the ajax request is loading.
// Shows a basic expandable.;
// Shows an expandable with new content.'Some new content here!');
// Shows an expandable with a new content that will be loaded by ajax and some custom options.'', {
    'cache': false,
    'params': 'x-request=true'




Emits when a component is destroyed.

// Subscribe to "destroy" event.
component.on('destroy', function () {
    // Some code here!



Emits when a component is disable.

// Subscribe to "disable" event.
component.on('disable', function () {
    // Some code here!



Emits when a component is enabled.

// Subscribe to "enable" event.
component.on('enable', function () {
    // Some code here!



Event emitted when the component is ready to use.

// Subscribe to "ready" event.
expandable.on('ready', function () {
    // Some code here!