Use controller to disable empty comment submit

This commit is contained in:
Andy Smith
2025-10-01 16:56:55 -05:00
parent 4243db372b
commit 80e072f845
3 changed files with 13 additions and 9 deletions
-6
View File
@@ -31,12 +31,6 @@
position: absolute;
white-space: pre-line;
}
/* Disable the submit button when Lexical is empty */
+ .comment__submit {
opacity: 0.5;
pointer-events: none;
}
}
}
+11 -1
View File
@@ -2,7 +2,7 @@ import { Controller } from "@hotwired/stimulus"
import { debounce } from "helpers/timing_helpers";
export default class extends Controller {
static targets = [ "cancel" ]
static targets = [ "cancel", "submit" ]
static values = {
debounceTimeout: { type: Number, default: 300 }
@@ -37,6 +37,16 @@ export default class extends Controller {
event.preventDefault()
}
disableEmptySubmit(event) {
var value = event.target.value.replace(/<\/?[^>]+(>|$)/g, "")
if (value) {
this.submitTarget.removeAttribute("disabled")
} else {
this.submitTarget.setAttribute("disabled", true)
}
}
select(event) {
event.target.select()
}
+2 -2
View File
@@ -10,10 +10,10 @@
local_save_key_value: "comment-#{card.id}",
action: "turbo:submit-end->local-save#submit keydown.ctrl+enter->form#submit:prevent keydown.meta+enter->form#submit:prevent keydown.esc->form#cancel:stop" } do |form| %>
<%= form.rich_textarea :body, required: true, placeholder: new_comment_placeholder(card),
data: { local_save_target: "input", action: "lexxy:change->local-save#save turbo:morph-element->local-save#restoreContent" } do %>
data: { local_save_target: "input", action: "lexxy:change->form#disableEmptySubmit lexxy:change->local-save#save turbo:morph-element->local-save#restoreContent" } do %>
<%= general_prompts(@card.collection) %>
<% end %>
<%= form.button class: "comment__submit btn btn--reversed flex-item-justify-start" do %>
<%= form.button class: "comment__submit btn btn--reversed flex-item-justify-start", data: { form_target: "submit" }, disabled: true do %>
<span>Post this comment</span>
<% end %>
<span data-form-target="cancel" hidden></span>