50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
((w) => {
|
|
w.CommentAndResolveBtn = Vue.extend({
|
|
props: {
|
|
discussionId: String,
|
|
textareaIsEmpty: Boolean
|
|
},
|
|
computed: {
|
|
discussion: function () {
|
|
return CommentsStore.state[this.discussionId];
|
|
},
|
|
showButton: function () {
|
|
if (this.discussion) {
|
|
return this.discussion.isResolvable();
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
isDiscussionResolved: function () {
|
|
return this.discussion.isResolved();
|
|
},
|
|
buttonText: function () {
|
|
if (this.isDiscussionResolved) {
|
|
if (this.textareaIsEmpty) {
|
|
return "Unresolve discussion";
|
|
} else {
|
|
return "Comment & unresolve discussion";
|
|
}
|
|
} else {
|
|
if (this.textareaIsEmpty) {
|
|
return "Resolve discussion";
|
|
} else {
|
|
return "Comment & resolve discussion";
|
|
}
|
|
}
|
|
}
|
|
},
|
|
ready: function () {
|
|
const $textarea = $(`#new-discussion-note-form-${this.discussionId} .note-textarea`);
|
|
this.textareaIsEmpty = $textarea.val() === '';
|
|
|
|
$textarea.on('input.comment-and-resolve-btn', () => {
|
|
this.textareaIsEmpty = $textarea.val() === '';
|
|
});
|
|
},
|
|
destroyed: function () {
|
|
$(`#new-discussion-note-form-${this.discussionId} .note-textarea`).off('input.comment-and-resolve-btn');
|
|
}
|
|
});
|
|
})(window);
|