Files
Compass/web/components/buttons/file-upload-button.tsx
Martin Braquet ba9b3cfb06 Add pretty formatting (#29)
* Test

* Add pretty formatting

* Fix Tests

* Fix Tests

* Fix Tests

* Fix

* Add pretty formatting fix

* Fix

* Test

* Fix tests

* Clean typeckech

* Add prettier check

* Fix api tsconfig

* Fix api tsconfig

* Fix tsconfig

* Fix

* Fix

* Prettier
2026-02-20 17:32:27 +01:00

41 lines
978 B
TypeScript

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