|  | @@ -678,6 +678,213 @@
 | 
	
		
			
				|  |  |      return Treeview;
 | 
	
		
			
				|  |  |    }(jQuery);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * --------------------------------------------
 | 
	
		
			
				|  |  | +   * AdminLTE DirectChat.js
 | 
	
		
			
				|  |  | +   * License MIT
 | 
	
		
			
				|  |  | +   * --------------------------------------------
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  var DirectChat = function ($) {
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Constants
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    var NAME = 'DirectChat';
 | 
	
		
			
				|  |  | +    var DATA_KEY = 'lte.directchat';
 | 
	
		
			
				|  |  | +    var JQUERY_NO_CONFLICT = $.fn[NAME];
 | 
	
		
			
				|  |  | +    var Selector = {
 | 
	
		
			
				|  |  | +      DATA_TOGGLE: '[data-widget="chat-pane-toggle"]',
 | 
	
		
			
				|  |  | +      DIRECT_CHAT: '.direct-chat'
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    var ClassName = {
 | 
	
		
			
				|  |  | +      DIRECT_CHAT_OPEN: 'direct-chat-contacts-open'
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Class Definition
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    var DirectChat =
 | 
	
		
			
				|  |  | +    /*#__PURE__*/
 | 
	
		
			
				|  |  | +    function () {
 | 
	
		
			
				|  |  | +      function DirectChat(element, config) {
 | 
	
		
			
				|  |  | +        this._element = element;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var _proto = DirectChat.prototype;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      _proto.toggle = function toggle() {
 | 
	
		
			
				|  |  | +        $(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN);
 | 
	
		
			
				|  |  | +      } // Static
 | 
	
		
			
				|  |  | +      ;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      DirectChat._jQueryInterface = function _jQueryInterface(config) {
 | 
	
		
			
				|  |  | +        return this.each(function () {
 | 
	
		
			
				|  |  | +          var data = $(this).data(DATA_KEY);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          var _config = $.extend({}, Default, $(this).data());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (!data) {
 | 
	
		
			
				|  |  | +            data = new DirectChat($(this), _config);
 | 
	
		
			
				|  |  | +            $(this).data(DATA_KEY, data);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (config === 'init') {
 | 
	
		
			
				|  |  | +            data[config]();
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      return DirectChat;
 | 
	
		
			
				|  |  | +    }();
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * Data Api implementation
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $(document).on('click', Selector.DATA_TOGGLE, function (event) {
 | 
	
		
			
				|  |  | +      if (event) event.preventDefault();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      DirectChat._jQueryInterface.call($(this), 'toggle');
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * jQuery API
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $.fn[NAME] = DirectChat._jQueryInterface;
 | 
	
		
			
				|  |  | +    $.fn[NAME].Constructor = DirectChat;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $.fn[NAME].noConflict = function () {
 | 
	
		
			
				|  |  | +      $.fn[NAME] = JQUERY_NO_CONFLICT;
 | 
	
		
			
				|  |  | +      return DirectChat._jQueryInterface;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return DirectChat;
 | 
	
		
			
				|  |  | +  }(jQuery);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * --------------------------------------------
 | 
	
		
			
				|  |  | +   * AdminLTE TodoList.js
 | 
	
		
			
				|  |  | +   * License MIT
 | 
	
		
			
				|  |  | +   * --------------------------------------------
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  var TodoList = function ($) {
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Constants
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    var NAME = 'TodoList';
 | 
	
		
			
				|  |  | +    var DATA_KEY = 'lte.todolist';
 | 
	
		
			
				|  |  | +    var JQUERY_NO_CONFLICT = $.fn[NAME];
 | 
	
		
			
				|  |  | +    var Selector = {
 | 
	
		
			
				|  |  | +      DATA_TOGGLE: '[data-widget="todo-list"]'
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    var ClassName = {
 | 
	
		
			
				|  |  | +      TODO_LIST_DONE: 'done'
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    var Default = {
 | 
	
		
			
				|  |  | +      onCheck: function onCheck(item) {
 | 
	
		
			
				|  |  | +        return item;
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      onUnCheck: function onUnCheck(item) {
 | 
	
		
			
				|  |  | +        return item;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      /**
 | 
	
		
			
				|  |  | +       * Class Definition
 | 
	
		
			
				|  |  | +       * ====================================================
 | 
	
		
			
				|  |  | +       */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    var TodoList =
 | 
	
		
			
				|  |  | +    /*#__PURE__*/
 | 
	
		
			
				|  |  | +    function () {
 | 
	
		
			
				|  |  | +      function TodoList(element, config) {
 | 
	
		
			
				|  |  | +        this._config = config;
 | 
	
		
			
				|  |  | +        this._element = element;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this._init();
 | 
	
		
			
				|  |  | +      } // Public
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      var _proto = TodoList.prototype;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      _proto.toggle = function toggle(item) {
 | 
	
		
			
				|  |  | +        item.parents('li').toggleClass(ClassName.TODO_LIST_DONE);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!$(item).prop('checked')) {
 | 
	
		
			
				|  |  | +          this.unCheck($(item));
 | 
	
		
			
				|  |  | +          return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.check(item);
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      _proto.check = function check(item) {
 | 
	
		
			
				|  |  | +        this._config.onCheck.call(item);
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      _proto.unCheck = function unCheck(item) {
 | 
	
		
			
				|  |  | +        this._config.onUnCheck.call(item);
 | 
	
		
			
				|  |  | +      } // Private
 | 
	
		
			
				|  |  | +      ;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      _proto._init = function _init() {
 | 
	
		
			
				|  |  | +        var that = this;
 | 
	
		
			
				|  |  | +        $(Selector.DATA_TOGGLE).find('input:checkbox:checked').parents('li').toggleClass(ClassName.TODO_LIST_DONE);
 | 
	
		
			
				|  |  | +        $(Selector.DATA_TOGGLE).on('change', 'input:checkbox', function (event) {
 | 
	
		
			
				|  |  | +          that.toggle($(event.target));
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      } // Static
 | 
	
		
			
				|  |  | +      ;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      TodoList._jQueryInterface = function _jQueryInterface(config) {
 | 
	
		
			
				|  |  | +        return this.each(function () {
 | 
	
		
			
				|  |  | +          var data = $(this).data(DATA_KEY);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          var _config = $.extend({}, Default, $(this).data());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (!data) {
 | 
	
		
			
				|  |  | +            data = new TodoList($(this), _config);
 | 
	
		
			
				|  |  | +            $(this).data(DATA_KEY, data);
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          if (config === 'init') {
 | 
	
		
			
				|  |  | +            data[config]();
 | 
	
		
			
				|  |  | +          }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      return TodoList;
 | 
	
		
			
				|  |  | +    }();
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * Data API
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $(window).on('load', function () {
 | 
	
		
			
				|  |  | +      TodoList._jQueryInterface.call($(Selector.DATA_TOGGLE));
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * jQuery API
 | 
	
		
			
				|  |  | +     * ====================================================
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $.fn[NAME] = TodoList._jQueryInterface;
 | 
	
		
			
				|  |  | +    $.fn[NAME].Constructor = TodoList;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    $.fn[NAME].noConflict = function () {
 | 
	
		
			
				|  |  | +      $.fn[NAME] = JQUERY_NO_CONFLICT;
 | 
	
		
			
				|  |  | +      return TodoList._jQueryInterface;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return TodoList;
 | 
	
		
			
				|  |  | +  }(jQuery);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /**
 | 
	
		
			
				|  |  |     * --------------------------------------------
 | 
	
		
			
				|  |  |     * AdminLTE Widget.js
 | 
	
	
		
			
				|  | @@ -902,8 +1109,10 @@
 | 
	
		
			
				|  |  |    }(jQuery);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    exports.ControlSidebar = ControlSidebar;
 | 
	
		
			
				|  |  | +  exports.DirectChat = DirectChat;
 | 
	
		
			
				|  |  |    exports.Layout = Layout;
 | 
	
		
			
				|  |  |    exports.PushMenu = PushMenu;
 | 
	
		
			
				|  |  | +  exports.TodoList = TodoList;
 | 
	
		
			
				|  |  |    exports.Treeview = Treeview;
 | 
	
		
			
				|  |  |    exports.Widget = Widget;
 | 
	
		
			
				|  |  |  
 |