From 89b98f403e577f9ea8b35302a7ebda4c0eebce93 Mon Sep 17 00:00:00 2001 From: Chris Grigg Date: Fri, 15 Mar 2024 11:25:21 -0400 Subject: [PATCH 01/10] Add autoOpenView option that defaults to meta --- packages/@uppy/dashboard/src/Dashboard.jsx | 4 +++- packages/@uppy/dashboard/types/index.d.ts | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.jsx b/packages/@uppy/dashboard/src/Dashboard.jsx index a3fe0cd4cb..b0f757d744 100644 --- a/packages/@uppy/dashboard/src/Dashboard.jsx +++ b/packages/@uppy/dashboard/src/Dashboard.jsx @@ -89,6 +89,7 @@ export default class Dashboard extends UIPlugin { showNativeVideoCameraButton: false, theme: 'light', autoOpenFileEditor: false, + autoOpenView: 'meta', disabled: false, disableLocalFiles: false, } @@ -752,8 +753,9 @@ export default class Dashboard extends UIPlugin { const {metaFields} = this.getPluginState() const isMetaEditorEnabled = metaFields && metaFields.length > 0 const isFileEditorEnabled = this.canEditFile(firstFile) + const defaultView = this.opts.autoOpenView === 'meta' ? 'meta' : 'editor'; - if (isMetaEditorEnabled) { + if (isMetaEditorEnabled && defaultView === 'meta') { this.toggleFileCard(true, firstFile.id) } else if (isFileEditorEnabled) { this.openFileEditor(firstFile) diff --git a/packages/@uppy/dashboard/types/index.d.ts b/packages/@uppy/dashboard/types/index.d.ts index ef4a94ed94..b32f97168a 100644 --- a/packages/@uppy/dashboard/types/index.d.ts +++ b/packages/@uppy/dashboard/types/index.d.ts @@ -66,6 +66,7 @@ export interface DashboardOptions extends Options { trigger?: string width?: string | number autoOpenFileEditor?: boolean + autoOpenView?: 'meta' | 'editor' disabled?: boolean disableLocalFiles?: boolean onRequestCloseModal?: () => void From b4748679dc728e28ff5ff63126e59d59135134dd Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Mon, 18 Mar 2024 18:41:25 +0400 Subject: [PATCH 02/10] - deprecate `autoOpenFileEditor`, use `autoOpen` instead --- packages/@uppy/dashboard/src/Dashboard.jsx | 20 ++++++++++++-------- packages/@uppy/dashboard/types/index.d.ts | 3 +-- packages/@uppy/react/src/DashboardModal.js | 8 ++++---- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.jsx b/packages/@uppy/dashboard/src/Dashboard.jsx index b0f757d744..0e2ba43d66 100644 --- a/packages/@uppy/dashboard/src/Dashboard.jsx +++ b/packages/@uppy/dashboard/src/Dashboard.jsx @@ -88,14 +88,19 @@ export default class Dashboard extends UIPlugin { showNativePhotoCameraButton: false, showNativeVideoCameraButton: false, theme: 'light', - autoOpenFileEditor: false, - autoOpenView: 'meta', + autoOpen: false, disabled: false, disableLocalFiles: false, } + // support for the legacy `autoOpenFileEditor` option, + // we can remove this code when we update the Uppy major version + let {autoOpen} = opts + if (opts.autoOpen === undefined) { + autoOpen = opts.autoOpenFileEditor ? "fileEditor" : false + } // merge default options with the ones set by user - this.opts = { ...defaultOptions, ...opts } + this.opts = { ...defaultOptions, ...opts, autoOpen } this.i18nInit() @@ -753,11 +758,10 @@ export default class Dashboard extends UIPlugin { const {metaFields} = this.getPluginState() const isMetaEditorEnabled = metaFields && metaFields.length > 0 const isFileEditorEnabled = this.canEditFile(firstFile) - const defaultView = this.opts.autoOpenView === 'meta' ? 'meta' : 'editor'; - if (isMetaEditorEnabled && defaultView === 'meta') { + if (isMetaEditorEnabled && this.opts.autoOpen === 'metaEditor') { this.toggleFileCard(true, firstFile.id) - } else if (isFileEditorEnabled) { + } else if (isFileEditorEnabled && this.opts.autoOpen === 'fileEditor') { this.openFileEditor(firstFile) } } @@ -794,7 +798,7 @@ export default class Dashboard extends UIPlugin { this.el.addEventListener('keydown', this.handleKeyDownInInline) } - if (this.opts.autoOpenFileEditor) { + if (this.opts.autoOpen) { this.uppy.on('files-added', this.#openFileEditorWhenFilesAdded) } } @@ -825,7 +829,7 @@ export default class Dashboard extends UIPlugin { this.el.removeEventListener('keydown', this.handleKeyDownInInline) } - if (this.opts.autoOpenFileEditor) { + if (this.opts.autoOpen) { this.uppy.off('files-added', this.#openFileEditorWhenFilesAdded) } } diff --git a/packages/@uppy/dashboard/types/index.d.ts b/packages/@uppy/dashboard/types/index.d.ts index b32f97168a..8082cbcb58 100644 --- a/packages/@uppy/dashboard/types/index.d.ts +++ b/packages/@uppy/dashboard/types/index.d.ts @@ -65,8 +65,7 @@ export interface DashboardOptions extends Options { theme?: 'auto' | 'dark' | 'light' trigger?: string width?: string | number - autoOpenFileEditor?: boolean - autoOpenView?: 'meta' | 'editor' + autoOpen?: 'metaEditor' | 'fileEditor' | false disabled?: boolean disableLocalFiles?: boolean onRequestCloseModal?: () => void diff --git a/packages/@uppy/react/src/DashboardModal.js b/packages/@uppy/react/src/DashboardModal.js index 24c6482fe9..6b78e3115d 100644 --- a/packages/@uppy/react/src/DashboardModal.js +++ b/packages/@uppy/react/src/DashboardModal.js @@ -53,7 +53,7 @@ class DashboardModal extends Component { note, metaFields, // eslint-disable-line no-shadow proudlyDisplayPoweredByUppy, - autoOpenFileEditor, + autoOpen, animateOpenClose, browserBackButtonClose, closeAfterFinish, @@ -90,7 +90,7 @@ class DashboardModal extends Component { note, metaFields, proudlyDisplayPoweredByUppy, - autoOpenFileEditor, + autoOpen, animateOpenClose, browserBackButtonClose, closeAfterFinish, @@ -161,7 +161,7 @@ DashboardModal.propTypes = { note: PropTypes.string, metaFields, proudlyDisplayPoweredByUppy: PropTypes.bool, - autoOpenFileEditor: PropTypes.bool, + autoOpen: PropTypes.oneOf(['fileEditor', 'metaEditor', false]), animateOpenClose: PropTypes.bool, browserBackButtonClose: PropTypes.bool, closeAfterFinish: PropTypes.bool, @@ -217,7 +217,7 @@ DashboardModal.defaultProps = { showRemoveButtonAfterComplete: false, browserBackButtonClose: false, theme: 'light', - autoOpenFileEditor: false, + autoOpen: false, disabled: false, disableLocalFiles: false, From 7a4cf47fc83321d3c564824cf21c6097a824e1a7 Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Mon, 18 Mar 2024 19:17:36 +0400 Subject: [PATCH 03/10] tests - account for the case where `opts` are undefined --- packages/@uppy/dashboard/src/Dashboard.jsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.jsx b/packages/@uppy/dashboard/src/Dashboard.jsx index 0e2ba43d66..2df4038d4e 100644 --- a/packages/@uppy/dashboard/src/Dashboard.jsx +++ b/packages/@uppy/dashboard/src/Dashboard.jsx @@ -95,9 +95,13 @@ export default class Dashboard extends UIPlugin { // support for the legacy `autoOpenFileEditor` option, // we can remove this code when we update the Uppy major version - let {autoOpen} = opts - if (opts.autoOpen === undefined) { + let autoOpen + if (!opts) { + autoOpen = false + } else if (opts.autoOpen === undefined) { autoOpen = opts.autoOpenFileEditor ? "fileEditor" : false + } else { + autoOpen = opts.autoOpen } // merge default options with the ones set by user this.opts = { ...defaultOptions, ...opts, autoOpen } From 2a2878240fb995329d02d4829df040792fabd213 Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Tue, 19 Mar 2024 16:36:30 +0400 Subject: [PATCH 04/10] Update packages/@uppy/dashboard/src/Dashboard.jsx Co-authored-by: Merlijn Vos --- packages/@uppy/dashboard/src/Dashboard.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.jsx b/packages/@uppy/dashboard/src/Dashboard.jsx index 2df4038d4e..52aaf772b5 100644 --- a/packages/@uppy/dashboard/src/Dashboard.jsx +++ b/packages/@uppy/dashboard/src/Dashboard.jsx @@ -94,7 +94,7 @@ export default class Dashboard extends UIPlugin { } // support for the legacy `autoOpenFileEditor` option, - // we can remove this code when we update the Uppy major version + // TODO: we can remove this code when we update the Uppy major version let autoOpen if (!opts) { autoOpen = false From 900e0188ccdaacd0d8cf497c4fa133685cdb4c1b Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Tue, 19 Mar 2024 18:35:39 +0400 Subject: [PATCH 05/10] types - properly deprecate option `autoOpenFileEditor` --- packages/@uppy/dashboard/types/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/@uppy/dashboard/types/index.d.ts b/packages/@uppy/dashboard/types/index.d.ts index 8082cbcb58..2b2b7837be 100644 --- a/packages/@uppy/dashboard/types/index.d.ts +++ b/packages/@uppy/dashboard/types/index.d.ts @@ -65,6 +65,8 @@ export interface DashboardOptions extends Options { theme?: 'auto' | 'dark' | 'light' trigger?: string width?: string | number + /** @deprecated use option autoOpen instead */ + autoOpenFileEditor?: boolean autoOpen?: 'metaEditor' | 'fileEditor' | false disabled?: boolean disableLocalFiles?: boolean From dfe388baca376777b2f559d3bb6c4ec8602b398e Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Wed, 20 Mar 2024 16:30:05 +0400 Subject: [PATCH 06/10] everywhere - rename "fileEditor" => "imageEditor" --- packages/@uppy/dashboard/src/Dashboard.jsx | 6 +++--- packages/@uppy/dashboard/types/index.d.ts | 2 +- packages/@uppy/react/src/DashboardModal.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.jsx b/packages/@uppy/dashboard/src/Dashboard.jsx index 52aaf772b5..e137dff6d9 100644 --- a/packages/@uppy/dashboard/src/Dashboard.jsx +++ b/packages/@uppy/dashboard/src/Dashboard.jsx @@ -99,7 +99,7 @@ export default class Dashboard extends UIPlugin { if (!opts) { autoOpen = false } else if (opts.autoOpen === undefined) { - autoOpen = opts.autoOpenFileEditor ? "fileEditor" : false + autoOpen = opts.autoOpenFileEditor ? "imageEditor" : false } else { autoOpen = opts.autoOpen } @@ -761,11 +761,11 @@ export default class Dashboard extends UIPlugin { const {metaFields} = this.getPluginState() const isMetaEditorEnabled = metaFields && metaFields.length > 0 - const isFileEditorEnabled = this.canEditFile(firstFile) + const isImageEditorEnabled = this.canEditFile(firstFile) if (isMetaEditorEnabled && this.opts.autoOpen === 'metaEditor') { this.toggleFileCard(true, firstFile.id) - } else if (isFileEditorEnabled && this.opts.autoOpen === 'fileEditor') { + } else if (isImageEditorEnabled && this.opts.autoOpen === 'imageEditor') { this.openFileEditor(firstFile) } } diff --git a/packages/@uppy/dashboard/types/index.d.ts b/packages/@uppy/dashboard/types/index.d.ts index 2b2b7837be..2ac23393b1 100644 --- a/packages/@uppy/dashboard/types/index.d.ts +++ b/packages/@uppy/dashboard/types/index.d.ts @@ -67,7 +67,7 @@ export interface DashboardOptions extends Options { width?: string | number /** @deprecated use option autoOpen instead */ autoOpenFileEditor?: boolean - autoOpen?: 'metaEditor' | 'fileEditor' | false + autoOpen?: 'metaEditor' | 'imageEditor' | false disabled?: boolean disableLocalFiles?: boolean onRequestCloseModal?: () => void diff --git a/packages/@uppy/react/src/DashboardModal.js b/packages/@uppy/react/src/DashboardModal.js index 6b78e3115d..347003fcc9 100644 --- a/packages/@uppy/react/src/DashboardModal.js +++ b/packages/@uppy/react/src/DashboardModal.js @@ -161,7 +161,7 @@ DashboardModal.propTypes = { note: PropTypes.string, metaFields, proudlyDisplayPoweredByUppy: PropTypes.bool, - autoOpen: PropTypes.oneOf(['fileEditor', 'metaEditor', false]), + autoOpen: PropTypes.oneOf(['imageEditor', 'metaEditor', false]), animateOpenClose: PropTypes.bool, browserBackButtonClose: PropTypes.bool, closeAfterFinish: PropTypes.bool, From a60ba7d70a7a9cafd5de92e09e57ae2311c51662 Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Wed, 20 Mar 2024 18:40:02 +0400 Subject: [PATCH 07/10] - refactor `props` passing --- packages/@uppy/react/src/DashboardModal.js | 84 ++-------------------- 1 file changed, 5 insertions(+), 79 deletions(-) diff --git a/packages/@uppy/react/src/DashboardModal.js b/packages/@uppy/react/src/DashboardModal.js index 347003fcc9..b1f42cc204 100644 --- a/packages/@uppy/react/src/DashboardModal.js +++ b/packages/@uppy/react/src/DashboardModal.js @@ -37,90 +37,15 @@ class DashboardModal extends Component { } installPlugin () { - const { - id = 'react:DashboardModal', - uppy, - target, - open, - onRequestClose, - closeModalOnClickOutside, - disablePageScrollWhenModalOpen, - inline, - plugins, // eslint-disable-line no-shadow - width, - height, - showProgressDetails, - note, - metaFields, // eslint-disable-line no-shadow - proudlyDisplayPoweredByUppy, - autoOpen, - animateOpenClose, - browserBackButtonClose, - closeAfterFinish, - disableStatusBar, - disableInformer, - disableThumbnailGenerator, - disableLocalFiles, - disabled, - hideCancelButton, - hidePauseResumeButton, - hideProgressAfterFinish, - hideRetryButton, - hideUploadButton, - showLinkToFileUploadResult, - showRemoveButtonAfterComplete, - showSelectedFiles, - waitForThumbnailsBeforeUpload, - fileManagerSelectionType, - theme, - thumbnailType, - thumbnailWidth, - locale, // eslint-disable-line no-shadow - } = this.props + const { id='react:DashboardModal', target=this.container, open, onRequestClose, uppy } = this.props const options = { + ...this.props, id, target, - closeModalOnClickOutside, - disablePageScrollWhenModalOpen, - inline, - plugins, - width, - height, - showProgressDetails, - note, - metaFields, - proudlyDisplayPoweredByUppy, - autoOpen, - animateOpenClose, - browserBackButtonClose, - closeAfterFinish, - disableStatusBar, - disableInformer, - disableThumbnailGenerator, - disableLocalFiles, - disabled, - hideCancelButton, - hidePauseResumeButton, - hideProgressAfterFinish, - hideRetryButton, - hideUploadButton, - showLinkToFileUploadResult, - showRemoveButtonAfterComplete, - showSelectedFiles, - waitForThumbnailsBeforeUpload, - fileManagerSelectionType, - theme, - thumbnailType, - thumbnailWidth, - locale, onRequestCloseModal: onRequestClose, } - - if (!options.target) { - options.target = this.container - } - delete options.uppy + uppy.use(DashboardPlugin, options) this.plugin = uppy.getPlugin(options.id) @@ -146,6 +71,7 @@ class DashboardModal extends Component { } } +/* eslint-disable react/no-unused-prop-types */ DashboardModal.propTypes = { uppy: uppyPropType.isRequired, target: typeof window !== 'undefined' ? PropTypes.instanceOf(window.HTMLElement) : PropTypes.any, @@ -186,7 +112,7 @@ DashboardModal.propTypes = { thumbnailWidth: PropTypes.number, locale, } -// Must be kept in sync with @uppy/dashboard/src/Dashboard.jsx. +// Must be kept in sync with @uppy/dashboard/src/Dashboard.tsx. DashboardModal.defaultProps = { metaFields: [], plugins: [], From 5b3b19a3137ff97bfb84071873869cafd7d3afdc Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Wed, 20 Mar 2024 18:48:46 +0400 Subject: [PATCH 08/10] types - copypaste types --- packages/@uppy/dashboard/src/Dashboard.tsx | 3 ++- packages/@uppy/dashboard/types/index.d.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.tsx b/packages/@uppy/dashboard/src/Dashboard.tsx index ce01cee775..c1c90b666c 100644 --- a/packages/@uppy/dashboard/src/Dashboard.tsx +++ b/packages/@uppy/dashboard/src/Dashboard.tsx @@ -150,7 +150,8 @@ interface DashboardOptions theme?: 'auto' | 'dark' | 'light' trigger?: string width?: string | number - autoOpen?: boolean | 'imageEditor' | 'metaEditor' + autoOpen?: 'metaEditor' | 'imageEditor' | false + /** @deprecated use option autoOpen instead */ autoOpenFileEditor?: boolean disabled?: boolean disableLocalFiles?: boolean diff --git a/packages/@uppy/dashboard/types/index.d.ts b/packages/@uppy/dashboard/types/index.d.ts index 2ac23393b1..55998a3e86 100644 --- a/packages/@uppy/dashboard/types/index.d.ts +++ b/packages/@uppy/dashboard/types/index.d.ts @@ -65,9 +65,9 @@ export interface DashboardOptions extends Options { theme?: 'auto' | 'dark' | 'light' trigger?: string width?: string | number + autoOpen?: 'metaEditor' | 'imageEditor' | false /** @deprecated use option autoOpen instead */ autoOpenFileEditor?: boolean - autoOpen?: 'metaEditor' | 'imageEditor' | false disabled?: boolean disableLocalFiles?: boolean onRequestCloseModal?: () => void From 3c1c9b5ae30e159cf8bcc07a97b8fb0448e39fe1 Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Mon, 25 Mar 2024 21:14:52 +0400 Subject: [PATCH 09/10] Dashboard.tsx - autoOpen: `false` => `null` --- packages/@uppy/dashboard/src/Dashboard.tsx | 4 ++-- packages/@uppy/dashboard/types/index.d.ts | 2 +- packages/@uppy/react/src/DashboardModal.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.tsx b/packages/@uppy/dashboard/src/Dashboard.tsx index c1c90b666c..0260be7117 100644 --- a/packages/@uppy/dashboard/src/Dashboard.tsx +++ b/packages/@uppy/dashboard/src/Dashboard.tsx @@ -150,7 +150,7 @@ interface DashboardOptions theme?: 'auto' | 'dark' | 'light' trigger?: string width?: string | number - autoOpen?: 'metaEditor' | 'imageEditor' | false + autoOpen?: 'metaEditor' | 'imageEditor' | null /** @deprecated use option autoOpen instead */ autoOpenFileEditor?: boolean disabled?: boolean @@ -197,7 +197,7 @@ const defaultOptions = { showNativePhotoCameraButton: false, showNativeVideoCameraButton: false, theme: 'light', - autoOpen: false, + autoOpen: null, autoOpenFileEditor: false, disabled: false, disableLocalFiles: false, diff --git a/packages/@uppy/dashboard/types/index.d.ts b/packages/@uppy/dashboard/types/index.d.ts index 55998a3e86..b21982222e 100644 --- a/packages/@uppy/dashboard/types/index.d.ts +++ b/packages/@uppy/dashboard/types/index.d.ts @@ -65,7 +65,7 @@ export interface DashboardOptions extends Options { theme?: 'auto' | 'dark' | 'light' trigger?: string width?: string | number - autoOpen?: 'metaEditor' | 'imageEditor' | false + autoOpen?: 'metaEditor' | 'imageEditor' | null /** @deprecated use option autoOpen instead */ autoOpenFileEditor?: boolean disabled?: boolean diff --git a/packages/@uppy/react/src/DashboardModal.js b/packages/@uppy/react/src/DashboardModal.js index b1f42cc204..d11cfbacfc 100644 --- a/packages/@uppy/react/src/DashboardModal.js +++ b/packages/@uppy/react/src/DashboardModal.js @@ -87,7 +87,7 @@ DashboardModal.propTypes = { note: PropTypes.string, metaFields, proudlyDisplayPoweredByUppy: PropTypes.bool, - autoOpen: PropTypes.oneOf(['imageEditor', 'metaEditor', false]), + autoOpen: PropTypes.oneOf(['imageEditor', 'metaEditor', null]), animateOpenClose: PropTypes.bool, browserBackButtonClose: PropTypes.bool, closeAfterFinish: PropTypes.bool, From cffdf398bd96da1426549a20af76c2efbb470dd7 Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Mon, 25 Mar 2024 21:25:33 +0400 Subject: [PATCH 10/10] change the default value too --- packages/@uppy/dashboard/src/Dashboard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/dashboard/src/Dashboard.tsx b/packages/@uppy/dashboard/src/Dashboard.tsx index 0260be7117..9292f4cd36 100644 --- a/packages/@uppy/dashboard/src/Dashboard.tsx +++ b/packages/@uppy/dashboard/src/Dashboard.tsx @@ -250,9 +250,9 @@ export default class Dashboard extends UIPlugin< // TODO: we can remove this code when we update the Uppy major version let autoOpen: DashboardOptions['autoOpen'] if (!opts) { - autoOpen = false + autoOpen = null } else if (opts.autoOpen === undefined) { - autoOpen = opts.autoOpenFileEditor ? 'imageEditor' : false + autoOpen = opts.autoOpenFileEditor ? 'imageEditor' : null } else { autoOpen = opts.autoOpen }