DirectChat.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * --------------------------------------------
  3. * AdminLTE DirectChat.js
  4. * License MIT
  5. * --------------------------------------------
  6. */
  7. const DirectChat = (($) => {
  8. /**
  9. * Constants
  10. * ====================================================
  11. */
  12. const NAME = 'DirectChat'
  13. const DATA_KEY = 'lte.directchat'
  14. const EVENT_KEY = `.${DATA_KEY}`
  15. const JQUERY_NO_CONFLICT = $.fn[NAME]
  16. const DATA_API_KEY = '.data-api'
  17. const Selector = {
  18. DATA_TOGGLE: '[data-widget="chat-pane-toggle"]',
  19. DIRECT_CHAT: '.direct-chat'
  20. };
  21. const ClassName = {
  22. DIRECT_CHAT_OPEN: 'direct-chat-contacts-open'
  23. };
  24. /**
  25. * Class Definition
  26. * ====================================================
  27. */
  28. class DirectChat {
  29. constructor(element, config) {
  30. this._element = element
  31. }
  32. toggle() {
  33. $(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN);
  34. }
  35. // Static
  36. static _jQueryInterface(config) {
  37. return this.each(function () {
  38. let data = $(this).data(DATA_KEY)
  39. const _config = $.extend({}, Default, $(this).data())
  40. if (!data) {
  41. data = new DirectChat($(this), _config)
  42. $(this).data(DATA_KEY, data)
  43. }
  44. if (config === 'init') {
  45. data[config]()
  46. }
  47. })
  48. }
  49. }
  50. /**
  51. *
  52. * Data Api implementation
  53. * ====================================================
  54. */
  55. $(document).on('click', Selector.DATA_TOGGLE, function (event) {
  56. if (event) event.preventDefault();
  57. DirectChat._jQueryInterface.call($(this), 'toggle');
  58. });
  59. /**
  60. * jQuery API
  61. * ====================================================
  62. */
  63. $.fn[NAME] = DirectChat._jQueryInterface
  64. $.fn[NAME].Constructor = DirectChat
  65. $.fn[NAME].noConflict = function () {
  66. $.fn[NAME] = JQUERY_NO_CONFLICT
  67. return DirectChat._jQueryInterface
  68. }
  69. return DirectChat
  70. })(jQuery)
  71. export default DirectChat