mirror of https://gitee.com/zorlan/skycaiji
67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
|
/* DirectChat()
|
||
|
* ===============
|
||
|
* Toggles the state of the control sidebar
|
||
|
*
|
||
|
* @Usage: $('#my-chat-box').directChat()
|
||
|
* or add [data-widget="direct-chat"] to the trigger
|
||
|
*/
|
||
|
+function ($) {
|
||
|
'use strict';
|
||
|
|
||
|
var DataKey = 'lte.directchat';
|
||
|
|
||
|
var Selector = {
|
||
|
data: '[data-widget="chat-pane-toggle"]',
|
||
|
box : '.direct-chat'
|
||
|
};
|
||
|
|
||
|
var ClassName = {
|
||
|
open: 'direct-chat-contacts-open'
|
||
|
};
|
||
|
|
||
|
// DirectChat Class Definition
|
||
|
// ===========================
|
||
|
var DirectChat = function (element) {
|
||
|
this.element = element;
|
||
|
};
|
||
|
|
||
|
DirectChat.prototype.toggle = function ($trigger) {
|
||
|
$trigger.parents(Selector.box).first().toggleClass(ClassName.open);
|
||
|
};
|
||
|
|
||
|
// Plugin Definition
|
||
|
// =================
|
||
|
function Plugin(option) {
|
||
|
return this.each(function () {
|
||
|
var $this = $(this);
|
||
|
var data = $this.data(DataKey);
|
||
|
|
||
|
if (!data) {
|
||
|
$this.data(DataKey, (data = new DirectChat($this)));
|
||
|
}
|
||
|
|
||
|
if (typeof option == 'string') data.toggle($this);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
var old = $.fn.directChat;
|
||
|
|
||
|
$.fn.directChat = Plugin;
|
||
|
$.fn.directChat.Constructor = DirectChat;
|
||
|
|
||
|
// No Conflict Mode
|
||
|
// ================
|
||
|
$.fn.directChat.noConflict = function () {
|
||
|
$.fn.directChat = old;
|
||
|
return this;
|
||
|
};
|
||
|
|
||
|
// DirectChat Data API
|
||
|
// ===================
|
||
|
$(document).on('click', Selector.data, function (event) {
|
||
|
if (event) event.preventDefault();
|
||
|
Plugin.call($(this), 'toggle');
|
||
|
});
|
||
|
|
||
|
}(jQuery);
|