diff --git a/js/components/upload_input.js b/js/components/upload_input.js index 6a1db083..a7ef694e 100644 --- a/js/components/upload_input.js +++ b/js/components/upload_input.js @@ -46,9 +46,9 @@ export default { return { hasInitialData: !!this.initialData, attachment: this.initialData || null, - showErrors: this.initialErrors, changed: false, - uploadError: null, + uploadError: false, + sizeError: false, } }, @@ -63,15 +63,22 @@ export default { methods: { addAttachment: async function(e) { + this.clearErrors() + const file = e.target.files[0] + if (file.size > 64000000) { + this.sizeError = true + return + } + const response = await this.uploader.upload(file, this.objectName) + if (response.ok) { this.attachment = e.target.value this.$refs.attachmentFilename.value = file.name this.$refs.attachmentObjectName.value = this.objectName this.$refs.attachmentInput.disabled = true } else { - this.showErrors = true this.uploadError = true } @@ -91,8 +98,7 @@ export default { this.$refs.attachmentInput.value = null this.$refs.attachmentInput.disabled = false } - this.showErrors = false - this.uploadError = false + this.clearErrors() this.changed = true emitEvent('field-change', this, { @@ -101,6 +107,10 @@ export default { watch: this.watch, }) }, + clearErrors: function() { + this.uploadError = false + this.sizeError = false + } }, computed: { @@ -115,5 +125,8 @@ export default { hideInput: function() { return this.hasInitialData && !this.changed }, + showErrors: function() { + return (!this.changed && this.initialErrors) || this.uploadError || this.sizeError + } }, } diff --git a/templates/components/upload_input.html b/templates/components/upload_input.html index a56cb0bf..a261ea21 100644 --- a/templates/components/upload_input.html +++ b/templates/components/upload_input.html @@ -46,6 +46,9 @@ + {% for error, error_messages in field.errors.items() %} {{error_messages[0]}} {% endfor %} diff --git a/translations.yaml b/translations.yaml index 1e13a8f9..7937bb96 100644 --- a/translations.yaml +++ b/translations.yaml @@ -156,6 +156,7 @@ forms: length_error: Filename may be no longer than 100 characters. task_order: upload_error: There was an error uploading your file. Please try again. If you encounter repeated problems uploading this file, please contact CCPO. + size_error: The file you have selected is too large. Please choose a file no larger than 64MB. app_migration: both: 'Yes, migrating from both an on-premise data center and another cloud provider' cloud: 'Yes, migrating from another cloud provider'