FileTrigger
FileTrigger från React Aria gör det möjligt för en användare att komma åt filsystemet via valfri tryckbar React Aria-komponent, som till exempel Button. Se API eller officiell dokumentation för hur den kan användas. FileTrigger är en komponent utan utseende och går att använda direkt från React Aria eller importeras från Midas. DropZone har en enkelt stylad yta men med samma beteende som React Aria.
import { Button } from '@midas-ds/components'
import { FileTrigger } from 'react-aria-components'
import React from 'react'
export const Example = () => {
let [file, setFile] = React.useState(null);
return (
<>
<FileTrigger
onSelect={(e) => {
let files = e ? Array.from(e) : [];
let filenames = files.map((file) => file.name);
setFile(filenames);
}}>
<Button>Välj fil</Button>
</FileTrigger>
{file && file}
</>
)
}
Varianter
Se API samt React Aria för samtliga möjligheter.
Drag & drop
Använd FileTrigger tillsammans med DropZone för att tillåta val av filer via drag & drop.
export const DropZoneExample = () => {
let [files, setFiles] = React.useState(null);
return (
<>
<DropZone
onDrop={(e) => {
let files = e.items.filter((file) =>
file.kind === 'file'
) as FileDropItem[];
let filenames = files.map((file) => file.name);
setFiles(filenames.join(', '));
}}
>
<FileTrigger
allowsMultiple
onSelect={(e) => {
let files = Array.from(e);
let filenames = files.map((file) => file.name);
setFiles(filenames.join(', '));
}}
>
<Button>Select files</Button>
</FileTrigger>
<Text slot="label" style={{ display: 'block' }}>
{files || 'Drop files here'}
</Text>
</DropZone>
</>
)
}
Alternativ
För att tillåta användaren att ladda upp flera filer på samma gång, använd attributet allowsMultiple
, för att
begränsa valbara filtyper, använd acceptedFileTypes
.
Media Capture
På mobila enheter kan användaren använda enhetens kamera för att välja media. defaultCamera
väljer vilken kamera som
används.
<FileTrigger defaultCamera={'environment'}>
<Button>Öppna kameran</Button>
</FileTrigger>