Streamline admin reply composer
This commit is contained in:
+25
-16
@@ -119,35 +119,39 @@ $("#replyForm textarea").addEventListener("input", debounce(() => {
|
||||
}, 600));
|
||||
|
||||
$("#replyForm input[name='attachments']").addEventListener("change", (event) => {
|
||||
state.replyFiles = mergeImageFiles(state.replyFiles, [...event.target.files]);
|
||||
addReplyFiles([...event.target.files]);
|
||||
event.target.value = "";
|
||||
renderReplyAttachments();
|
||||
});
|
||||
|
||||
$(".admin-dropzone").addEventListener("keydown", (event) => {
|
||||
if (event.key === "Enter" || event.key === " ") {
|
||||
event.preventDefault();
|
||||
$("#replyForm input[name='attachments']").click();
|
||||
}
|
||||
});
|
||||
|
||||
for (const eventName of ["dragenter", "dragover"]) {
|
||||
$(".admin-dropzone").addEventListener(eventName, (event) => {
|
||||
$(".conversation").addEventListener(eventName, (event) => {
|
||||
event.preventDefault();
|
||||
$(".admin-dropzone").classList.add("dragging");
|
||||
if (!state.activeId) return;
|
||||
$("#replyForm").classList.add("dragging");
|
||||
});
|
||||
}
|
||||
|
||||
for (const eventName of ["dragleave", "drop"]) {
|
||||
$(".admin-dropzone").addEventListener(eventName, (event) => {
|
||||
$(".conversation").addEventListener(eventName, (event) => {
|
||||
event.preventDefault();
|
||||
$(".admin-dropzone").classList.remove("dragging");
|
||||
$("#replyForm").classList.remove("dragging");
|
||||
});
|
||||
}
|
||||
|
||||
$(".admin-dropzone").addEventListener("drop", (event) => {
|
||||
state.replyFiles = mergeImageFiles(state.replyFiles, [...event.dataTransfer.files]);
|
||||
renderReplyAttachments();
|
||||
$(".conversation").addEventListener("drop", (event) => {
|
||||
if (!state.activeId) return;
|
||||
addReplyFiles([...event.dataTransfer.files]);
|
||||
});
|
||||
|
||||
$(".conversation").addEventListener("paste", (event) => {
|
||||
if (!state.activeId) return;
|
||||
const files = [...event.clipboardData?.items || []]
|
||||
.filter((item) => item.kind === "file")
|
||||
.map((item) => item.getAsFile())
|
||||
.filter(Boolean);
|
||||
if (!files.length) return;
|
||||
event.preventDefault();
|
||||
addReplyFiles(files);
|
||||
});
|
||||
|
||||
$("#replyAttachments").addEventListener("click", (event) => {
|
||||
@@ -458,6 +462,11 @@ function renderReplyAttachments() {
|
||||
`).join("");
|
||||
}
|
||||
|
||||
function addReplyFiles(files) {
|
||||
state.replyFiles = mergeImageFiles(state.replyFiles, files);
|
||||
renderReplyAttachments();
|
||||
}
|
||||
|
||||
function clearReplyComposer(form = $("#replyForm")) {
|
||||
const textarea = form?.querySelector("textarea[name='message']");
|
||||
if (!textarea) return;
|
||||
|
||||
Reference in New Issue
Block a user