DirectChat.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * --------------------------------------------
  3. * AdminLTE DirectChat.js
  4. * License MIT
  5. * --------------------------------------------
  6. */
  7. import $ from 'jquery'
  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. $(this._element).trigger($.Event(Event.TOGGLED))
  36. }
  37. // Static
  38. static _jQueryInterface(config) {
  39. return this.each(function () {
  40. let data = $(this).data(DATA_KEY)
  41. if (!data) {
  42. data = new DirectChat($(this))
  43. $(this).data(DATA_KEY, data)
  44. }
  45. data[config]()
  46. })
  47. }
  48. }
  49. /**
  50. *
  51. * Data Api implementation
  52. * ====================================================
  53. */
  54. $(document).on('click', Selector.DATA_TOGGLE, function (event) {
  55. if (event) {
  56. event.preventDefault()
  57. }
  58. DirectChat._jQueryInterface.call($(this), 'toggle')
  59. })
  60. /**
  61. * jQuery API
  62. * ====================================================
  63. */
  64. $.fn[NAME] = DirectChat._jQueryInterface
  65. $.fn[NAME].Constructor = DirectChat
  66. $.fn[NAME].noConflict = function () {
  67. $.fn[NAME] = JQUERY_NO_CONFLICT
  68. return DirectChat._jQueryInterface
  69. }
  70. export default DirectChat