diff --git a/frappe/public/css/bootstrap.css b/frappe/public/css/bootstrap.css index 183dd7fc4b..7e0fb64d27 100644 --- a/frappe/public/css/bootstrap.css +++ b/frappe/public/css/bootstrap.css @@ -2537,7 +2537,7 @@ output { color: #555; background-color: #fff; background-image: none; - border: 1px solid #ccc; + border: 1px solid #d1d8dd; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); @@ -3779,8 +3779,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn { line-height: 1; color: #555; text-align: center; - background-color: #eee; - border: 1px solid #ccc; + background-color: #f0f4f7; + border: 1px solid #d1d8dd; border-radius: 4px; } .input-group-addon.input-sm { diff --git a/frappe/public/css/desk.css b/frappe/public/css/desk.css index c787b51e31..460f712ae5 100644 --- a/frappe/public/css/desk.css +++ b/frappe/public/css/desk.css @@ -394,3 +394,21 @@ a.badge-hover:active .badge { .footnote-area { border-top: 1px solid #d1d8dd; } +.file-upload .input-group-addon { + color: #8d99a6; + font-size: 12px; +} +.file-upload .file-upload-or { + font-size: 12px; + margin: 0px 7px; +} +.file-upload .uploaded-filename, +.file-upload .web-link-wrapper, +.file-upload .input-upload, +.file-upload .input-link { + display: inline-block; + vertical-align: middle; +} +.file-upload .uploaded-filename-display { + max-width: 194px; +} diff --git a/frappe/public/css/slickgrid.css b/frappe/public/css/slickgrid.css index 23c46cad78..9ac5bbcd19 100644 --- a/frappe/public/css/slickgrid.css +++ b/frappe/public/css/slickgrid.css @@ -25,10 +25,13 @@ width: 100%; min-height: 20px; } -.slick-cell { +.slick-cell, +.slick-headerrow-column { font-size: 12px; - border-color: #d1d8dd !important; + border-color: transparent #d1d8dd #d1d8dd transparent !important; + border-style: solid; color: inherit !important; + margin-top: -1px; } .slick-header-column, .slick-header-columns { diff --git a/frappe/public/js/frappe/ui/upload.html b/frappe/public/js/frappe/ui/upload.html index 530d162ed7..98bf25d8c4 100644 --- a/frappe/public/js/frappe/ui/upload.html +++ b/frappe/public/js/frappe/ui/upload.html @@ -1,13 +1,21 @@
-
- -
-
- -
- +
+ + +
+ + +
diff --git a/frappe/public/js/frappe/upload.js b/frappe/public/js/frappe/upload.js index f81696ad6f..2a09c9a3d8 100644 --- a/frappe/public/js/frappe/upload.js +++ b/frappe/public/js/frappe/upload.js @@ -6,14 +6,41 @@ frappe.upload = { make: function(opts) { if(!opts.args) opts.args = {}; var $upload = $(frappe.render_template("upload", {opts:opts})).appendTo(opts.parent); + var $file_input = $upload.find(".input-upload-file"); - $upload.find(".attach-as-link").click(function() { - var as_link = $(this).prop("checked"); + // bind pseudo browse button + $upload.find(".btn-browse").on("click", + function() { $file_input.click(); }); - $upload.find(".input-link").toggleClass("hide", !as_link); - $upload.find(".input-upload").toggleClass("hide", as_link); + $file_input.on("change", function() { + if (this.files.length > 0) { + $upload.find(".web-link-wrapper").addClass("hidden"); + + var $uploaded_file_display = $(repl('
\ + \ + \ +
', {filename: this.files[0].name})) + .appendTo($upload.find(".uploaded-filename").removeClass("hidden").empty()); + + $uploaded_file_display.find(".uploaded-filename-display").on("click", function() { + $file_input.click(); + }); + + $uploaded_file_display.find(".uploaded-file-remove").on("click", function() { + $file_input.val(""); + $file_input.trigger("change"); + }); + + } else { + $upload.find(".uploaded-filename").addClass("hidden") + $upload.find(".web-link-wrapper").removeClass("hidden"); + } }); + if(!opts.btn) { opts.btn = $('