lml / commontator

A Rails engine for comments
MIT License
354 stars 99 forks source link

Autofocus of reply textarea does not work when replying to a comment #181

Open dssjoblom opened 4 years ago

dssjoblom commented 4 years ago

The autofocusing code does not work when replying to a comment, it only works when creating a new comment. The code in _new.js.erb is:

<%
  id = @comment.parent.nil? ? "commontator-thread-#{@commontator_thread.id}-new-comment" :
                              "commontator-comment-#{@comment.parent.id}-reply"
%>

$('#<%= id %>-body').focus();

And in _form.html.erb, the id is set as follows:

      form.text_area :body, rows: '7', id: new_record ?
        comment.parent.nil? ? "commontator-thread-#{@commontator_thread.id}-new-comment-body" :
                              "commontator-comment-#{comment.parent.id}-reply" :
        "commontator-comment-#{comment.id}-edit-body"

There are two problems: 1. if comment.parent is not nil, the id will not end in -body, hence it won't get focus 2. without the -body suffix, the id is actually a duplicate of another id, breaking e.g. id selectors.

My quick fix is to change _form.html.erb so that it reads:

      form.text_area :body, rows: '7', id: new_record ?
        comment.parent.nil? ? "commontator-thread-#{@commontator_thread.id}-new-comment-body" :
                              "commontator-comment-#{comment.parent.id}-reply-body" :
        "commontator-comment-#{comment.id}-edit-body"