From baa26b670bf58e49ae4754f17915f655902af0d1 Mon Sep 17 00:00:00 2001 From: jgould Date: Sun, 24 Apr 2016 21:56:50 -0400 Subject: [PATCH] multiple file input --- src/ui/form_builder.js | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/ui/form_builder.js b/src/ui/form_builder.js index 3b09e6c..7acbcc1 100644 --- a/src/ui/form_builder.js +++ b/src/ui/form_builder.js @@ -47,6 +47,7 @@ morpheus.FormBuilder = function(options) { }).on('drop', function(e) { var node = $(e.originalEvent.srcElement).parent().parent().prev(); if (node.is('select') && node.hasClass('file-input')) { + var isMultiple = node.data('multiple'); $(e.originalEvent.srcElement).parent().css('border', ''); var name = node.attr('name'); name = name.substring(0, name.length - '_picker'.length); @@ -55,7 +56,7 @@ morpheus.FormBuilder = function(options) { e.preventDefault(); e.stopPropagation(); var files = e.originalEvent.dataTransfer.files; - that.setValue(name, files[0]); + that.setValue(name, isMultiple ? files : files[0]); that.trigger('change', { name : name, value : files[0] @@ -539,9 +540,13 @@ morpheus.FormBuilder.prototype = { } else if ('custom' === type) { html.push(value); } else if ('file' === type) { + var isMultiple = field.multiple; html - .push(''); html.push(''); } html.push(''); + + '_file"' + (isMultiple ? ' multiple' : '') + '>'); // browse button clicked // select change that.$form - .on('change', '[name=' + name + '_picker]', + .on( + 'change', + '[name=' + name + '_picker]', function(evt) { var $this = $(this); var val = $this.val(); @@ -603,15 +613,20 @@ morpheus.FormBuilder.prototype = { var showTextInput = val === 'URL'; if ('Dropbox' === val) { var options = { - success : function(files) { - that.setValue(name, files[0].link); + success : function(results) { + var val = !isMultiple ? results[0].link + : results.map(function( + result) { + return result.link; + }); + that.setValue(name, val); that.trigger('change', { name : name, - value : files[0].link + value : val }); }, linkType : 'direct', - multiselect : false + multiselect : isMultiple }; Dropbox.choose(options); } else if ('My Computer' === val) { @@ -636,7 +651,7 @@ morpheus.FormBuilder.prototype = { // browse file selected that.$form.on('change', '[name=' + name + '_file]', function(evt) { var files = evt.target.files; // FileList object - that.setValue(name, files[0]); + that.setValue(name, isMultiple ? files : files[0]); that.trigger('change', { name : name, value : files[0] -- GitLab