1. framework components
  2. file upload

File Upload

File upload dropzone and input patterns for selecting files.

Select file or drag here.

Disabled

Set the disabled prop to enable the disabled state.

Button Only

Replace the interface with a simple “browse” button.

Direction

Set the text direction ( ltr or rtl ) using the dir prop.

Anatomy

Here’s an overview of how the FileUpload component is structured in code:

svelte
<script lang="ts">
	import { FileUpload } from '@skeletonlabs/skeleton-svelte';
</script>

<FileUpload>
	<FileUpload.Dropzone>
		<FileUpload.Trigger />
		<FileUpload.HiddenInput />
	</FileUpload.Dropzone>
	<FileUpload.ItemGroup>
		<FileUpload.Item>
			<FileUpload.ItemName />
			<FileUpload.ItemSizeText />
			<FileUpload.ItemDeleteTrigger />
		</FileUpload.Item>
	</FileUpload.ItemGroup>
	<FileUpload.ClearTrigger />
</FileUpload>

API Reference

Root

Prop Default Type
name string | undefined

The name of the underlying file input

ids Partial<{ root: string; dropzone: string; hiddenInput: string; trigger: string; label: string; item: (id: string) => string; itemName: (id: string) => string; itemSizeText: (id: string) => string; itemPreview: (id: string) => string; itemDeleteTrigger: (id: string) => string; }> | undefined

The ids of the elements. Useful for composition.

translations IntlTranslations | undefined

The localized messages to use.

accept Record<string, string[]> | FileMimeType | FileMimeType[] | undefined

The accept file types

disabled boolean | undefined

Whether the file input is disabled

required boolean | undefined

Whether the file input is required

allowDrop true boolean | undefined

Whether to allow drag and drop in the dropzone element

maxFileSize Infinity number | undefined

The maximum file size in bytes

minFileSize 0 number | undefined

The minimum file size in bytes

maxFiles 1 number | undefined

The maximum number of files

preventDocumentDrop true boolean | undefined

Whether to prevent the drop event on the document

validate ((file: File, details: FileValidateDetails) => FileError[] | null) | undefined

Function to validate a file

defaultAcceptedFiles File[] | undefined

The default accepted files when rendered. Use when you don't need to control the accepted files of the input.

acceptedFiles File[] | undefined

The controlled accepted files

onFileChange ((details: FileChangeDetails) => void) | undefined

Function called when the value changes, whether accepted or rejected

onFileAccept ((details: FileAcceptDetails) => void) | undefined

Function called when the file is accepted

onFileReject ((details: FileRejectDetails) => void) | undefined

Function called when the file is rejected

capture "user" | "environment" | undefined

The default camera to use when capturing media

directory boolean | undefined

Whether to accept directories, only works in webkit browsers

invalid boolean | undefined

Whether the file input is invalid

readOnly boolean | undefined

Whether the file input is read-only

transformFiles ((files: File[]) => Promise<File[]>) | undefined

Function to transform the accepted files to apply transformations

locale "en-US" string | undefined

The current locale. Based on the BCP 47 definition.

dir "ltr" "ltr" | "rtl" | undefined

The document's text/writing direction.

getRootNode (() => ShadowRoot | Node | Document) | undefined

A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.

element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Provider

Prop Default Type
value () => FileUploadApi<PropTypes>

element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Context

Prop Default Type
children Snippet<[any]>

Label

Prop Default Type
element Snippet<[HTMLAttributes<"label">]> | undefined

Render the element yourself

Dropzone

Prop Default Type
disableClick boolean | undefined

Whether to disable the click event on the dropzone

element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

Trigger

Prop Default Type
element Snippet<[HTMLAttributes<"button">]> | undefined

Render the element yourself

ClearTrigger

Prop Default Type
element Snippet<[HTMLAttributes<"button">]> | undefined

Render the element yourself

HiddenInput

Prop Default Type
element Snippet<[HTMLAttributes<"input">]> | undefined

Render the element yourself

ItemGroup

Prop Default Type
element Snippet<[HTMLAttributes<"ul">]> | undefined

Render the element yourself

Item

Prop Default Type
file File

type ItemType | undefined

element Snippet<[HTMLAttributes<"li">]> | undefined

Render the element yourself

ItemName

Prop Default Type
element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

ItemSizeText

Prop Default Type
element Snippet<[HTMLAttributes<"div">]> | undefined

Render the element yourself

ItemDeleteTrigger

Prop Default Type
element Snippet<[HTMLAttributes<"button">]> | undefined

Render the element yourself

View page on GitHub