diff --git a/public/src/client/chats.js b/public/src/client/chats.js index 1c27176959..d5ee5b8589 100644 --- a/public/src/client/chats.js +++ b/public/src/client/chats.js @@ -74,6 +74,7 @@ define('forum/chats', [ dragDropAreaEl: $('.chats-full'), pasteEl: $('[component="chat/input"]'), uploadFormEl: $('[component="chat/upload"]'), + uploadBtnEl: $('[component="chat/upload/button"]'), inputEl: $('[component="chat/input"]'), }); @@ -87,6 +88,7 @@ define('forum/chats', [ dragDropAreaEl: options.dragDropAreaEl, pasteEl: options.pasteEl, uploadFormEl: options.uploadFormEl, + uploadBtnEl: options.uploadBtnEl, route: '/api/post/upload', // using same route as post uploads callback: function (uploads) { const inputEl = options.inputEl; diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js index 80f22a9b24..bd33274fc3 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -304,6 +304,7 @@ define('chat', [ dragDropAreaEl: chatModal.find('.modal-content'), pasteEl: chatModal, uploadFormEl: chatModal.find('[component="chat/upload"]'), + uploadBtnEl: $('[component="chat/upload/button"]'), inputEl: chatModal.find('[component="chat/input"]'), }); diff --git a/public/src/modules/uploadHelpers.js b/public/src/modules/uploadHelpers.js index 46d08d96b8..e532054288 100644 --- a/public/src/modules/uploadHelpers.js +++ b/public/src/modules/uploadHelpers.js @@ -36,6 +36,27 @@ define('uploadHelpers', ['alerts'], function (alerts) { }, }); } + + if (options.uploadBtnEl) { + const fileInput = formEl.find('input[name="files[]"]'); + options.uploadBtnEl.on('click', function () { + fileInput.trigger('click'); + }); + fileInput.on('change', function (e) { + const files = (e.target || {}).files || + ($(this).val() ? [{ name: $(this).val(), type: utils.fileMimeType($(this).val()) }] : null); + if (files) { + uploadHelpers.ajaxSubmit({ + uploadForm: formEl, + upload: { + files: files, + fileNames: Array.from(files).map(f => f.name), + }, + callback: options.callback, + }); + } + }); + } }; uploadHelpers.handleDragDrop = function (options) {