File input

File input component is a web component that allows users to select a file from their device. It is used to upload files in a user-friendly way.

Design system docs

Examples Sizes
<dap-ds-stack>
  <dap-ds-file-input
  size="xs"
  description="Upload your resume"
  accept=".jpg,.docx,.png,.heic"
  label="Auto upload resume"
  autoupload
  uploadUrl="https://9daf1d71-c24f-4a02-8861-701f8ff4a9c8.mock.pstmn.io/upload/success"
  tooltip="File tooltip text">
</dap-ds-file-input>
<dap-ds-file-input
  description="Upload your resume"
  accept=".jpg,.docx,.png,.heic"
  label="Auto upload resume"
  autoupload
  uploadUrl="https://9daf1d71-c24f-4a02-8861-701f8ff4a9c8.mock.pstmn.io/upload/success"
  tooltip="File tooltip text">
</dap-ds-file-input>
  <dap-ds-file-input
  size="lg"
  description="Upload your resume"
  accept=".jpg,.docx,.png,.heic"
  label="Auto upload resume"
  autoupload
  uploadUrl="https://9daf1d71-c24f-4a02-8861-701f8ff4a9c8.mock.pstmn.io/upload/success"
  tooltip="File tooltip text">
</dap-ds-file-input>
</dap-ds-stack>
Auto upload files

File input component can be set to auto upload files. When the user selects a file, it is automatically uploaded to the server. The autoupload attribute should be set to true, and the uploadUrl attribute should be set to the server URL.

<dap-ds-file-input
  description="Upload your resume"
  accept=".jpg,.docx,.png,.heic"
  label="Auto upload resume"
  autoupload
  uploadUrl="https://9daf1d71-c24f-4a02-8861-701f8ff4a9c8.mock.pstmn.io/upload/success"
  tooltip="File tooltip text">
</dap-ds-file-input>
File list

With the <dap-ds-file-input-list> component, you can display a list of uploaded files. The for attribute should be set to the ID of the file input component.

<>
<dap-ds-file-input
  size="xs"
  id="fileInput"
  description="Upload your resume"
  accept=".jpg,.docx,.png,.heic"
  label="Auto upload resume"
  autoupload
  uploadUrl="https://9daf1d71-c24f-4a02-8861-701f8ff4a9c8.mock.pstmn.io/upload/success"
  tooltip="File tooltip text">
</dap-ds-file-input>

<dap-ds-file-input-list for="fileInput"></dap-ds-file-input-list>
</>
File events, handling file upload statuses

Please check the console for the file upload status events. You can find the available events in the Events section. The first upload will be always successful, the second will always fail. A confirmation modal will be shown when the user tries to remove a file.

Example
HTML
<dap-ds-file-input
  ref={succcessRef}
  id="fileInput1"
  description="Always success upload"
  accept=".jpg,.docx,.png,.heic"
  label="Upload your recepies"
  autoupload
  uploadUrl="https://9daf1d71-c24f-4a02-8861-701f8ff4a9c8.mock.pstmn.io/upload/success"
  tooltip="File tooltip text">
</dap-ds-file-input>

<dap-ds-file-input-list for="fileInput1">
</dap-ds-file-input-list>

<dap-ds-modal
  id="confirmModal"
  header="Are you sure?"
  description="Confirm your choice!"
  okButtonDanger
  okButtonLabel="Delete">
</dap-ds-modal>
Js
fileInput.addEventListener('dds-file-change', event => {
  const files = event.detail.files

  console.log('dds-file-change', files)
})

fileInput.addEventListener('dds-upload-complete', e => {
  console.log('dds-upload-complete', e)
  e.detail.item.feedbackType = 'positive'
  e.detail.item.feedback = 'success'
})

fileInput.current?.addEventListener('dds-upload-error', e => {
  console.log('dds-upload-error', e)
  e.detail.item.feedbackType = 'negative'
  e.detail.item.feedback = 'error'
})

fileInput.addEventListener('dds-upload-error', () => {
  console.log('dds-upload-error', 'all upload completed successfully')
})

fileInput.addEventListener('dds-upload-progress', event => {
  console.log('uploading:', event.detail.progress)
})

fileInput.addEventListener('dds-file-removed', event => {
  const confirmModal = document.getElementById('confirmModal')
  confirmModal.addEventListener('dds-ok', () => {
    event.detail.cancel.allow(true)
  })

  confirmModal.addEventListener('dds-cancel', () => {
    event.detail.cancel.reject()
  })

  confirmModal.show()
})
Importing
import { DapDSFileInput } from 'dap-design-system/dist/dds'
Importing React
import { DapDSFileInputReact } from 'dap-design-system/dist/react'
Attributes
PropertyTypeDefaultDescription
uploadButtonLabelstringLabel for the upload button
acceptstringThe file types that the file input accepts
multiplebooleanfalseWhether the file input accepts multiple files.
keepValuebooleanfalseWhether to keep the value of the file input when new files are selected.
uploadUrlstringA remote URL to upload files to
autouploadbooleanWhether to automatically upload files after selection
uploadPropertystring'file'The property to use when uploading files
uploadMethodstring'POST'The HTTP method to use when uploading files
withCredentialsbooleanfalseWhether to send credentials with the file upload request
fileListDapDSFileInputList, nullnullThe file list component to bind to
maxFilesstringThe maximum number of files that can be uploaded
maxFileSizestringThe maximum size of files that can be uploaded
namestringThe name of the file input.
valuestringThe value of the file input.
status'success', 'error'The status of the file input.
labelstringThe label for the file input.
descriptionstringThe description for the file input.
tooltipstringThe tooltip for the file input.
tooltipPlacement'top', 'right' , 'bottom' , 'left'The tooltip placement of the input.
disabledbooleanWhether the file input is disabled.
size'xs', 'sm' , 'lg'The size of the file input.
feedbackstringThe feedback for the file input.
feedbackType'negative', 'positive' , 'warning'The type of feedback for the file input.
requiredbooleanWhether the file input is required.
optionalbooleanWhether the file input is optional.
subtlebooleanFont weight of the feedback label. Default is false which is bold.
Slots

No slots available.

Events
Event NameDescription
dds-upload-startFired when a file upload starts.
dds-upload-progressFired during file upload progress.
dds-upload-completeFired when a file upload completes successfully.
dds-upload-errorFired when a file upload encounters an error.
dds-all-uploads-completeFired when all file uploads are complete.
dds-file-removedFired when a file is removed from the file input.
CSS Parts
Part NameDescription
baseThe main file input container.
inputThe file input control.
labelThe file input label.
descriptionThe file input description.
feedbackThe file input feedback.
tooltipThe file input tooltip.
Components File input list item <dap-ds-file-input-list-item/> Attributes
PropertyTypeDefaultDescription
disabledbooleanfalseDisables the file input list item.
inputNamestringThe name of the file input.
feedbackstringThe feedback message.
feedbackTypeFeedbackTypeFeedback type.
loadingbooleanfalseLoading state of the file input list item.
deletablebooleanfalseShow delete button.
showSizebooleanfalseShow file size.
fileDataFileListElement
subtlebooleanfalseSubtle style.
progressstring'0'The progress of the file upload.
hrefstringThe url of the item link. If present, the item title will rendered as a link.
relstringThe rel of the item link. Only used if href is present.
targetLinkTargetThe target of the item link. Only used if href is present.
downloadstring'true'Whether the file should be downloaded when clicked.
Slots

No slots available.

Events
Event NameDescription
dds-file-removeDispatched when a file is removed from the list.
CSS Parts
Part NameDescription
baseThe main file input list item container.
feedbackThe feedback container.
linkThe link text of the item component.
File input list <dap-ds-file-input-list/> Attributes
PropertyTypeDefaultDescription
forstringThe id of the file input element to bind to.
disabledbooleanfalseDisables the file input list.
Slots

No slots available.

Events

No custom events available.

CSS Parts
Part NameDescription
baseThe main file input list container.