import MarkdownIt from "markdown-it";
+import {scrollAndHighlightElement} from "../services/util";
+
const md = new MarkdownIt({ html: false });
class PageComments {
handleAction(event) {
let actionElem = event.target.closest('[action]');
if (event.target.matches('a[href^="#"]')) {
- let id = event.target.href.split('#')[1];
- window.scrollAndHighlight(document.querySelector('#' + id));
+ const id = event.target.href.split('#')[1];
+ scrollAndHighlightElement(document.querySelector('#' + id));
}
if (actionElem === null) return;
event.preventDefault();
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) + 'px';
+ textArea.style.height = ((lineCount * 20) + 40) + 'px';
this.editingComment = commentElem;
}
commentElem.parentNode.removeChild(commentElem);
window.$events.emit('success', window.trans('entities.comment_deleted_success'));
this.updateCount();
+ this.hideForm();
});
}
showForm() {
this.formContainer.style.display = 'block';
this.formContainer.parentNode.style.display = 'block';
- this.elem.querySelector('[comment-add-button]').style.display = 'none';
+ this.elem.querySelector('[comment-add-button-container]').style.display = 'none';
this.formInput.focus();
- window.scrollToElement(this.formInput);
+ this.formInput.scrollIntoView({behavior: "smooth"});
}
hideForm() {
this.formContainer.style.display = 'none';
this.formContainer.parentNode.style.display = 'none';
- this.elem.querySelector('[comment-add-button]').style.display = 'block';
+ const addButtonContainer = this.elem.querySelector('[comment-add-button-container]');
+ if (this.getCommentCount() > 0) {
+ this.elem.appendChild(addButtonContainer)
+ } else {
+ const countBar = this.elem.querySelector('[comment-count-bar]');
+ countBar.appendChild(addButtonContainer);
+ }
+ addButtonContainer.style.display = 'block';
+ }
+
+ getCommentCount() {
+ return this.elem.querySelectorAll('.comment-box[comment]').length;
}
setReply(commentElem) {