DirectChat.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 JQUERY_NO_CONFLICT = $.fn[NAME]
  15. const Event = {
  16. TOGGLED: 'toggled{EVENT_KEY}'
  17. }
  18. const Selector = {
  19. DATA_TOGGLE: '[data-widget="chat-pane-toggle"]',
  20. DIRECT_CHAT: '.direct-chat'
  21. }
  22. const ClassName = {
  23. DIRECT_CHAT_OPEN: 'direct-chat-contacts-open'
  24. }
  25. /**
  26. * Class Definition
  27. * ====================================================
  28. */
  29. class DirectChat {
  30. constructor(element) {
  31. this._element = element
  32. }
  33. toggle() {
  34. $(this._element).parents(Selector.DIRECT_CHAT).first().toggleClass(ClassName.DIRECT_CHAT_OPEN)
  35. const toggledEvent = $.Event(Event.TOGGLED)
  36. $(this._element).trigger(toggledEvent)
  37. }
  38. // Static
  39. static _jQueryInterface(config) {
  40. return this.each(function () {
  41. let data = $(this).data(DATA_KEY)
  42. if (!data) {
  43. data = new DirectChat($(this))
  44. $(this).data(DATA_KEY, data)
  45. }
  46. data[config]()
  47. })
  48. }
  49. }
  50. /**
  51. *
  52. * Data Api implementation
  53. * ====================================================
  54. */
  55. $(document).on('click', Selector.DATA_TOGGLE, function (event) {
  56. if (event) {
  57. event.preventDefault()
  58. }
  59. DirectChat._jQueryInterface.call($(this), 'toggle')
  60. })
  61. /**
  62. * jQuery API
  63. * ====================================================
  64. */
  65. $.fn[NAME] = DirectChat._jQueryInterface
  66. $.fn[NAME].Constructor = DirectChat
  67. $.fn[NAME].noConflict = function () {
  68. $.fn[NAME] = JQUERY_NO_CONFLICT
  69. return DirectChat._jQueryInterface
  70. }
  71. return DirectChat
  72. })(jQuery)
  73. export default DirectChat