manifold/web/components/file-upload-button.tsx

27 lines
668 B
TypeScript
Raw Normal View History

import { useRef } from 'react'
/** button that opens file upload window */
export function FileUploadButton(props: {
onFiles: (files: File[]) => void
className?: string
children?: React.ReactNode
}) {
const { onFiles, className, children } = props
const ref = useRef<HTMLInputElement>(null)
return (
<>
<button className={className} onClick={() => ref.current?.click()}>
{children}
</button>
<input
ref={ref}
type="file"
accept=".gif,.jpg,.jpeg,.png,.webp, image/*"
multiple
className="hidden"
onChange={(e) => onFiles(Array.from(e.target.files || []))}
/>
</>
)
}