Sfoglia il codice sorgente

@uppy/status-bar: fix `StatusBarOptions` type (#4883)

Antoine du Hamel 1 anno fa
parent
commit
ca3928bffc

+ 16 - 17
packages/@uppy/status-bar/src/StatusBar.tsx

@@ -55,12 +55,25 @@ function getUploadingState(
   return state
 }
 
+// set default options, must be kept in sync with @uppy/react/src/StatusBar.js
+const defaultOptions = {
+  target: 'body',
+  hideUploadButton: false,
+  hideRetryButton: false,
+  hidePauseResumeButton: false,
+  hideCancelButton: false,
+  showProgressDetails: false,
+  hideAfterFinish: true,
+  doneButtonHandler: null,
+} satisfies StatusBarOptions
+
 /**
  * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,
  * progress percentage and time remaining.
  */
 export default class StatusBar<M extends Meta, B extends Body> extends UIPlugin<
-  StatusBarOptions,
+  StatusBarOptions &
+    Required<Pick<StatusBarOptions, keyof typeof defaultOptions>>,
   M,
   B
 > {
@@ -74,28 +87,14 @@ export default class StatusBar<M extends Meta, B extends Body> extends UIPlugin<
 
   #previousETA: number | null
 
-  constructor(uppy: Uppy<M, B>, opts?: Partial<StatusBarOptions>) {
-    super(uppy, opts)
+  constructor(uppy: Uppy<M, B>, opts?: StatusBarOptions) {
+    super(uppy, { ...defaultOptions, ...opts })
     this.id = this.opts.id || 'StatusBar'
     this.title = 'StatusBar'
     this.type = 'progressindicator'
 
     this.defaultLocale = locale
 
-    // set default options, must be kept in sync with @uppy/react/src/StatusBar.js
-    const defaultOptions = {
-      target: 'body',
-      hideUploadButton: false,
-      hideRetryButton: false,
-      hidePauseResumeButton: false,
-      hideCancelButton: false,
-      showProgressDetails: false,
-      hideAfterFinish: true,
-      doneButtonHandler: null,
-    }
-
-    this.opts = { ...defaultOptions, ...opts }
-
     this.i18nInit()
 
     this.render = this.render.bind(this)

+ 9 - 9
packages/@uppy/status-bar/src/StatusBarOptions.ts

@@ -1,14 +1,14 @@
-import type { UIPluginOptions } from '@uppy/core/src/UIPlugin.ts'
+import type { UIPluginOptions } from '@uppy/core/lib/UIPlugin'
 import type StatusBarLocale from './locale.ts'
 
 export interface StatusBarOptions extends UIPluginOptions {
-  target: HTMLElement | string
-  showProgressDetails: boolean
-  hideUploadButton: boolean
-  hideAfterFinish: boolean
-  hideRetryButton: boolean
-  hidePauseResumeButton: boolean
-  hideCancelButton: boolean
-  doneButtonHandler: (() => void) | null
+  target?: HTMLElement | string
+  showProgressDetails?: boolean
+  hideUploadButton?: boolean
+  hideAfterFinish?: boolean
+  hideRetryButton?: boolean
+  hidePauseResumeButton?: boolean
+  hideCancelButton?: boolean
+  doneButtonHandler?: (() => void) | null
   locale?: typeof StatusBarLocale
 }