diff --git a/install/package.json b/install/package.json index f5cdd294f2..5b01b62cb6 100644 --- a/install/package.json +++ b/install/package.json @@ -103,7 +103,7 @@ "nodebb-theme-harmony": "1.0.0-beta.48", "nodebb-theme-lavender": "7.0.7", "nodebb-theme-peace": "2.0.17", - "nodebb-theme-persona": "13.0.47", + "nodebb-theme-persona": "13.0.48", "nodebb-widget-essentials": "7.0.5", "nodemailer": "6.8.0", "nprogress": "0.2.0", diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 321ba7f9c0..3ef816eaa0 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -528,7 +528,7 @@ define('forum/chats', [ if (!utils.isMobile()) { $('.expanded-chat [component="chat/input"]').focus(); } - messages.updateTextAreaHeight(); + messages.updateTextAreaHeight($(`[component="chat/messages"][data-roomid="${ajaxify.data.roomId}"]`)); } $('.chats-list li').removeClass('active'); $('.chats-list li[data-roomid="' + ajaxify.data.roomId + '"]').addClass('active'); diff --git a/public/src/client/chats/messages.js b/public/src/client/chats/messages.js index eb5eb5df44..facce0a022 100644 --- a/public/src/client/chats/messages.js +++ b/public/src/client/chats/messages.js @@ -14,11 +14,11 @@ define('forum/chats/messages', [ if (!message.trim().length) { return; } - + const chatContent = inputEl.parents(`[component="chat/messages"][data-roomid="${roomId}"]`); inputEl.val('').trigger('input'); inputEl.removeAttr('data-mid'); messages.updateRemainingLength(inputEl.parent()); - messages.updateTextAreaHeight(); + messages.updateTextAreaHeight(chatContent); const payload = { roomId, message, mid }; ({ roomId, message, mid } = await hooks.fire('filter:chat.send', payload)); @@ -61,14 +61,18 @@ define('forum/chats/messages', [ }); }; - messages.updateTextAreaHeight = function () { + messages.updateTextAreaHeight = function (chatContentEl) { // https://stackoverflow.com/questions/454202/creating-a-textarea-with-auto-resize - const textarea = $('.expanded-chat [component="chat/input"]'); + const textarea = chatContentEl.find('[component="chat/input"]'); const scrollHeight = textarea.prop('scrollHeight'); textarea.css({ height: scrollHeight + 'px', 'overflow-y': 'hidden' }); textarea.on('input', function () { + const isAtBottom = messages.isAtBottom(chatContentEl.find('.chat-content')); textarea.css({ height: 0 }); textarea.css({ height: textarea.prop('scrollHeight') + 'px' }); + if (isAtBottom) { + messages.scrollToBottom(chatContentEl.find('.chat-content')); + } }); }; diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 82f861c162..32b1d0d5a0 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -245,7 +245,7 @@ define('chat', [ }); }); - scrollStop.apply(chatModal.find('[component="chat/messages"]')); + scrollStop.apply(chatModal.find('[component="chat/messages"] .chat-content')); chatModal.find('#chat-close-btn').on('click', function () { module.close(uuid);