Sha256: e2523405d709b4742d1bf6a765a928e3e48c068d32a033fc7ccffb2f8008107f

Contents?: true

Size: 1.78 KB

Versions: 3

Compression:

Stored size: 1.78 KB

Contents

import { CocoComponent } from "@assets/js/base/coco";

export default CocoComponent("imageUploader", ({ click, drop }) => {
  return {
    file: null,
    errors: [],
    active: false,
    clickable: click,
    droppable: drop,
    input: null,

    get fileName() {
      return this.file && this.file.name;
    },

    get fileType() {
      return this.file && this.file.type;
    },

    get fileSize() {
      return this.file && this.file.size;
    },

    get fileData() {
      return this.file && this.file.data;
    },

    init() {
      this.input = this.$refs.input;

      this.$watch("file", (file) => {
        const dataTransfer = new DataTransfer();
        if (file && file.file instanceof File) {
          dataTransfer.items.add(file.file);
        }
        this.input.files = dataTransfer.files;
      });
    },

    setFile(file) {
      this.file = file;
    },

    openPicker() {
      this.input.click();
    },

    clear() {
      this.file = null;
      this.input.value = null;
      this.$dispatch("image-uploader:clear");
    },

    handleDrop(event) {
      const files = event.detail.files || event.dataTransfer.files;
      this.handleFiles(files);
    },

    handleFiles(files) {
      Array.from(files).forEach((file) => this.readFile(file));
    },

    readFile(file) {
      const reader = new FileReader();

      reader.addEventListener("load", () => {
        this.file = {
          name: file.name,
          size: file.size,
          type: file.type,
          file: file,
          data: reader.result,
        };

        this.$dispatch("image-uploader:load", { file: this.file });
      });

      reader.addEventListener("error", () => {
        this.errors.push(`Error reading file: ${file.name}`);
      });

      reader.readAsDataURL(file);
    },
  };
});

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
coveragebook_components-0.14.0 app/components/coco/images/image_uploader/image_uploader.js
coveragebook_components-0.13.1 app/components/coco/images/image_uploader/image_uploader.js
coveragebook_components-0.13.0 app/components/coco/images/image_uploader/image_uploader.js