import { Upload as UploadIcon } from '@transferwise/icons'; import { createRef, PureComponent } from 'react'; import StatusIcon from '../../../statusIcon'; import { Sentiment, Size } from '../../../common'; import { InlinePrompt } from '../../../prompt/InlinePrompt/InlinePrompt'; export interface UploadImageStepProps { fileDropped: (file: File) => void; isComplete: boolean; usAccept: string; usButtonText: string; usDisabled: boolean; usHelpImage: React.ReactNode; usLabel: string; usPlaceholder: string; errorMessage?: string | string[]; errorIconLabel?: string; } export default class UploadImageStep extends PureComponent { uploadInputRef = createRef(); onManualUpload = () => { const { fileDropped } = this.props; const file = this.uploadInputRef.current?.files?.[0]; if (file != null) { fileDropped(file); } }; onKeyDown = (event: React.KeyboardEvent) => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); this.uploadInputRef.current?.click(); } }; getImage = () => { const { usHelpImage, usLabel } = this.props; const { errorMessage } = this.props; if (errorMessage) { return (
); } if (!usHelpImage) { return (
); } if (typeof usHelpImage === 'string') { return {usLabel}; } return usHelpImage; }; render() { const { errorMessage, isComplete, errorIconLabel, usAccept, usButtonText, usDisabled, usLabel, usPlaceholder, } = this.props; return (
{this.getImage()}
{usLabel &&

{usLabel}

} {usPlaceholder &&

{String(usPlaceholder)}

} {errorMessage && (
{errorMessage}
)}
); } }