app-chat.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. (function ($) {
  2. "use strict";
  3. // if it is not touch device
  4. if (!$.app.menu.is_touch_device()) {
  5. // Chat user list
  6. if ($('.chat-application .chat-user-list').length > 0) {
  7. var chat_user_list = new PerfectScrollbar(".chat-user-list");
  8. }
  9. // Chat user profile
  10. if ($('.chat-application .profile-sidebar-area .scroll-area').length > 0) {
  11. var chat_user_list = new PerfectScrollbar(".profile-sidebar-area .scroll-area");
  12. }
  13. // Chat area
  14. if ($('.chat-application .user-chats').length > 0) {
  15. var chat_user = new PerfectScrollbar(".user-chats", {
  16. wheelPropagation: false
  17. });
  18. }
  19. // User profile right area
  20. if ($('.chat-application .user-profile-sidebar-area').length > 0) {
  21. var user_profile = new PerfectScrollbar(".user-profile-sidebar-area");
  22. }
  23. }
  24. // if it is a touch device
  25. else {
  26. $(".chat-user-list").css("overflow", "scroll");
  27. $(".profile-sidebar-area .scroll-area").css("overflow", "scroll");
  28. $(".user-chats").css("overflow", "scroll");
  29. $(".user-profile-sidebar-area").css("overflow", "scroll");
  30. }
  31. // Chat Profile sidebar toggle
  32. $('.chat-application .sidebar-profile-toggle').on('click', function () {
  33. $('.chat-profile-sidebar').addClass('show');
  34. $('.chat-overlay').addClass('show');
  35. });
  36. // User Profile sidebar toggle
  37. $('.chat-application .user-profile-toggle').on('click', function () {
  38. $('.user-profile-sidebar').addClass('show');
  39. $('.chat-overlay').addClass('show');
  40. });
  41. // Update status by clickin on Radio
  42. $('.chat-application .user-status input:radio[name=userStatus]').on('change', function () {
  43. var $className = "avatar-status-" + this.value;
  44. $(".header-profile-sidebar .avatar span").removeClass();
  45. $(".sidebar-profile-toggle .avatar span").removeClass();
  46. $(".header-profile-sidebar .avatar span").addClass($className + " avatar-status-lg");
  47. $(".sidebar-profile-toggle .avatar span").addClass($className);
  48. });
  49. // On Profile close click
  50. $(".chat-application .close-icon").on('click', function () {
  51. $('.chat-profile-sidebar').removeClass('show');
  52. $('.user-profile-sidebar').removeClass('show');
  53. if (!$(".sidebar-content").hasClass("show")) {
  54. $('.chat-overlay').removeClass('show');
  55. }
  56. });
  57. // On sidebar close click
  58. $(".chat-application .sidebar-close-icon").on('click', function () {
  59. $('.sidebar-content').removeClass('show');
  60. $('.chat-overlay').removeClass('show');
  61. });
  62. // On overlay click
  63. $(".chat-application .chat-overlay").on('click', function () {
  64. $('.app-content .sidebar-content').removeClass('show');
  65. $('.chat-application .chat-overlay').removeClass('show');
  66. $('.chat-profile-sidebar').removeClass('show');
  67. $('.user-profile-sidebar').removeClass('show');
  68. });
  69. // Add class active on click of Chat users list
  70. $(".chat-application .chat-user-list ul li").on('click', function () {
  71. if ($('.chat-user-list ul li').hasClass('active')) {
  72. $('.chat-user-list ul li').removeClass('active');
  73. }
  74. $(this).addClass("active");
  75. $(this).find(".badge").remove();
  76. if ($('.chat-user-list ul li').hasClass('active')) {
  77. $('.start-chat-area').addClass('d-none');
  78. $('.active-chat').removeClass('d-none');
  79. }
  80. else {
  81. $('.start-chat-area').removeClass('d-none');
  82. $('.active-chat').addClass('d-none');
  83. }
  84. });
  85. // autoscroll to bottom of Chat area
  86. var chatContainer = $(".user-chats");
  87. $(".chat-users-list-wrapper li").on("click", function () {
  88. chatContainer.animate({ scrollTop: chatContainer[0].scrollHeight }, 400)
  89. });
  90. // Favorite star click
  91. $(".chat-application .favorite i").on("click", function (e) {
  92. $(this).parent('.favorite').toggleClass("warning");
  93. e.stopPropagation();
  94. });
  95. // Main menu toggle should hide app menu
  96. $('.chat-application .menu-toggle').on('click', function (e) {
  97. $('.app-content .sidebar-left').removeClass('show');
  98. $('.chat-application .chat-overlay').removeClass('show');
  99. });
  100. // Chat sidebar toggle
  101. if ($(window).width() < 992) {
  102. $('.chat-application .sidebar-toggle').on('click', function () {
  103. $('.app-content .sidebar-content').addClass('show');
  104. $('.chat-application .chat-overlay').addClass('show');
  105. });
  106. }
  107. // For chat sidebar on small screen
  108. if ($(window).width() > 992) {
  109. if ($('.chat-application .chat-overlay').hasClass('show')) {
  110. $('.chat-application .chat-overlay').removeClass('show');
  111. }
  112. }
  113. // Scroll Chat area
  114. $(".user-chats").scrollTop($(".user-chats > .chats").height());
  115. // Filter
  116. $(".chat-application #chat-search").on("keyup", function () {
  117. var value = $(this).val().toLowerCase();
  118. if (value != "") {
  119. $(".chat-user-list .chat-users-list-wrapper li").filter(function () {
  120. $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
  121. });
  122. }
  123. else {
  124. // If filter box is empty
  125. $(".chat-user-list .chat-users-list-wrapper li").show();
  126. }
  127. });
  128. })(jQuery);
  129. $(window).on("resize", function () {
  130. // remove show classes from sidebar and overlay if size is > 992
  131. if ($(window).width() > 992) {
  132. if ($('.chat-application .chat-overlay').hasClass('show')) {
  133. $('.app-content .sidebar-left').removeClass('show');
  134. $('.chat-application .chat-overlay').removeClass('show');
  135. }
  136. }
  137. // Chat sidebar toggle
  138. if ($(window).width() < 992) {
  139. if ($('.chat-application .chat-profile-sidebar').hasClass('show')) {
  140. $('.chat-profile-sidebar').removeClass('show');
  141. }
  142. $('.chat-application .sidebar-toggle').on('click', function () {
  143. $('.app-content .sidebar-content').addClass('show');
  144. $('.chat-application .chat-overlay').addClass('show');
  145. });
  146. }
  147. });
  148. // Add message to chat
  149. function enter_chat(source) {
  150. var message = $(".message").val();
  151. if (message != "") {
  152. var html = '<div class="chat-content">' + "<p>" + message + "</p>" + "</div>";
  153. $(".chat:last-child .chat-body").append(html);
  154. $(".message").val("");
  155. $(".user-chats").scrollTop($(".user-chats > .chats").height());
  156. }
  157. }