From 9564f39895c89df2bfcd41bd41f78cf022f5e2e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Thu, 6 Sep 2018 16:29:19 +0200 Subject: [PATCH] wip --- packages/@uppy/dashboard/src/index.js | 20 +++++++++++++++++++ packages/@uppy/transloadit-preset/src/form.js | 1 + .../@uppy/transloadit-preset/src/modal.js | 15 +++++++++++--- .../@uppy/transloadit-preset/src/upload.js | 4 +++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/packages/@uppy/dashboard/src/index.js b/packages/@uppy/dashboard/src/index.js index b819b7f3b..e6f1cc91e 100644 --- a/packages/@uppy/dashboard/src/index.js +++ b/packages/@uppy/dashboard/src/index.js @@ -31,6 +31,15 @@ const FOCUSABLE_ELEMENTS = [ const TAB_KEY = 9 const ESC_KEY = 27 +function createPromise () { + const o = {} + o.promise = new Promise((resolve, reject) => { + o.resolve = resolve + o.reject = reject + }) + return o +} + /** * Dashboard UI with previews, metadata editing, tabs for various services and more */ @@ -298,6 +307,7 @@ module.exports = class Dashboard extends Plugin { } openModal () { + const { promise, resolve } = createPromise() // save scroll position this.savedScrollPosition = window.scrollY // save active element, so we can restore focus when modal is closed @@ -313,12 +323,14 @@ module.exports = class Dashboard extends Plugin { isHidden: false }) this.el.removeEventListener('animationend', handler, false) + resolve() } this.el.addEventListener('animationend', handler, false) } else { this.setPluginState({ isHidden: false }) + resolve() } if (this.opts.browserBackButtonClose) { @@ -330,6 +342,8 @@ module.exports = class Dashboard extends Plugin { // this.rerender(this.uppy.getState()) this.setFocusToBrowse() + + return promise } closeModal (opts = {}) { @@ -337,6 +351,8 @@ module.exports = class Dashboard extends Plugin { manualClose = true // Whether the modal is being closed by the user (`true`) or by other means (e.g. browser back button) } = opts + const { promise, resolve } = createPromise() + if (this.opts.disablePageScrollWhenModalOpen) { document.body.classList.remove('uppy-Dashboard-isFixed') } @@ -351,12 +367,14 @@ module.exports = class Dashboard extends Plugin { isClosing: false }) this.el.removeEventListener('animationend', handler, false) + resolve() } this.el.addEventListener('animationend', handler, false) } else { this.setPluginState({ isHidden: true }) + resolve() } // handle ESC and TAB keys in modal dialog @@ -373,6 +391,8 @@ module.exports = class Dashboard extends Plugin { } } } + + return promise } isModalOpen () { diff --git a/packages/@uppy/transloadit-preset/src/form.js b/packages/@uppy/transloadit-preset/src/form.js index f19782aa1..0213ff832 100644 --- a/packages/@uppy/transloadit-preset/src/form.js +++ b/packages/@uppy/transloadit-preset/src/form.js @@ -44,6 +44,7 @@ class TransloaditFormResult extends Uppy.Plugin { function form (target, opts) { const uppy = Uppy({ + allowMultipleUploads: false, restrictions: opts.restrictions }) addTransloaditPlugin(uppy, opts) diff --git a/packages/@uppy/transloadit-preset/src/modal.js b/packages/@uppy/transloadit-preset/src/modal.js index 6457d9d4c..8cf790015 100644 --- a/packages/@uppy/transloadit-preset/src/modal.js +++ b/packages/@uppy/transloadit-preset/src/modal.js @@ -3,12 +3,21 @@ const Dashboard = require('@uppy/dashboard') const addTransloaditPlugin = require('./addTransloaditPlugin') function modal (target, opts) { - const uppy = Uppy({}) + const uppy = Uppy({ + allowMultipleUploads: false + }) addTransloaditPlugin(uppy, opts) + uppy.use(Dashboard, { + target, + autoClose: true + }) return new Promise((resolve, reject) => { - }).then(() => { - return uppy.upload() + uppy.on('complete', resolve) + uppy.getPlugin('Dashboard').openModal() + }).then((result) => { + return uppy.getPlugin('Dashboard').closeModal() + .then(() => result) }) } diff --git a/packages/@uppy/transloadit-preset/src/upload.js b/packages/@uppy/transloadit-preset/src/upload.js index f4e506cb8..22d22aa0d 100644 --- a/packages/@uppy/transloadit-preset/src/upload.js +++ b/packages/@uppy/transloadit-preset/src/upload.js @@ -2,7 +2,9 @@ const Uppy = require('@uppy/core') const addTransloaditPlugin = require('./addTransloaditPlugin') function upload (files, opts) { - const uppy = Uppy({}) + const uppy = Uppy({ + allowMultipleUploads: false + }) addTransloaditPlugin(uppy, opts)