digivue
Version:
PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc
1 lines • 174 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/fileupload/BaseFileUpload.vue","../../src/fileupload/FileContent.vue","../../src/fileupload/FileContent.vue?vue&type=template&id=81c7c692&lang.js","../../src/fileupload/FileUpload.vue","../../src/fileupload/FileUpload.vue?vue&type=template&id=7330a567&lang.js"],"sourcesContent":["<script>\nimport BaseComponent from '@digivue/core/basecomponent';\nimport FileUploadStyle from 'digivue/fileupload/style';\n\nexport default {\n name: 'BaseFileUpload',\n extends: BaseComponent,\n props: {\n name: {\n type: String,\n default: null\n },\n url: {\n type: String,\n default: null\n },\n mode: {\n type: String,\n default: 'advanced'\n },\n multiple: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n auto: {\n type: Boolean,\n default: false\n },\n maxFileSize: {\n type: Number,\n default: null\n },\n invalidFileSizeMessage: {\n type: String,\n default: '{0}: Invalid file size, file size should be smaller than {1}.'\n },\n invalidFileTypeMessage: {\n type: String,\n default: '{0}: Invalid file type, allowed file types: {1}.'\n },\n fileLimit: {\n type: Number,\n default: null\n },\n invalidFileLimitMessage: {\n type: String,\n default: 'Maximum number of files exceeded, limit is {0} at most.'\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n previewWidth: {\n type: Number,\n default: 50\n },\n chooseLabel: {\n type: String,\n default: null\n },\n uploadLabel: {\n type: String,\n default: null\n },\n cancelLabel: {\n type: String,\n default: null\n },\n customUpload: {\n type: Boolean,\n default: false\n },\n showUploadButton: {\n type: Boolean,\n default: true\n },\n showCancelButton: {\n type: Boolean,\n default: true\n },\n chooseIcon: {\n type: String,\n default: undefined\n },\n uploadIcon: {\n type: String,\n default: undefined\n },\n cancelIcon: {\n type: String,\n default: undefined\n },\n style: null,\n class: null,\n chooseButtonProps: {\n type: null,\n default: null\n },\n uploadButtonProps: {\n type: Object,\n default() {\n return { severity: 'secondary' };\n }\n },\n cancelButtonProps: {\n type: Object,\n default() {\n return { severity: 'secondary' };\n }\n }\n },\n style: FileUploadStyle,\n provide() {\n return {\n $pcFileUpload: this,\n $parentInstance: this\n };\n }\n};\n</script>\n","<template>\n <div v-for=\"(file, index) of files\" :key=\"file.name + file.type + file.size\" :class=\"cx('file')\" v-bind=\"ptm('file')\">\n <img role=\"presentation\" :class=\"cx('fileThumbnail')\" :alt=\"file.name\" :src=\"file.objectURL\" :width=\"previewWidth\" v-bind=\"ptm('fileThumbnail')\" />\n <div :class=\"cx('fileInfo')\" v-bind=\"ptm('fileInfo')\">\n <div :class=\"cx('fileName')\" v-bind=\"ptm('fileName')\">{{ file.name }}</div>\n <span :class=\"cx('fileSize')\" v-bind=\"ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n </div>\n <Badge :value=\"badgeValue\" :class=\"cx('pcFileBadge')\" :severity=\"badgeSeverity\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileBadge')\" />\n <div :class=\"cx('fileActions')\" v-bind=\"ptm('fileActions')\">\n <Button @click=\"$emit('remove', index)\" text rounded severity=\"danger\" :class=\"cx('pcFileRemoveButton')\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileRemoveButton')\">\n <template #icon=\"iconProps\">\n <component v-if=\"templates.fileremoveicon\" :is=\"templates.fileremoveicon\" :class=\"iconProps.class\" :file=\"file\" :index=\"index\" />\n <TimesIcon v-else :class=\"iconProps.class\" aria-hidden=\"true\" v-bind=\"ptm('pcFileRemoveButton')['icon']\" />\n </template>\n </Button>\n </div>\n </div>\n</template>\n\n<script>\nimport BaseComponent from '@digivue/core/basecomponent';\nimport TimesIcon from '@digivue/icons/times';\nimport Badge from 'digivue/badge';\nimport Button from 'digivue/button';\n\nexport default {\n name: 'FileContent',\n hostName: 'FileUpload',\n extends: BaseComponent,\n emits: ['remove'],\n props: {\n files: {\n type: Array,\n default: () => []\n },\n badgeSeverity: {\n type: String,\n default: 'warn'\n },\n badgeValue: {\n type: String,\n default: null\n },\n previewWidth: {\n type: Number,\n default: 50\n },\n templates: {\n type: null,\n default: null\n }\n },\n methods: {\n formatSize(bytes) {\n const k = 1024;\n const dm = 3;\n const sizes = this.$primevue.config.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n return `${formattedSize} ${sizes[i]}`;\n }\n },\n components: {\n Button,\n Badge,\n TimesIcon\n }\n};\n</script>\n","<template>\n <div v-for=\"(file, index) of files\" :key=\"file.name + file.type + file.size\" :class=\"cx('file')\" v-bind=\"ptm('file')\">\n <img role=\"presentation\" :class=\"cx('fileThumbnail')\" :alt=\"file.name\" :src=\"file.objectURL\" :width=\"previewWidth\" v-bind=\"ptm('fileThumbnail')\" />\n <div :class=\"cx('fileInfo')\" v-bind=\"ptm('fileInfo')\">\n <div :class=\"cx('fileName')\" v-bind=\"ptm('fileName')\">{{ file.name }}</div>\n <span :class=\"cx('fileSize')\" v-bind=\"ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n </div>\n <Badge :value=\"badgeValue\" :class=\"cx('pcFileBadge')\" :severity=\"badgeSeverity\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileBadge')\" />\n <div :class=\"cx('fileActions')\" v-bind=\"ptm('fileActions')\">\n <Button @click=\"$emit('remove', index)\" text rounded severity=\"danger\" :class=\"cx('pcFileRemoveButton')\" :unstyled=\"unstyled\" :pt=\"ptm('pcFileRemoveButton')\">\n <template #icon=\"iconProps\">\n <component v-if=\"templates.fileremoveicon\" :is=\"templates.fileremoveicon\" :class=\"iconProps.class\" :file=\"file\" :index=\"index\" />\n <TimesIcon v-else :class=\"iconProps.class\" aria-hidden=\"true\" v-bind=\"ptm('pcFileRemoveButton')['icon']\" />\n </template>\n </Button>\n </div>\n </div>\n</template>\n\n<script>\nimport BaseComponent from '@digivue/core/basecomponent';\nimport TimesIcon from '@digivue/icons/times';\nimport Badge from 'digivue/badge';\nimport Button from 'digivue/button';\n\nexport default {\n name: 'FileContent',\n hostName: 'FileUpload',\n extends: BaseComponent,\n emits: ['remove'],\n props: {\n files: {\n type: Array,\n default: () => []\n },\n badgeSeverity: {\n type: String,\n default: 'warn'\n },\n badgeValue: {\n type: String,\n default: null\n },\n previewWidth: {\n type: Number,\n default: 50\n },\n templates: {\n type: null,\n default: null\n }\n },\n methods: {\n formatSize(bytes) {\n const k = 1024;\n const dm = 3;\n const sizes = this.$primevue.config.locale?.fileSizeTypes || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n if (bytes === 0) {\n return `0 ${sizes[0]}`;\n }\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n\n return `${formattedSize} ${sizes[i]}`;\n }\n },\n components: {\n Button,\n Badge,\n TimesIcon\n }\n};\n</script>\n","<template>\n <div v-if=\"isAdvanced\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <input ref=\"fileInput\" type=\"file\" @change=\"onFileSelect\" :multiple=\"multiple\" :accept=\"accept\" :disabled=\"chooseDisabled\" v-bind=\"ptm('input')\" />\n <div :class=\"cx('header')\" v-bind=\"ptm('header')\">\n <slot name=\"header\" :files=\"files\" :uploadedFiles=\"uploadedFiles\" :chooseCallback=\"choose\" :uploadCallback=\"uploader\" :clearCallback=\"clear\">\n <Button\n :label=\"chooseButtonLabel\"\n :class=\"chooseButtonClass\"\n :style=\"style\"\n :disabled=\"disabled\"\n :unstyled=\"unstyled\"\n @click=\"choose\"\n @keydown.enter=\"choose\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n v-bind=\"chooseButtonProps\"\n :pt=\"ptm('pcChooseButton')\"\n >\n <template #icon=\"iconProps\">\n <slot name=\"chooseicon\">\n <component :is=\"chooseIcon ? 'span' : 'PlusIcon'\" :class=\"[iconProps.class, chooseIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcChooseButton')['icon']\" />\n </slot>\n </template>\n </Button>\n <Button v-if=\"showUploadButton\" :class=\"cx('pcUploadButton')\" :label=\"uploadButtonLabel\" @click=\"uploader\" :disabled=\"uploadDisabled\" :unstyled=\"unstyled\" v-bind=\"uploadButtonProps\" :pt=\"ptm('pcUploadButton')\">\n <template #icon=\"iconProps\">\n <slot name=\"uploadicon\">\n <component :is=\"uploadIcon ? 'span' : 'UploadIcon'\" :class=\"[iconProps.class, uploadIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcUploadButton')['icon']\" data-pc-section=\"uploadbuttonicon\" />\n </slot>\n </template>\n </Button>\n <Button v-if=\"showCancelButton\" :class=\"cx('pcCancelButton')\" :label=\"cancelButtonLabel\" @click=\"clear\" :disabled=\"cancelDisabled\" :unstyled=\"unstyled\" v-bind=\"cancelButtonProps\" :pt=\"ptm('pcCancelButton')\">\n <template #icon=\"iconProps\">\n <slot name=\"cancelicon\">\n <component :is=\"cancelIcon ? 'span' : 'TimesIcon'\" :class=\"[iconProps.class, cancelIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcCancelButton')['icon']\" data-pc-section=\"cancelbuttonicon\" />\n </slot>\n </template>\n </Button>\n </slot>\n </div>\n <div ref=\"content\" :class=\"cx('content')\" @dragenter=\"onDragEnter\" @dragover=\"onDragOver\" @dragleave=\"onDragLeave\" @drop=\"onDrop\" v-bind=\"ptm('content')\" :data-p-highlight=\"false\">\n <slot name=\"content\" :files=\"files\" :uploadedFiles=\"uploadedFiles\" :removeUploadedFileCallback=\"removeUploadedFile\" :removeFileCallback=\"remove\" :progress=\"progress\" :messages=\"messages\">\n <ProgressBar v-if=\"hasFiles\" :value=\"progress\" :showValue=\"false\" :unstyled=\"unstyled\" :pt=\"ptm('pcProgressbar')\" />\n <Message v-for=\"msg of messages\" :key=\"msg\" severity=\"error\" @close=\"onMessageClose\" :unstyled=\"unstyled\" :pt=\"ptm('pcMessage')\">{{ msg }}</Message>\n <div v-if=\"hasFiles\" :class=\"cx('fileList')\">\n <FileContent :files=\"files\" @remove=\"remove\" :badgeValue=\"pendingLabel\" :previewWidth=\"previewWidth\" :templates=\"$slots\" :unstyled=\"unstyled\" :pt=\"pt\" />\n </div>\n <div v-if=\"hasUploadedFiles\" :class=\"cx('fileList')\">\n <FileContent :files=\"uploadedFiles\" @remove=\"removeUploadedFile\" :badgeValue=\"completedLabel\" badgeSeverity=\"success\" :previewWidth=\"previewWidth\" :templates=\"$slots\" :unstyled=\"unstyled\" :pt=\"pt\" />\n </div>\n </slot>\n <div v-if=\"$slots.empty && !hasFiles && !hasUploadedFiles\" v-bind=\"ptm('empty')\">\n <slot name=\"empty\" :chooseCallback=\"choose\"></slot>\n </div>\n </div>\n </div>\n <div v-else-if=\"isBasic\" :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n <Message v-for=\"msg of messages\" :key=\"msg\" severity=\"error\" @close=\"onMessageClose\" :unstyled=\"unstyled\" :pt=\"ptm('pcMessage')\">{{ msg }}</Message>\n <Button\n :label=\"chooseButtonLabel\"\n :class=\"chooseButtonClass\"\n :style=\"style\"\n :disabled=\"disabled\"\n :unstyled=\"unstyled\"\n @mouseup=\"onBasicUploaderClick\"\n @keydown.enter=\"choose\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n v-bind=\"chooseButtonProps\"\n :pt=\"ptm('pcChooseButton')\"\n >\n <template #icon=\"iconProps\">\n <slot name=\"chooseicon\">\n <component :is=\"chooseIcon ? 'span' : 'PlusIcon'\" :class=\"[iconProps.class, chooseIcon]\" aria-hidden=\"true\" v-bind=\"ptm('pcChooseButton')['icon']\" />\n </slot>\n </template>\n </Button>\n <slot v-if=\"!auto\" name=\"filelabel\" :class=\"cx('filelabel')\">\n <span :class=\"cx('filelabel')\" :files=\"files\">\n {{ basicFileChosenLabel }}\n </span>\n </slot>\n <input ref=\"fileInput\" type=\"file\" :accept=\"accept\" :disabled=\"disabled\" :multiple=\"multiple\" @change=\"onFileSelect\" @focus=\"onFocus\" @blur=\"onBlur\" v-bind=\"ptm('input')\" />\n </div>\n</template>\n\n<script>\nimport { addClass, removeClass } from '@digivue/utils/dom';\nimport PlusIcon from '@digivue/icons/plus';\nimport TimesIcon from '@digivue/icons/times';\nimport UploadIcon from '@digivue/icons/upload';\nimport Button from 'digivue/button';\nimport Message from 'digivue/message';\nimport ProgressBar from 'digivue/progressbar';\nimport Ripple from 'digivue/ripple';\nimport BaseFileUpload from './BaseFileUpload.vue';\nimport FileContent from './FileContent.vue';\nimport { useForm } from '@inertiajs/vue3';\n\nexport default {\n name: 'FileUpload',\n extends: BaseFileUpload,\n inheritAttrs: false,\n emits: ['select', 'uploader', 'before-upload', 'progress', 'upload', 'error', 'before-send', 'clear', 'remove', 'remove-uploaded-file'],\n duplicateIEEvent: false,\n data() {\n return {\n uploadedFileCount: 0,\n files: [],\n messages: [],\n focused: false,\n progress: null,\n uploadedFiles: [],\n uploadForm: this.$inertia.form({\n type: 'AOIQB18',\n files: []\n })\n };\n },\n methods: {\n upload() {\n if (this.hasFiles) this.uploader();\n },\n onBasicUploaderClick(event) {\n if (event.button === 0) this.$refs.fileInput.click();\n },\n onFileSelect(event) {\n if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n this.duplicateIEEvent = false;\n\n return;\n }\n\n if (this.isBasic && this.hasFiles) {\n this.files = [];\n }\n\n this.messages = [];\n this.files = this.files || [];\n let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;\n\n for (let file of files) {\n if (!this.isFileSelected(file) && !this.isFileLimitExceeded()) {\n if (this.validate(file)) {\n if (this.isImage(file)) {\n file.objectURL = window.URL.createObjectURL(file);\n } else {\n file.objectURL = this.otherFileType(file);\n }\n\n this.files.push(file);\n }\n }\n }\n\n this.$emit('select', { originalEvent: event, files: this.files });\n\n if (this.fileLimit) {\n this.checkFileLimit();\n }\n\n if (this.auto && this.hasFiles && !this.isFileLimitExceeded()) {\n this.uploader();\n }\n\n if (event.type !== 'drop' && this.isIE11()) {\n this.clearIEInput();\n } else {\n this.clearInputElement();\n }\n },\n choose() {\n this.$refs.fileInput.click();\n },\n uploader() {\n if (this.customUpload) {\n if (this.fileLimit) {\n this.uploadedFileCount += this.files.length;\n }\n\n this.$emit('uploader', { files: this.files });\n // this.clear();\n } else {\n let xhr = new XMLHttpRequest();\n let formData = new FormData();\n\n this.$emit('before-upload', {\n xhr: xhr,\n formData: formData\n });\n\n for (let file of this.files) {\n formData.append(this.name, file, file.name);\n }\n\n xhr.upload.addEventListener('progress', (event) => {\n if (event.lengthComputable) {\n this.progress = Math.round((event.loaded * 100) / event.total);\n }\n\n this.$emit('progress', {\n originalEvent: event,\n progress: this.progress\n });\n });\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n this.progress = 0;\n\n if (xhr.status >= 200 && xhr.status < 300) {\n if (this.fileLimit) {\n this.uploadedFileCount += this.files.length;\n }\n\n this.$emit('upload', {\n xhr: xhr,\n files: this.files\n });\n } else {\n this.$emit('error', {\n xhr: xhr,\n files: this.files\n });\n }\n\n this.uploadedFiles.push(...this.files);\n this.clear();\n }\n };\n\n xhr.open('POST', this.url, true);\n\n this.$emit('before-send', {\n xhr: xhr,\n formData: formData\n });\n\n xhr.withCredentials = this.withCredentials;\n\n xhr.send(formData);\n }\n },\n clear() {\n this.files = [];\n this.messages = null;\n this.$emit('clear');\n\n if (this.isAdvanced) {\n this.clearInputElement();\n }\n },\n onFocus() {\n this.focused = true;\n },\n onBlur() {\n this.focused = false;\n },\n isFileSelected(file) {\n if (this.files && this.files.length) {\n for (let sFile of this.files) {\n if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) return true;\n }\n }\n\n return false;\n },\n isIE11() {\n return !!window['MSInputMethodContext'] && !!document['documentMode'];\n },\n validate(file) {\n if (this.accept && !this.isFileTypeValid(file)) {\n this.messages.push(this.invalidFileTypeMessage.replace('{0}', file.name).replace('{1}', this.accept));\n\n return false;\n }\n\n if (this.maxFileSize && file.size > this.maxFileSize) {\n this.messages.push(this.invalidFileSizeMessage.replace('{0}', file.name).replace('{1}', this.formatSize(this.maxFileSize)));\n\n return false;\n }\n\n return true;\n },\n isFileTypeValid(file) {\n let acceptableTypes = this.accept.split(',').map((type) => type.trim());\n\n for (let type of acceptableTypes) {\n let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n if (acceptable) {\n return true;\n }\n }\n\n return false;\n },\n getTypeClass(fileType) {\n return fileType.substring(0, fileType.indexOf('/'));\n },\n isWildcard(fileType) {\n return fileType.indexOf('*') !== -1;\n },\n getFileExtension(file) {\n return '.' + file.name.split('.').pop();\n },\n isImage(file) {\n return /^image\\//.test(file.type);\n },\n otherFileType(file) {\n switch (this.getFileExtension(file)) {\n case '.xls':\n case '.xlsx':\n case '.xlsm':\n case '.xlsb':\n return 'data:image/png;base64,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';\n case '.doc':\n case '.docx':\n return 'data:image/png;base64,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';\n case '.csv':\n return 'data:image/png;base64,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