import type Uppy from '@uppy/core' import type { Body, Meta, UppyFile } from '@uppy/core' import type { I18n } from '@uppy/utils' import type { DashboardState } from '../../../Dashboard.js' import copyToClipboard from '../../../utils/copyToClipboard.js' type $TSFixMe = any function EditButton({ file, uploadInProgressOrComplete, metaFields, canEditFile, i18n, onClick, }: { file: UppyFile uploadInProgressOrComplete: boolean metaFields: DashboardState['metaFields'] canEditFile: (f: UppyFile) => boolean i18n: I18n onClick: () => void }) { if ( (!uploadInProgressOrComplete && metaFields && metaFields.length > 0) || (!uploadInProgressOrComplete && canEditFile(file)) ) { return ( ) } return null } function RemoveButton({ i18n, onClick, file, }: { i18n: I18n onClick: () => void file: UppyFile }) { return ( ) } function CopyLinkButton({ file, uppy, i18n, }: { file: UppyFile uppy: Uppy i18n: I18n }) { const copyLinkToClipboard = (event: $TSFixMe) => { copyToClipboard(file.uploadURL, i18n('copyLinkToClipboardFallback')) .then(() => { uppy.log('Link copied to clipboard.') uppy.info(i18n('copyLinkToClipboardSuccess'), 'info', 3000) }) .catch(uppy.log) // avoid losing focus .then(() => event.target.focus({ preventScroll: true })) } return ( ) } type ButtonsProps = { uppy: Uppy file: UppyFile i18n: I18n uploadInProgressOrComplete: boolean canEditFile: (file: UppyFile) => boolean metaFields: DashboardState['metaFields'] showLinkToFileUploadResult: boolean showRemoveButton: boolean toggleFileCard: (show: boolean, fileId: string) => void openFileEditor: (file: UppyFile) => void } export default function Buttons( props: ButtonsProps, ) { const { uppy, file, uploadInProgressOrComplete, canEditFile, metaFields, showLinkToFileUploadResult, showRemoveButton, i18n, toggleFileCard, openFileEditor, } = props const editAction = () => { if (metaFields && metaFields.length > 0) { toggleFileCard(true, file.id) } else { openFileEditor(file) } } return (
{showLinkToFileUploadResult && file.uploadURL ? ( ) : null} {showRemoveButton ? ( uppy.removeFile(file.id)} /> ) : null}
) }