Merge pull request #371 from dod-ccpo/project-submit-enter

Handle new-project submission with Enter key
This commit is contained in:
andrewdds 2018-10-05 08:05:21 -04:00 committed by GitHub
commit 1793c71bca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 7 deletions

View File

@ -16,7 +16,8 @@ export default {
initialData: { initialData: {
type: Object, type: Object,
default: () => ({}) default: () => ({})
} },
modalName: String
}, },
data: function () { data: function () {
@ -40,6 +41,7 @@ export default {
errors: [], errors: [],
environments, environments,
name, name,
readyToSubmit: false
} }
}, },
@ -85,7 +87,19 @@ export default {
return names.every((n, index) => names.indexOf(n) === index) return names.every((n, index) => names.indexOf(n) === index)
}, },
validateAndOpenModal: function (modalName) { handleSubmit: function (event) {
if (!this.readyToSubmit) {
event.preventDefault()
this.validateAndOpenModal()
}
},
handleCancelSubmit: function () {
this.readyToSubmit = false
this.closeModal(this.modalName)
},
validateAndOpenModal: function () {
let isValid = this.$children.reduce((previous, newVal) => { let isValid = this.$children.reduce((previous, newVal) => {
// display textInput error if it is not valid // display textInput error if it is not valid
if (!newVal.showValid) { if (!newVal.showValid) {
@ -99,7 +113,8 @@ export default {
isValid = this.errors.length == 0 && isValid isValid = this.errors.length == 0 && isValid
if (isValid) { if (isValid) {
this.openModal(modalName) this.readyToSubmit = true
this.openModal(this.modalName)
} }
} }
} }

View File

@ -3,13 +3,13 @@
{% from "components/text_input.html" import TextInput %} {% from "components/text_input.html" import TextInput %}
{% from "components/alert.html" import Alert %} {% from "components/alert.html" import Alert %}
<new-project inline-template v-bind:initial-data='{{ form.data|tojson }}'> <new-project inline-template v-bind:initial-data='{{ form.data|tojson }}' modal-name='{{ modalName }}'>
{% set new_project = project is not defined %} {% set new_project = project is not defined %}
{% set form_action = url_for('workspaces.create_project', workspace_id=workspace.id) if new_project else url_for('workspaces.edit_project', workspace_id=workspace.id, project_id=project.id) %} {% set form_action = url_for('workspaces.create_project', workspace_id=workspace.id) if new_project else url_for('workspaces.edit_project', workspace_id=workspace.id, project_id=project.id) %}
{% set action_text = 'Create' if new_project else 'Update' %} {% set action_text = 'Create' if new_project else 'Update' %}
{% set title_text = 'Add a new project' if new_project else 'Edit {} project'.format(project.name) %} {% set title_text = 'Add a new project' if new_project else 'Edit {} project'.format(project.name) %}
<form method="POST" action="{{ form_action }}" > <form method="POST" action="{{ form_action }}" v-on:submit="handleSubmit">
{% call Modal(name=modalName, dismissable=False) %} {% call Modal(name=modalName, dismissable=False) %}
<h1>{{ action_text }} project !{ name }</h1> <h1>{{ action_text }} project !{ name }</h1>
@ -23,7 +23,7 @@
<div class='action-group'> <div class='action-group'>
<button type='submit' class='action-group__action usa-button' tabindex='0'>{{ action_text }} Project</button> <button type='submit' class='action-group__action usa-button' tabindex='0'>{{ action_text }} Project</button>
<button type='button' v-on:click="closeModal('{{ modalName }}')" class='icon-link action-group__action' tabindex='0'>Cancel</button> <button type='button' v-on:click="handleCancelSubmit" class='icon-link action-group__action' tabindex='0'>Cancel</button>
</div> </div>
{% endcall %} {% endcall %}
@ -75,7 +75,7 @@
</div> </div>
<div class="action-group"> <div class="action-group">
<button v-on:click="validateAndOpenModal('{{ modalName }}')" class="usa-button usa-button-primary" tabindex="0" type="button">{{ action_text }} Project</button> <button class="usa-button usa-button-primary" tabindex="0" type="submit">{{ action_text }} Project</button>
</div> </div>
</div> </div>