IssueNotesRefactor: Implement up arrow to edit last note.

This commit is contained in:
Fatih Acet 2017-07-11 00:53:52 +03:00
parent d45a8e006a
commit 717c30221c
5 changed files with 41 additions and 4 deletions

View file

@ -4,6 +4,7 @@
import UserAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_link.vue';
import MarkdownField from '../../vue_shared/components/markdown/field.vue';
import IssueNoteSignedOutWidget from './issue_note_signed_out_widget.vue';
import eventHub from '../event_hub';
export default {
props: {},
@ -101,6 +102,17 @@ export default {
handleError() {
new Flash('Something went wrong while adding your comment. Please try again.'); // eslint-disable-line
},
editMyLastNote() {
if (this.note === '') {
const myLastNoteId = $('.js-my-note').last().attr('id');
if (myLastNoteId) {
eventHub.$emit('EnterEditMode', {
noteId: parseInt(myLastNoteId.replace('note_', ''), 10),
});
}
}
},
},
mounted() {
const issuableDataEl = document.getElementById('js-issuable-app-initial-data');
@ -143,6 +155,7 @@ export default {
ref="textarea"
slot="textarea"
placeholder="Write a comment or drag your files here..."
@keydown.up="editMyLastNote"
@keydown.meta.enter="handleSave()">
</textarea>
</markdown-field>

View file

@ -6,6 +6,7 @@ import UserAvatarLink from '../../vue_shared/components/user_avatar/user_avatar_
import IssueNoteHeader from './issue_note_header.vue';
import IssueNoteActions from './issue_note_actions.vue';
import IssueNoteBody from './issue_note_body.vue';
import eventHub from '../event_hub';
export default {
props: {
@ -37,6 +38,7 @@ export default {
return {
'is-editing': this.isEditing,
'disabled-content': this.isDeleting,
'js-my-note': this.author.id === window.gon.current_user_id,
target: this.targetNoteHash === this.noteAnchorId,
};
},
@ -100,6 +102,14 @@ export default {
this.isEditing = false;
},
},
created() {
eventHub.$on('EnterEditMode', ({ noteId }) => {
if (noteId === this.note.id) {
this.isEditing = true;
this.$store.dispatch('scrollToNoteIfNeeded', $(this.$el));
}
});
},
};
</script>

View file

@ -1,5 +1,6 @@
<script>
import MarkdownField from '../../vue_shared/components/markdown/field.vue';
import eventHub from '../event_hub';
export default {
props: {
@ -39,6 +40,18 @@ export default {
note: this.note,
});
},
editMyLastNote() {
if (this.note === '') {
const discussion = $(this.$el).closest('.discussion-notes');
const myLastNoteId = discussion.find('.js-my-note').last().attr('id');
if (myLastNoteId) {
eventHub.$emit('EnterEditMode', {
noteId: parseInt(myLastNoteId.replace('note_', ''), 10),
});
}
}
},
},
computed: {
isDirty() {
@ -75,6 +88,7 @@ export default {
slot="textarea"
placeholder="Write a comment or drag your files here..."
@keydown.meta.enter="handleUpdate"
@keydown.up="editMyLastNote"
@keydown.esc="cancelHandler(true)">
</textarea>
</markdown-field>

View file

@ -197,10 +197,10 @@ const actions = {
if (!skipMutalityCheck && (awardName === 'thumbsup' || awardName === 'thumbsdown')) {
const counterAward = awardName === 'thumbsup' ? 'thumbsdown' : 'thumbsup';
const note = context.getters.notesById[noteId];
const targetNote = context.getters.notesById[noteId];
let amIAwarded = false;
note.award_emoji.forEach((a) => {
targetNote.award_emoji.forEach((a) => {
if (a.name === counterAward && a.user.id === window.gon.current_user_id) {
amIAwarded = true;
}

View file

@ -4,9 +4,9 @@
- if can_update && is_current_user
= link_to "Close #{display_issuable_type}", close_issuable_url(issuable), method: button_method,
class: "hidden-xs hidden-sm btn btn-grouped btn-close #{issuable_button_visibility(issuable, true)}", title: "Close #{display_issuable_type}"
class: "hidden-xs hidden-sm btn btn-grouped btn-close js-btn-issue-action #{issuable_button_visibility(issuable, true)}", title: "Close #{display_issuable_type}"
= link_to "Reopen #{display_issuable_type}", reopen_issuable_url(issuable), method: button_method,
class: "hidden-xs hidden-sm btn btn-grouped btn-reopen #{issuable_button_visibility(issuable, false)}", title: "Reopen #{display_issuable_type}"
class: "hidden-xs hidden-sm btn btn-grouped btn-reopen js-btn-issue-action #{issuable_button_visibility(issuable, false)}", title: "Reopen #{display_issuable_type}"
- elsif can_update && !is_current_user
= render 'shared/issuable/close_reopen_report_toggle', issuable: issuable
- else