59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
|
(() => {
|
||
|
window.gl = window.gl || {};
|
||
|
|
||
|
gl.issueBoards.BoardNewIssue = Vue.extend({
|
||
|
props: {
|
||
|
list: Object,
|
||
|
showIssueForm: Boolean
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
title: '',
|
||
|
error: false
|
||
|
};
|
||
|
},
|
||
|
watch: {
|
||
|
showIssueForm () {
|
||
|
this.$els.input.focus();
|
||
|
}
|
||
|
},
|
||
|
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
|
||
|
});
|
||
|
|
||
|
this.list.newIssue(issue)
|
||
|
.then((data) => {
|
||
|
// Need this because our jQuery very kindly disables buttons on ALL form submissions
|
||
|
$(this.$els.submitButton).enable();
|
||
|
})
|
||
|
.catch(() => {
|
||
|
// Need this because our jQuery very kindly disables buttons on ALL form submissions
|
||
|
$(this.$els.submitButton).enable();
|
||
|
|
||
|
// Remove the issue
|
||
|
this.list.removeIssue(issue);
|
||
|
|
||
|
// Show error message
|
||
|
this.error = true;
|
||
|
this.showIssueForm = true;
|
||
|
});
|
||
|
|
||
|
this.cancel();
|
||
|
},
|
||
|
cancel() {
|
||
|
this.showIssueForm = false;
|
||
|
this.title = '';
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
})();
|