diff --git a/app/javascript/controllers/form_controller.js b/app/javascript/controllers/form_controller.js index af4d5148e..d291de2bb 100644 --- a/app/javascript/controllers/form_controller.js +++ b/app/javascript/controllers/form_controller.js @@ -11,31 +11,6 @@ export default class extends Controller { this.cancelTarget?.click() } - pasteFiles(event) { - const editor = event.target.closest("house-md") - if (!editor) return - - const files = event.clipboardData?.files - if (!files?.length) return - - event.preventDefault() - - for (const file of files) { - const uploadEvent = new CustomEvent("house-md:before-upload", { - bubbles: true, - detail: { file }, - cancelable: true - }) - - if (editor.dispatchEvent(uploadEvent)) { - const upload = document.createElement("house-md-upload") - upload.file = file - upload.uploadsURL = editor.dataset.uploadsUrl - editor.appendChild(upload) - } - } - } - preventAttachment(event) { event.preventDefault() } diff --git a/app/javascript/controllers/paste_controller.js b/app/javascript/controllers/paste_controller.js new file mode 100644 index 000000000..79db7d7db --- /dev/null +++ b/app/javascript/controllers/paste_controller.js @@ -0,0 +1,28 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + pasteFiles(event) { + const editor = event.target.closest("house-md") + if (!editor) return + + const files = event.clipboardData?.files + if (!files?.length) return + + event.preventDefault() + + for (const file of files) { + const uploadEvent = new CustomEvent("house-md:before-upload", { + bubbles: true, + detail: { file }, + cancelable: true + }) + + if (editor.dispatchEvent(uploadEvent)) { + const upload = document.createElement("house-md-upload") + upload.file = file + upload.uploadsURL = editor.dataset.uploadsUrl + editor.appendChild(upload) + } + } + } +} \ No newline at end of file diff --git a/app/javascript/controllers/remote_auto_save_controller.js b/app/javascript/controllers/remote_auto_save_controller.js index 429c1b9a4..7ba4a6d5e 100644 --- a/app/javascript/controllers/remote_auto_save_controller.js +++ b/app/javascript/controllers/remote_auto_save_controller.js @@ -10,26 +10,4 @@ export default class extends Controller { submit() { this.autoSaveOutlet.submit() } - - pasteFiles(event) { - const files = event.clipboardData?.files - if (!files?.length) return - - const editor = this.element.querySelector('house-md') - if (!editor) return - - for (const file of files) { - const upload = new CustomEvent('house-md:before-upload', { - bubbles: true, - detail: { file } - }) - - if (editor.dispatchEvent(upload)) { - const uploadElement = document.createElement('house-md-upload') - uploadElement.file = file - uploadElement.uploadsURL = editor.dataset.uploadsUrl - editor.appendChild(uploadElement) - } - } - } } diff --git a/app/views/bubbles/show.html.erb b/app/views/bubbles/show.html.erb index 74fdd519d..3c677e965 100644 --- a/app/views/bubbles/show.html.erb +++ b/app/views/bubbles/show.html.erb @@ -103,7 +103,7 @@ <% else %>
-
+ <%= tag.house_md @bubble.draft_comment, name: "bubble[draft_comment]", class: "input comment__input", form: "bubble_form", placeholder: new_comment_placeholder(@bubble), data: { action: "house-md:change->remote-auto-save#change focusout->remote-auto-save#submit", uploads_url: uploads_url(format: "json") } %>
diff --git a/app/views/comments/_new.html.erb b/app/views/comments/_new.html.erb index 5fac63f02..136db289e 100644 --- a/app/views/comments/_new.html.erb +++ b/app/views/comments/_new.html.erb @@ -2,8 +2,8 @@
<%= form_with model: Comment.new, url: bucket_bubble_comments_path(bubble.bucket, bubble), class: "flex flex-column gap full-width", - data: { controller: "form", - action: "keydown.ctrl+enter->form#submit:prevent keydown.meta+enter->form#submit:prevent keydown.esc->form#cancel:stop paste->form#pasteFiles" } do |form| %> + data: { controller: "form paste", + action: "keydown.ctrl+enter->form#submit:prevent keydown.meta+enter->form#submit:prevent keydown.esc->form#cancel:stop paste->paste#pasteFiles" } do |form| %> <%= form.markdown_area :body, class: "input comment__input", required: true, placeholder: new_comment_placeholder(bubble) %> <%= form.button class: "comment__submit btn btn--reversed flex-item-justify-end txt-small" do %> <%= image_tag "check.svg", aria: { hidden: "true" }, size: 24 %> diff --git a/app/views/comments/edit.html.erb b/app/views/comments/edit.html.erb index 015162a2e..63c14dcd2 100644 --- a/app/views/comments/edit.html.erb +++ b/app/views/comments/edit.html.erb @@ -1,7 +1,7 @@ <%= turbo_frame_tag dom_id(@comment) do %>
<%= form_with model: [@bubble.bucket, @bubble, @comment], class: "flex flex-column gap full-width", - data: { controller: "form", action: "keydown.ctrl+enter->form#submit:prevent keydown.meta+enter->form#submit:prevent keydown.esc->form#cancel:stop" } do |form| %> + data: { controller: "form paste", action: "keydown.ctrl+enter->form#submit:prevent keydown.meta+enter->form#submit:prevent keydown.esc->form#cancel:stop paste->paste#pasteFiles" } do |form| %> <%= form.markdown_area :body, class: "input comment__input", required: true, autofocus: true %>
<%= form.button class: "btn btn--reversed txt-small", type: :submit do %>