diff --git a/public/scripts/chats.js b/public/scripts/chats.js
index 2fbe3760a..cd8a8677e 100644
--- a/public/scripts/chats.js
+++ b/public/scripts/chats.js
@@ -380,6 +380,7 @@ jQuery(function () {
$(document).on('click', '.editor_maximize', function () {
const broId = $(this).attr('data-for');
const bro = $(`#${broId}`);
+ const withTab = $(this).attr('data-tab');
if (!bro.length) {
console.error('Could not find editor with id', broId);
@@ -392,11 +393,41 @@ jQuery(function () {
const textarea = document.createElement('textarea');
textarea.value = String(bro.val());
textarea.classList.add('height100p', 'wide100p');
- textarea.oninput = function () {
+ textarea.addEventListener('input', function () {
bro.val(textarea.value).trigger('input');
- };
+ });
wrapper.appendChild(textarea);
+ if (withTab) {
+ textarea.addEventListener('keydown', (evt) => {
+ if (evt.key == 'Tab' && !evt.shiftKey && !evt.ctrlKey && !evt.altKey) {
+ evt.preventDefault();
+ const start = textarea.selectionStart;
+ const end = textarea.selectionEnd;
+ if (end - start > 0 && textarea.value.substring(start, end).includes('\n')) {
+ const lineStart = textarea.value.lastIndexOf('\n', start);
+ const count = textarea.value.substring(lineStart, end).split('\n').length - 1;
+ textarea.value = `${textarea.value.substring(0, lineStart)}${textarea.value.substring(lineStart, end).replace(/\n/g, '\n\t')}${textarea.value.substring(end)}`;
+ textarea.selectionStart = start + 1;
+ textarea.selectionEnd = end + count;
+ } else {
+ textarea.value = `${textarea.value.substring(0, start)}\t${textarea.value.substring(end)}`;
+ textarea.selectionStart = start + 1;
+ textarea.selectionEnd = end + 1;
+ }
+ } else if (evt.key == 'Tab' && evt.shiftKey && !evt.ctrlKey && !evt.altKey) {
+ evt.preventDefault();
+ const start = textarea.selectionStart;
+ const end = textarea.selectionEnd;
+ const lineStart = textarea.value.lastIndexOf('\n', start);
+ const count = textarea.value.substring(lineStart, end).split('\n\t').length - 1;
+ textarea.value = `${textarea.value.substring(0, lineStart)}${textarea.value.substring(lineStart, end).replace(/\n\t/g, '\n')}${textarea.value.substring(end)}`;
+ textarea.selectionStart = start - 1;
+ textarea.selectionEnd = end - count;
+ }
+ });
+ }
+
callPopup(wrapper, 'text', '', { wide: true, large: true });
});
diff --git a/public/scripts/extensions/quick-reply/index.js b/public/scripts/extensions/quick-reply/index.js
index 36260bd83..6ce80d51a 100644
--- a/public/scripts/extensions/quick-reply/index.js
+++ b/public/scripts/extensions/quick-reply/index.js
@@ -639,7 +639,7 @@ function generateQuickReplyElements() {
☰
-
+
`;