0.9.0 • Published 5 months ago

jcb-camera v0.9.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

jcb-upload Web Component Documentation

Description

A custom-element that displays a drag-and-drop zone and handles file uploads.


Attributes

AttributeTypeDefaultDescription
multipleBooleanfalseIndicates whether multiple files can be uploaded.
chunksizeNumber32768Chunk size when providing file contents by chunk.
acceptStringundefinedAccepted MIME types, comma-separated.

CSS Custom Properties

CSS PropertyDefaultDescription
--jcb-upload-background-color#fcfcfcColor of the background.
--jcb-upload-hover-color#f0f0f0Color of the background on hover.
--jcb-upload-error-color#F88Color of the background when hovering with unacceptable files.
--jcb-upload-border-width2pxDotted border width.
--jcb-upload-border-color#aaaDotted border color.
--jcb-upload-border-radius20pxDotted border corner radius.
--jcb-upload-padding20pxContent padding.

Events

upload-start

  • Description: Fired when the upload of a file starts.
  • Detail:
    • file: The file that is starting to upload.

upload-chunk

  • Description: Fired for each chunk during a file upload.
  • Detail:
    • file: The file being uploaded.
    • arrayBufferSlice: The current chunk of the file being uploaded.

upload-end

  • Description: Fired when the upload of a file completes.
  • Detail:
    • file: The file that has completed uploading.

upload-error

  • Description: Fired when an error occurs during upload.
  • Detail:
    • errorCode: Describes the type of error.
      • no-multiple: Fired when several files are provided, but the multiple attribute is not set.
      • wrong-type: Fired when one or more files have MIME types not compatible with the accept attribute.

Example usage

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>jcb-upload</title>
      <script type="module" src="/src/jcb-upload.js"></script>
   </head>
   <body>
      <div class="panel">
         <jcb-upload id="upload" multiple chunksize="32768" accept="application/pdf, image/*">
            Drag & drop files or click here. See <a href='#'>example</a>
         </jcb-upload>
      </div>
   </body>
</html>

<script>
   document.getElementById('upload').addEventListener('upload-start', (e) => console.log('upload-start', e))
   document.getElementById('upload').addEventListener('upload-chunk', (e) => console.log('upload-chunk', e))
   document.getElementById('upload').addEventListener('upload-end', (e) => console.log('upload-end', e))
   document.getElementById('upload').addEventListener('upload-error', (e) => console.log('upload-error', e))
</script>

<style>
:root {
   --jcb-upload-background-color: #fcfcfc;
   --jcb-upload-hover-color: #ccc;
   --jcb-upload-border-width: 3px;
   --jcb-upload-border-color: #800;
   --jcb-upload-border-radius: 40px;
}

.panel {
   width: 800px;
   height: 400px;
}
</style>