1.0.8 • Published 10 months ago

jcb-upload v1.0.8

Weekly downloads
-
License
MIT
Repository
github
Last release
10 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.</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>
1.0.8

10 months ago

1.0.6

10 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.3

10 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago

0.9.1

10 months ago

0.9.0

10 months ago