64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
/* eslint-disable comma-dangle, no-unused-vars */
|
|
/* global Vue */
|
|
/* global ListIssue */
|
|
|
|
(() => {
|
|
const Store = gl.issueBoards.BoardsStore;
|
|
|
|
window.gl = window.gl || {};
|
|
|
|
gl.issueBoards.BoardNewIssue = Vue.extend({
|
|
props: {
|
|
list: Object,
|
|
},
|
|
data() {
|
|
return {
|
|
title: '',
|
|
error: false
|
|
};
|
|
},
|
|
methods: {
|
|
submit(e) {
|
|
e.preventDefault();
|
|
if (this.title.trim() === '') return;
|
|
|
|
this.error = false;
|
|
|
|
const labels = this.list.label ? [this.list.label] : [];
|
|
const issue = new ListIssue({
|
|
title: this.title,
|
|
labels,
|
|
subscribed: true
|
|
});
|
|
|
|
this.list.newIssue(issue)
|
|
.then((data) => {
|
|
// Need this because our jQuery very kindly disables buttons on ALL form submissions
|
|
$(this.$refs.submitButton).enable();
|
|
|
|
Store.detail.issue = issue;
|
|
})
|
|
.catch(() => {
|
|
// Need this because our jQuery very kindly disables buttons on ALL form submissions
|
|
$(this.$refs.submitButton).enable();
|
|
|
|
// Remove the issue
|
|
this.list.removeIssue(issue);
|
|
|
|
// Show error message
|
|
this.error = true;
|
|
});
|
|
|
|
this.cancel();
|
|
},
|
|
cancel() {
|
|
this.title = '';
|
|
this.$parent.showIssueForm = false;
|
|
}
|
|
},
|
|
mounted() {
|
|
this.$refs.input.focus();
|
|
},
|
|
});
|
|
})();
|