| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- /* BoxWidget()
 
-  * ======
 
-  * Adds box widget functions to boxes.
 
-  *
 
-  * @Usage: $('.my-box').boxWidget(options)
 
-  *         This plugin auto activates on any element using the `.box` class
 
-  *         Pass any option as data-option="value"
 
-  */
 
- +function ($) {
 
-   'use strict';
 
-   var DataKey = 'lte.boxwidget';
 
-   var Default = {
 
-     animationSpeed : 500,
 
-     collapseTrigger: '[data-widget="collapse"]',
 
-     removeTrigger  : '[data-widget="remove"]',
 
-     collapseIcon   : 'fa-minus',
 
-     expandIcon     : 'fa-plus',
 
-     removeIcon     : 'fa-times'
 
-   };
 
-   var Selector = {
 
-     data     : '.box',
 
-     collapsed: '.collapsed-box',
 
-     header   : '.box-header',
 
-     body     : '.box-body',
 
-     footer   : '.box-footer',
 
-     tools    : '.box-tools'
 
-   };
 
-   var ClassName = {
 
-     collapsed: 'collapsed-box'
 
-   };
 
-   var Event = {
 
-         collapsing: 'collapsing.boxwidget',
 
-         collapsed: 'collapsed.boxwidget',
 
-         expanding: 'expanding.boxwidget',
 
-         expanded: 'expanded.boxwidget',
 
-         removing: 'removing.boxwidget',
 
-         removed: 'removed.boxwidget'        
 
-     };
 
-   // BoxWidget Class Definition
 
-   // =====================
 
-   var BoxWidget = function (element, options) {
 
-     this.element = element;
 
-     this.options = options;
 
-     this._setUpListeners();
 
-   };
 
-   BoxWidget.prototype.toggle = function () {
 
-     var isOpen = !$(this.element).is(Selector.collapsed);
 
-     if (isOpen) {
 
-       this.collapse();
 
-     } else {
 
-       this.expand();
 
-     }
 
-   };
 
-   BoxWidget.prototype.expand = function () {
 
-     var expandedEvent = $.Event(Event.expanded);
 
-     var expandingEvent = $.Event(Event.expanding);
 
-     var collapseIcon  = this.options.collapseIcon;
 
-     var expandIcon    = this.options.expandIcon;
 
-     $(this.element).removeClass(ClassName.collapsed);
 
-     $(this.element)
 
-       .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer)
 
-       .children(Selector.tools)
 
-       .find('.' + expandIcon)
 
-       .removeClass(expandIcon)
 
-       .addClass(collapseIcon);
 
-     $(this.element).children(Selector.body + ', ' + Selector.footer)
 
-       .slideDown(this.options.animationSpeed, function () {
 
-         $(this.element).trigger(expandedEvent);
 
-       }.bind(this))
 
-       .trigger(expandingEvent);
 
-   };
 
-   BoxWidget.prototype.collapse = function () {
 
-     var collapsedEvent = $.Event(Event.collapsed);
 
-     var collapsingEvent = $.Event(Event.collapsing);
 
-     var collapseIcon   = this.options.collapseIcon;
 
-     var expandIcon     = this.options.expandIcon;
 
-     $(this.element)
 
-       .children(Selector.header + ', ' + Selector.body + ', ' + Selector.footer)
 
-       .children(Selector.tools)
 
-       .find('.' + collapseIcon)
 
-       .removeClass(collapseIcon)
 
-       .addClass(expandIcon);
 
-     $(this.element).children(Selector.body + ', ' + Selector.footer)
 
-       .slideUp(this.options.animationSpeed, function () {
 
-         $(this.element).addClass(ClassName.collapsed);
 
-         $(this.element).trigger(collapsedEvent);
 
-       }.bind(this))
 
-       .trigger(collapsingEvent);
 
-   };
 
-   BoxWidget.prototype.remove = function () {
 
-     var removedEvent = $.Event(Event.removed);
 
-     var removingEvent = $.Event(Event.removing);
 
-     $(this.element).slideUp(this.options.animationSpeed, function () {
 
-       $(this.element).trigger(removedEvent);
 
-       $(this.element).remove();
 
-     }.bind(this))
 
-     .trigger(removingEvent);
 
-   };
 
-   // Private
 
-   BoxWidget.prototype._setUpListeners = function () {
 
-     var that = this;
 
-     $(this.element).on('click', this.options.collapseTrigger, function (event) {
 
-       if (event) event.preventDefault();
 
-       that.toggle($(this));
 
-       return false;
 
-     });
 
-     $(this.element).on('click', this.options.removeTrigger, function (event) {
 
-       if (event) event.preventDefault();
 
-       that.remove($(this));
 
-       return false;
 
-     });
 
-   };
 
-   // Plugin Definition
 
-   // =================
 
-   function Plugin(option) {
 
-     return this.each(function () {
 
-       var $this = $(this);
 
-       var data  = $this.data(DataKey);
 
-       if (!data) {
 
-         var options = $.extend({}, Default, $this.data(), typeof option == 'object' && option);
 
-         $this.data(DataKey, (data = new BoxWidget($this, options)));
 
-       }
 
-       if (typeof option == 'string') {
 
-         if (typeof data[option] == 'undefined') {
 
-           throw new Error('No method named ' + option);
 
-         }
 
-         data[option]();
 
-       }
 
-     });
 
-   }
 
-   var old = $.fn.boxWidget;
 
-   $.fn.boxWidget             = Plugin;
 
-   $.fn.boxWidget.Constructor = BoxWidget;
 
-   // No Conflict Mode
 
-   // ================
 
-   $.fn.boxWidget.noConflict = function () {
 
-     $.fn.boxWidget = old;
 
-     return this;
 
-   };
 
-   // BoxWidget Data API
 
-   // ==================
 
-   $(window).on('load', function () {
 
-     $(Selector.data).each(function () {
 
-       Plugin.call($(this));
 
-     });
 
-   });
 
- }(jQuery);
 
 
  |