Move Javascript files from app/components/**/*.js back to app/javascript/src/javascripts/*.js. This way Javascript files are in one place, which simplifies import paths and makes it easier to see all Javascript at once.
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
import Utility from "./utility";
|
|
|
|
class CommentComponent {
|
|
static initialize() {
|
|
if ($("#c-posts #a-show, #c-comments").length) {
|
|
$(document).on("click.danbooru.comment", ".edit_comment_link", CommentComponent.showEditForm);
|
|
$(document).on("click.danbooru.comment", ".expand-comment-response", CommentComponent.showNewCommentForm);
|
|
$(document).on("click.danbooru.comment", ".unhide-comment-link", CommentComponent.unhideComment);
|
|
$(document).on("click.danbooru.comment", ".comment-copy-id", CommentComponent.copyID);
|
|
$(document).on("click.danbooru.comment", ".comment-copy-link", CommentComponent.copyLink);
|
|
}
|
|
}
|
|
|
|
static showNewCommentForm(e) {
|
|
$(e.target).hide();
|
|
var $form = $(e.target).closest("div.new-comment").find("form");
|
|
$form.show();
|
|
$form[0].scrollIntoView(false);
|
|
$form.find("textarea").selectEnd();
|
|
e.preventDefault();
|
|
}
|
|
|
|
static showEditForm(e) {
|
|
$(this).closest(".comment").find(".edit_comment").show();
|
|
e.preventDefault();
|
|
}
|
|
|
|
static unhideComment(e) {
|
|
let $comment = $(this).closest(".comment");
|
|
$comment.find(".unhide-comment-link").hide();
|
|
$comment.find(".body").show();
|
|
e.preventDefault();
|
|
}
|
|
|
|
static async copyID(e) {
|
|
let id = $(this).closest(".comment").data("id");
|
|
let link = `comment #${id}`;
|
|
Utility.copyToClipboard(link);
|
|
e.preventDefault();
|
|
}
|
|
|
|
static async copyLink(e) {
|
|
let id = $(this).closest(".comment").data("id");
|
|
let link = `${window.location.origin}/comments/${id}`;
|
|
Utility.copyToClipboard(link);
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
|
|
$(document).ready(CommentComponent.initialize);
|
|
|
|
export default CommentComponent;
|