diff --git a/app/assets/javascripts/repositories/forms/repository_item_edit.js b/app/assets/javascripts/repositories/forms/repository_item_edit.js
index b65dcaffe..9eb8eef06 100644
--- a/app/assets/javascripts/repositories/forms/repository_item_edit.js
+++ b/app/assets/javascripts/repositories/forms/repository_item_edit.js
@@ -185,21 +185,22 @@
*/
function changeToInputFileField(object, name, value, id) {
var fileName = (value.file_file_name) ? value.file_file_name : "";
- var buttonLabel = "Choose File";
+ var buttonLabel = I18n.t('general.file.choose');
var html = "
";
+ html += "";
return html;
}
@@ -306,7 +307,8 @@
function initFileHandler($inputField) {
$inputField.on('change', function() {
var input = $(this);
- var $label = $($(this).parent().find('.file-name-label')[0]);
+ var $label = $($(this).closest('.repository-input-file-field')
+ .find('.file-name-label')[0]);
var file = this.files[0];
if (file) {
$label.text(file.name);
diff --git a/app/assets/javascripts/repositories/repository_datatable.js.erb b/app/assets/javascripts/repositories/repository_datatable.js.erb
index 218ee93d9..c01caf36e 100644
--- a/app/assets/javascripts/repositories/repository_datatable.js.erb
+++ b/app/assets/javascripts/repositories/repository_datatable.js.erb
@@ -812,9 +812,18 @@ var RepositoryDatatable = (function(global) {
var input = $(selectedRecord).find('input[name=' + key + ']');
if (input) {
var message = Array.isArray(val.data) ? val.data[0] : val.data;
- input.closest('.form-group').addClass('has-error');
- input.parent().append("" +
- message + '
');
+ // handle custom input field
+ if(input.attr('type') === 'file') {
+ var container = input.closest('.repository-input-file-field');
+ $(container.find('.form-group')[0]).addClass('has-error');
+ container.addClass('has-error');
+ container.append("" +
+ message + '
');
+ } else {
+ input.closest('.form-group').addClass('has-error');
+ input.parent().append("" +
+ message + '
');
+ }
}
});
});
@@ -1086,6 +1095,9 @@ var RepositoryDatatable = (function(global) {
$(input).attr('remove', true);
// clear fileName
$(parent.find('.file-name-label')[0]).text('');
+ $(parent.find('.form-group')[0]).removeClass('has-error');
+ parent.removeClass('has-error');
+ $(parent.find('.help-block')[0]).remove();
}
// Takes an object and creates custom html element
diff --git a/app/assets/stylesheets/themes/repositories.scss b/app/assets/stylesheets/themes/repositories.scss
index 6a3be1072..848231401 100644
--- a/app/assets/stylesheets/themes/repositories.scss
+++ b/app/assets/stylesheets/themes/repositories.scss
@@ -40,10 +40,39 @@
}
.repository-input-file-field {
- border: 1px solid $color-alto;
- border-radius: 5px;
- display: inline-flex;
- padding: 2px;
+ .form-group {
+ align-items: baseline;
+ border: 1px solid $color-alto;
+ border-radius: 5px;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ }
+
+ .form-group.has-error {
+ border-color: $state-danger-border;
+ }
+
+ button {
+ height: 22px;
+ margin: 5px;
+ padding: 2px 10px;
+ }
+
+ i.fas {
+ margin-top: 10px;
+ padding-right: 5px;
+
+ &:hover {
+ cursor: pointer;
+ }
+ }
+
+ .file-name-label {
+ padding-left: 5px;
+ padding-right: 5px;
+ margin-bottom: 0px;
+ }
a {
color: $brand-danger;
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 4a22f9ecd..66b1f9505 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1914,6 +1914,7 @@ en:
private: "private"
search: "Search"
file:
+ choose: "Choose File"
processing: "File is still being processed and cannot be downloaded yet."
total_size: "You can upload max %{size} MB of files at one time. Please remove one or more files and try to submit again."
size_exceeded: "File size must be less than %{file_size} MB."