/* DirectChat() * =============== * Toggles the state of the control sidebar * * @Usage: $('#my-chat-box').directChat(options) * or add [data-widget="direct-chat"] to the trigger * Pass any option as data-option="value" */ +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 () { var box = $(this).parents(Selector.box).first(); box.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() }) } 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)