Skip to main content

Drop zone

The drop zone component lets users upload files through drag-and-drop or by clicking to browse. Use for file uploads such as images, documents, or CSV imports.

The component provides visual feedback during drag operations and supports file type validation through the accept property. Rejected files trigger the droprejected event for custom error handling.

Drop zone handles file selection only. Implement upload and storage in your extension logic. To store file references on the cart, use the Metafields API.

Support
Targets (29)

Configure the following properties on the drop zone component.

Anchor to accept
accept
string
Default: ''

A string representing the types of files that are accepted by the drop zone. This string is a comma-separated list of unique file type specifiers which can be one of the following:

  • A file extension starting with a period (".") character (such as .jpg, .pdf, .doc)
  • A valid MIME type string with no extensions

If omitted, all file types are accepted.

Anchor to accessibilityLabel
accessibilityLabel
string

A label that describes the purpose or contents of the item. When set, it will be announced to buyers using assistive technologies and will provide them with more context.

Anchor to disabled
disabled
boolean
Default: false

Whether the field is disabled, preventing any user interaction.

Anchor to error
error
string

An error message displayed below the field to indicate validation problems. When set, the field is styled with error indicators and the message is announced to screen readers.

string

A unique identifier for the element. Use this to reference the element in JavaScript, link labels to form controls, or target specific elements for styling or scripting.

Anchor to label
label
string

The text displayed as the field label, which identifies the purpose of the field to users. This label is associated with the field for accessibility and helps users understand what information to provide.

Anchor to multiple
multiple
boolean
Default: false

Whether multiple files can be selected or dropped at once.

string

The name attribute for the field, used to identify the field's value when the form is submitted. Must be unique within the nearest containing form.

Anchor to required
required
boolean
Default: false

Whether the field needs a value. This requirement adds semantic value to the field, but it will not cause an error to appear automatically. If you want to present an error when this field is empty, you can do so with the error property.

Anchor to value
value
string
Default: ''

A string that represents the path to the selected file(s). If no file is selected yet, the value is an empty string (""). When the user selected multiple files, the value represents the first file in the list of files they selected. The value is always the file's name prefixed with "C:\fakepath", which isn't the real path of the file.

The drop zone component provides event callbacks for handling user interactions. Learn more about handling events.

Anchor to change
change
<typeof tagName>

A callback fired when the drop zone value changes.

Learn more about the change event.

Anchor to droprejected
droprejected
<typeof tagName>

A callback fired when files are rejected based on the accept prop.

Anchor to input
input
<typeof tagName>

A callback fired when the user inputs data into the drop zone.

Learn more about the input event.


Let buyers upload files by dragging or clicking to browse. This example creates a basic upload area that accepts image files.

Accept file uploads

A rendered example of the drop-zone component

html

<s-drop-zone accept="image/*" label="Add file"></s-drop-zone>

Anchor to Upload return documentsUpload return documents

Restrict uploads to document formats for return or warranty submissions. This example accepts only PDF and DOC files using the accept property.

html

<s-drop-zone
accept=".pdf,.doc,.docx"
label="Upload documents"
multiple
></s-drop-zone>

Anchor to Require a file uploadRequire a file upload

Ensure a file is provided before the form can be submitted. This example uses the required attribute on a drop zone for proof of purchase.

html

<s-drop-zone name="file" required label="Upload file"></s-drop-zone>

Anchor to Show an upload errorShow an upload error

Display an error message when an upload fails validation. This example shows a drop zone with an error message for oversized files.

html

<s-drop-zone
label="Upload file"
error="File size must be less than 5 MB"
></s-drop-zone>

Block uploads while files are being processed or when the upload window has closed. This example shows a drop zone with the disabled attribute.

html

<s-drop-zone label="Upload not available" disabled></s-drop-zone>

  • Specify accepted types: Use the accept property to restrict uploads to expected file types, such as image/* or application/pdf.
  • Mobile considerations: Drag and drop functionality is limited on mobile devices. Include a button to help guide buyers to select files.
  • Minimum size: Keep the drop zone at least 100px x 100px to avoid cut-off text and spacing issues.

Was this page helpful?