summaryrefslogtreecommitdiff
path: root/client/js/controls
diff options
context:
space:
mode:
Diffstat (limited to 'client/js/controls')
-rw-r--r--client/js/controls/expander_control.js5
-rw-r--r--client/js/controls/file_dropper_control.js22
-rw-r--r--client/js/controls/post_content_control.js24
-rw-r--r--client/js/controls/post_edit_sidebar_control.js7
-rw-r--r--client/js/controls/post_notes_overlay_control.js5
-rw-r--r--client/js/controls/tag_input_control.js6
6 files changed, 55 insertions, 14 deletions
diff --git a/client/js/controls/expander_control.js b/client/js/controls/expander_control.js
index c26bd03..f3105ca 100644
--- a/client/js/controls/expander_control.js
+++ b/client/js/controls/expander_control.js
@@ -49,9 +49,8 @@ class ExpanderControl {
// eslint-disable-next-line accessor-pairs
set title(newTitle) {
if (this._expanderNode) {
- this._expanderNode.querySelector(
- "header span"
- ).textContent = newTitle;
+ this._expanderNode.querySelector("header span").textContent =
+ newTitle;
}
}
diff --git a/client/js/controls/file_dropper_control.js b/client/js/controls/file_dropper_control.js
index 2dfb492..8d1fa16 100644
--- a/client/js/controls/file_dropper_control.js
+++ b/client/js/controls/file_dropper_control.js
@@ -48,6 +48,12 @@ class FileDropperControl extends events.EventTarget {
this._urlInputNode.addEventListener("keydown", (e) =>
this._evtUrlInputKeyDown(e)
);
+ this._urlInputNode.addEventListener("paste", (e) => {
+ // document.onpaste is used on the post-upload page.
+ // And this event is used on the post edit page.
+ if (document.getElementById("post-upload")) return;
+ this._evtPaste(e)
+ });
}
if (this._urlConfirmButtonNode) {
this._urlConfirmButtonNode.addEventListener("click", (e) =>
@@ -55,6 +61,11 @@ class FileDropperControl extends events.EventTarget {
);
}
+ document.onpaste = (e) => {
+ if (!document.getElementById("post-upload")) return;
+ this._evtPaste(e)
+ }
+
this._originalHtml = this._dropperNode.innerHTML;
views.replaceContent(target, source);
}
@@ -129,6 +140,17 @@ class FileDropperControl extends events.EventTarget {
this._emitFiles(e.dataTransfer.files);
}
+ _evtPaste(e) {
+ const items = (e.clipboardData || e.originalEvent.clipboardData).items;
+ const fileList = Array.from(items).map((x) => x.getAsFile()).filter(f => f);
+
+ if (!this._options.allowMultiple && fileList.length > 1) {
+ window.alert("Cannot select multiple files.");
+ } else if (fileList.length > 0) {
+ this._emitFiles(fileList);
+ }
+ }
+
_evtUrlInputKeyDown(e) {
if (e.which !== KEY_RETURN) {
return;
diff --git a/client/js/controls/post_content_control.js b/client/js/controls/post_content_control.js
index 0023854..ed5e9a4 100644
--- a/client/js/controls/post_content_control.js
+++ b/client/js/controls/post_content_control.js
@@ -115,6 +115,30 @@ class PostContentControl {
}
_refreshSize() {
+ if (window.innerWidth <= 800) {
+ const buttons = document.querySelector(".sidebar > .buttons");
+ if (buttons) {
+ const content = document.querySelector(".content");
+ content.insertBefore(buttons, content.querySelector(".post-container + *"));
+
+ const afterControls = document.querySelector(".content > .after-mobile-controls");
+ if (afterControls) {
+ afterControls.parentElement.parentElement.appendChild(afterControls);
+ }
+ }
+ } else {
+ const buttons = document.querySelector(".content > .buttons");
+ if (buttons) {
+ const sidebar = document.querySelector(".sidebar");
+ sidebar.insertBefore(buttons, sidebar.firstElementChild);
+ }
+
+ const afterControls = document.querySelector(".content + .after-mobile-controls");
+ if (afterControls) {
+ document.querySelector(".content").appendChild(afterControls);
+ }
+ }
+
this._currentFitFunction();
}
diff --git a/client/js/controls/post_edit_sidebar_control.js b/client/js/controls/post_edit_sidebar_control.js
index 053a317..a673495 100644
--- a/client/js/controls/post_edit_sidebar_control.js
+++ b/client/js/controls/post_edit_sidebar_control.js
@@ -221,9 +221,8 @@ class PostEditSidebarControl extends events.EventTarget {
);
if (this._formNode) {
- const inputNodes = this._formNode.querySelectorAll(
- "input, textarea"
- );
+ const inputNodes =
+ this._formNode.querySelectorAll("input, textarea");
for (let node of inputNodes) {
node.addEventListener("change", (e) =>
this.dispatchEvent(new CustomEvent("change"))
@@ -476,7 +475,7 @@ class PostEditSidebarControl extends events.EventTarget {
: undefined,
thumbnail:
- this._newPostThumbnail !== undefined
+ this._newPostThumbnail !== undefined && this._newPostThumbnail !== null
? this._newPostThumbnail
: undefined,
diff --git a/client/js/controls/post_notes_overlay_control.js b/client/js/controls/post_notes_overlay_control.js
index 030f7f2..e9aad04 100644
--- a/client/js/controls/post_notes_overlay_control.js
+++ b/client/js/controls/post_notes_overlay_control.js
@@ -727,9 +727,8 @@ class PostNotesOverlayControl extends events.EventTarget {
}
_showNoteText(note) {
- this._textNode.querySelector(
- ".wrapper"
- ).innerHTML = misc.formatMarkdown(note.text);
+ this._textNode.querySelector(".wrapper").innerHTML =
+ misc.formatMarkdown(note.text);
this._textNode.style.display = "block";
const bodyRect = document.body.getBoundingClientRect();
const noteRect = this._textNode.getBoundingClientRect();
diff --git a/client/js/controls/tag_input_control.js b/client/js/controls/tag_input_control.js
index 35bbe9f..0399d21 100644
--- a/client/js/controls/tag_input_control.js
+++ b/client/js/controls/tag_input_control.js
@@ -200,11 +200,9 @@ class TagInputControl extends events.EventTarget {
const listItemNode = this._createListItemNode(tag);
if (!tag.category) {
listItemNode.classList.add("new");
- }
- else if (source === SOURCE_IMPLICATION) {
+ } else if (source === SOURCE_IMPLICATION) {
listItemNode.classList.add("implication");
- }
- else {
+ } else {
listItemNode.classList.add("added");
}
this._tagListNode.prependChild(listItemNode);