diff --git a/js/components/forms/new_project.js b/js/components/forms/new_project.js index 634c49ff..3b48cbf6 100644 --- a/js/components/forms/new_project.js +++ b/js/components/forms/new_project.js @@ -32,6 +32,7 @@ export default { ).map(createEnvironment) return { + showError: false, environments, name, } @@ -41,6 +42,12 @@ export default { this.$root.$on('onEnvironmentAdded', this.addEnvironment) }, + updated: function() { + if (this.environmentsHaveNames()) { + this.showError = false + } + }, + methods: { addEnvironment: function (event) { this.environments.push(createEnvironment("")) @@ -50,6 +57,29 @@ export default { if (this.environments.length > 1) { this.environments.splice(index, 1) } + }, + + environmentsHaveNames: function () { + return this.environments.every((e) => e.name !== "") + }, + + validateAndOpenModal: function (modalName) { + const textInputs = this.$children.reduce((previous, newVal) => { + // display textInput error if it is not valid + if (!newVal.showValid) { + newVal.showError = true + } + + return newVal.showValid && previous + }, true) + + const isValid = textInputs && this.environmentsHaveNames() + + if (isValid) { + this.openModal(modalName) + } else { + this.showError = true + } } } } diff --git a/templates/fragments/edit_project_form.html b/templates/fragments/edit_project_form.html index 7fbba8b1..3c76a73d 100644 --- a/templates/fragments/edit_project_form.html +++ b/templates/fragments/edit_project_form.html @@ -47,6 +47,9 @@ {{ Alert(error, level="error") }} {% endfor %} {% endif %} +