| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 | 
							- /* 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',
 
-     body     : '.box-body',
 
-     footer   : '.box-footer',
 
-     tools    : '.box-tools'
 
-   }
 
-   var ClassName = {
 
-     collapsed: 'collapsed-box'
 
-   }
 
-   var Event = {
 
-     collapsed: 'collapsed.boxwidget',
 
-     expanded : 'expanded.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 collapseIcon  = this.options.collapseIcon
 
-     var expandIcon    = this.options.expandIcon
 
-     $(this.element).removeClass(ClassName.collapsed)
 
-     $(this.element)
 
-       .find(Selector.tools)
 
-       .find('.' + expandIcon)
 
-       .removeClass(expandIcon)
 
-       .addClass(collapseIcon)
 
-     $(this.element).find(Selector.body + ', ' + Selector.footer)
 
-       .slideDown(this.options.animationSpeed, function () {
 
-         $(this.element).trigger(expandedEvent)
 
-       }.bind(this))
 
-   }
 
-   BoxWidget.prototype.collapse = function () {
 
-     var collapsedEvent = $.Event(Event.collapsed)
 
-     var collapseIcon   = this.options.collapseIcon
 
-     var expandIcon     = this.options.expandIcon
 
-     $(this.element)
 
-       .find(Selector.tools)
 
-       .find('.' + collapseIcon)
 
-       .removeClass(collapseIcon)
 
-       .addClass(expandIcon)
 
-     $(this.element).find(Selector.body + ', ' + Selector.footer)
 
-       .slideUp(this.options.animationSpeed, function () {
 
-         $(this.element).addClass(ClassName.collapsed)
 
-         $(this.element).trigger(collapsedEvent)
 
-       }.bind(this))
 
-   }
 
-   BoxWidget.prototype.remove = function () {
 
-     var removedEvent = $.Event(Event.removed)
 
-     $(this.element).slideUp(this.options.animationSpeed, function () {
 
-       $(this.element).trigger(removedEvent)
 
-       $(this.element).remove()
 
-     }.bind(this))
 
-   }
 
-   // Private
 
-   BoxWidget.prototype._setUpListeners = function () {
 
-     var that = this
 
-     $(this.element).on('click', this.options.collapseTrigger, function (event) {
 
-       if (event) event.preventDefault()
 
-       that.toggle()
 
-     })
 
-     $(this.element).on('click', this.options.removeTrigger, function (event) {
 
-       if (event) event.preventDefault()
 
-       that.remove()
 
-     })
 
-   }
 
-   // 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)
 
 
  |