diff --git a/app/assets/javascripts/environments/components/edit_environment.vue b/app/assets/javascripts/environments/components/edit_environment.vue index 80355708311..1cd960d7cd6 100644 --- a/app/assets/javascripts/environments/components/edit_environment.vue +++ b/app/assets/javascripts/environments/components/edit_environment.vue @@ -21,6 +21,7 @@ export default { name: this.environment.name, externalUrl: this.environment.external_url, }, + loading: false, }; }, methods: { @@ -28,6 +29,7 @@ export default { this.formEnvironment = environment; }, onSubmit() { + this.loading = true; axios .put(this.updateEnvironmentPath, { id: this.environment.id, @@ -38,6 +40,7 @@ export default { .catch((error) => { const message = error.response.data.message[0]; createFlash({ message }); + this.loading = false; }); }, }, @@ -48,6 +51,7 @@ export default { :cancel-path="projectEnvironmentsPath" :environment="formEnvironment" :title="__('Edit environment')" + :loading="loading" @change="onChange" @submit="onSubmit" /> diff --git a/app/assets/javascripts/environments/components/environment_form.vue b/app/assets/javascripts/environments/components/environment_form.vue index 636e263b990..6db8fe24e72 100644 --- a/app/assets/javascripts/environments/components/environment_form.vue +++ b/app/assets/javascripts/environments/components/environment_form.vue @@ -26,6 +26,11 @@ export default { required: true, type: String, }, + loading: { + required: false, + type: Boolean, + default: false, + }, }, i18n: { header: __('Environments'), @@ -42,21 +47,26 @@ export default { helpPagePath: helpPagePath('ci/environments/index.md'), data() { return { - errors: { + visited: { name: null, url: null, }, }; }, + computed: { + valid() { + return { + name: this.visited.name && this.environment.name !== '', + url: this.visited.url && isAbsolute(this.environment.externalUrl), + }; + }, + }, methods: { onChange(env) { this.$emit('change', env); }, - validateUrl() { - this.errors.url = isAbsolute(this.environment.externalUrl); - }, - validateName() { - this.errors.name = this.environment.name !== ''; + visit(field) { + this.visited[field] = true; }, }, }; @@ -89,40 +99,45 @@ export default {
- {{ - $options.i18n.save - }} + {{ $options.i18n.save }} {{ $options.i18n.cancel }}
diff --git a/app/assets/javascripts/environments/components/new_environment.vue b/app/assets/javascripts/environments/components/new_environment.vue index 6899ad63921..14da2668417 100644 --- a/app/assets/javascripts/environments/components/new_environment.vue +++ b/app/assets/javascripts/environments/components/new_environment.vue @@ -15,6 +15,7 @@ export default { name: '', externalUrl: '', }, + loading: false, }; }, methods: { @@ -22,6 +23,7 @@ export default { this.environment = env; }, onSubmit() { + this.loading = true; axios .post(this.projectEnvironmentsPath, { name: this.environment.name, @@ -31,6 +33,7 @@ export default { .catch((error) => { const message = error.response.data.message[0]; createFlash({ message }); + this.loading = false; }); }, }, @@ -41,6 +44,7 @@ export default { :cancel-path="projectEnvironmentsPath" :environment="environment" :title="__('New environment')" + :loading="loading" @change="onChange($event)" @submit="onSubmit" /> diff --git a/app/assets/javascripts/security_configuration/components/feature_card.vue b/app/assets/javascripts/security_configuration/components/feature_card.vue index 6ca96504982..0ecfdf420db 100644 --- a/app/assets/javascripts/security_configuration/components/feature_card.vue +++ b/app/assets/javascripts/security_configuration/components/feature_card.vue @@ -83,7 +83,11 @@ export default {

{{ feature.name }}

-
+