Source: ui/ComponentContainer.js

/*
 * src/ui/ComponentContainer.js
 * Author: H.Alper Tuna <halpertuna@gmail.com>
 * Date: 08.08.2016
 */

'use strict';

define([
    './Element'
], function(
    Element
){
    return Element.extend(/** @lends ui/ComponentContainer# */{
        /**
         * ComponentContainer component class.
         * @constructs
         * @augments ui/Element
         * @param {ui/Element} component - Component element to wrap it.
         */
        'init': function(component){
            this.super();
            this.addClass('jb-com-container');
            this.add(component);
            this.set('component', component);

            var message = Element.new().addClass('jb-com-message').hide();
            this.add(message);
            this.set('message', message);
        },

        /**
         * Returns component element.
         * @return {ui/Element} Component element.
         */
        'getComponent': function(){
            return this.get('component');
        },

        /**
         * Sets container style as block.
         * @param {boolean} value - Value.
         * @return {Object} Instance reference.
         */
        'setBlock': function(value){
            this.setClass('jb-com-container-block', value);
            return this.ref;
        },

        /**
         * Prints message under component with given color theme.
         * @param {string} text - Message text.
         * @param {string} theme - Color theme of message.
         * @return {Object} Instance reference.
         */
        'setMessage': function(text, theme){
            var message = this.get('message')
                .clear()
                .add(text)
                .removeClass('jb-text-primary jb-text-success jb-text-danger jb-text-warning jb-text-info')
                .show();

            switch(theme){
                case 'PRIMARY':
                    message.addClass('jb-text-primary');
                    break;
                case 'SUCCESS':
                    message.addClass('jb-text-success');
                    break;
                case 'DANGER':
                    message.addClass('jb-text-danger');
                    break;
                case 'WARNING':
                    message.addClass('jb-text-warning');
                    break;
                case 'INFO':
                    message.addClass('jb-text-info');
                    break;
            }

            return this.ref;
        },
        /**
         * Clears message under component.
         * @return {Object} Instance reference.
         */
        'clearMessage': function(){
            this.get('message').hide();
        }
    })
})