Sha256: 3532ae39e50462674f3e3b961eaa000ee163fd3ec807f593b6d7bf30ff93b83b

Contents?: true

Size: 1.81 KB

Versions: 13

Compression:

Stored size: 1.81 KB

Contents

<template>
  <div>
    <submit-button
      type="button"
      class="rounded-sm text-white py-2 px-4"
      defaultColorClass="bg-editor-primary"
      :labels="$t('imageLibrary.uploader.uploadButton')"
      :buttonState="uploadingState"
      @click="openFileDialog"
    />

    <input
      type="file"
      ref="input"
      accept="image/*"
      :multiple="multiple"
      @change="addFiles"
      class="hidden"
    />
  </div>
</template>

<script>
export default {
  name: 'ImageLibraryUploader',
  props: {
    maxsize: { type: Number, default: 2048144 },
    multiple: { type: Boolean, default: false },
  },
  data() {
    return { uploadingState: 'default' }
  },
  methods: {
    openFileDialog() {
      this.$refs.input.click()
    },
    addFiles() {
      const allowedFiles = this.checkFiles()
      if (allowedFiles) {
        this.uploadingState = 'inProgress'
        Promise.all(
          allowedFiles.map((file) => this.services.image.create({ file })),
        )
          .then(() => {
            this.uploadingState = 'success'
            this.$emit('uploaded')
          })
          .catch((error) => {
            this.uploadingState = 'fail'
            console.log(
              '[Maglev] Uploader failed. Check your server logs',
              error,
            )
          })
      } else {
        alert(
          this.$t('imageLibrary.uploader.wrongFiles', {
            limit: this.$options.filters.numberToHumanSize(this.maxsize),
          }),
        )
      }
    },
    checkFiles() {
      let allowedFiles = []
      const files = this.$refs.input.files
      for (var i = 0; i < files.length; i++) {
        const file = files[i]
        if (file && file.size < this.maxsize) {
          allowedFiles.push(file)
        } else return false
      }
      return allowedFiles
    },
  },
}
</script>

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
maglevcms-1.4.0 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.3.0 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.2.2 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.2.1 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.2.0 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.7 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.6 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.5 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.4 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.3 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.2 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.1 app/frontend/editor/components/image-library/uploader.vue
maglevcms-1.1.0 app/frontend/editor/components/image-library/uploader.vue