- if (event.target.matches('a[href^="#"]')) {
- const id = event.target.href.split('#')[1];
- scrollAndHighlightElement(document.querySelector('#' + id));
- }
-
- if (actionElem === null) return;
- event.preventDefault();
-
- let action = actionElem.getAttribute('action');
- if (action === 'edit') this.editComment(actionElem.closest('[comment]'));
- if (action === 'closeUpdateForm') this.closeUpdateForm();
- if (action === 'delete') this.deleteComment(actionElem.closest('[comment]'));
- if (action === 'addComment') this.showForm();
- if (action === 'hideForm') this.hideForm();
- if (action === 'reply') this.setReply(actionElem.closest('[comment]'));
- if (action === 'remove-reply-to') this.removeReplyTo();
- }
-
- closeUpdateForm() {
- if (!this.editingComment) return;
- this.editingComment.querySelector('[comment-content]').style.display = 'block';
- this.editingComment.querySelector('[comment-edit-container]').style.display = 'none';
- }
-
- editComment(commentElem) {
- this.hideForm();
- if (this.editingComment) this.closeUpdateForm();
- commentElem.querySelector('[comment-content]').style.display = 'none';
- commentElem.querySelector('[comment-edit-container]').style.display = 'block';
- let textArea = commentElem.querySelector('[comment-edit-container] textarea');
- let lineCount = textArea.value.split('\n').length;
- textArea.style.height = ((lineCount * 20) + 40) + 'px';
- this.editingComment = commentElem;
- }
-
- updateComment(event) {
- let form = event.target;
- event.preventDefault();
- let text = form.querySelector('textarea').value;
- let reqData = {
- text: text,
- parent_id: this.parentId || null,
- };
- this.showLoading(form);
- let commentId = this.editingComment.getAttribute('comment');
- window.$http.put(`/ajax/comment/${commentId}`, reqData).then(resp => {
- let newComment = document.createElement('div');
- newComment.innerHTML = resp.data;
- this.editingComment.innerHTML = newComment.children[0].innerHTML;
- window.$events.emit('success', window.trans('entities.comment_updated_success'));
- window.components.init(this.editingComment);
- this.closeUpdateForm();
- this.editingComment = null;
- this.hideLoading(form);
- });
- }
-
- deleteComment(commentElem) {
- let id = commentElem.getAttribute('comment');
- this.showLoading(commentElem.querySelector('[comment-content]'));
- window.$http.delete(`/ajax/comment/${id}`).then(resp => {
- commentElem.parentNode.removeChild(commentElem);
- window.$events.emit('success', window.trans('entities.comment_deleted_success'));