Gå til innholdet

File Upload

Klassen settes på et vanlig <input type="file">. Knappen inni er nettleserens egen, og teksten på den kommer fra operativsystemets språk. Den kan ikke oversettes, så ledeteksten over feltet må si hva som skal lastes opp.

import "@fristil/designsystem/tokens.css"
import "@fristil/designsystem/file-upload.css"
AttributtEffekt
multipleFlere filer kan velges
acceptFiltypene filvelgeren foreslår
data-state="invalid"Rød ramme. Sett aria-invalid="true" i tillegg.

accept er en hjelp i filvelgeren, ikke en sperre. Brukeren kan velge «alle filer», så typen må sjekkes på serveren uansett.

Lista skriver du selv, siden bare du vet hva som skal skje når en fil fjernes.

Knappeteksten skal si hvilken fil som fjernes. «Fjern» alene gir like knapper for den som hører siden.

Feltet husker bare det siste utvalget: velger brukeren to filer til, erstatter de forrige. Skal filene samles opp, og kunne fjernes én og én, må du holde lista selv:

const felt = document.getElementById("vedlegg")
let filer = []
felt.addEventListener("change", () => {
filer = [...filer, ...felt.files]
tegnListe()
felt.value = ""
})
import { fs } from "@fristil/designsystem"
const felt = document.querySelector<HTMLInputElement>("#vedlegg")
fs.setAttributes(felt, fs.fileUpload({ multiple: true, accept: ".pdf" }))

fs.fileUpload.list gir klassen på lista. Se Typesikker bruk.

KlasseHva det er
.fs-file-uploadFeltet. Tilstanden kommer fra data-state.
.fs-file-upload-listLista over filene som er valgt
VariabelStandard
--fs-file-upload-paddingvar(--size-2)
--fs-file-upload-radiusvar(--size-1)

Knappen inne i feltet styles gjennom ::file-selector-button, som er den eneste veien inn til den.

Se Tilpasning for hvordan variablene og laget virker.

  • Si hvilke filtyper og hvilken største størrelse som godtas, før brukeren prøver. En feilmelding etterpå er et dårligere alternativ.
  • Meld fra når en fil er lagt til eller fjernet, i et felt med role="status".
  • Dra-og-slipp kan komme i tillegg, aldri i stedet. Det finnes ikke for tastatur.
  • Under opplasting: vis fremdrift per fil, og la brukeren avbryte.