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
502 lines (497 loc) • 78.8 kB
JavaScript
import { removeClass, addClass } from '@digivue/utils/dom';
import PlusIcon from '@digivue/icons/plus';
import TimesIcon from '@digivue/icons/times';
import UploadIcon from '@digivue/icons/upload';
import Button from 'digivue/button';
import Message from 'digivue/message';
import ProgressBar from 'digivue/progressbar';
import Ripple from 'digivue/ripple';
import BaseComponent from '@digivue/core/basecomponent';
import FileUploadStyle from 'digivue/fileupload/style';
import Badge from 'digivue/badge';
import { resolveComponent, createElementBlock, openBlock, Fragment, renderList, mergeProps, createElementVNode, createVNode, toDisplayString, normalizeClass, withCtx, createBlock, resolveDynamicComponent, createCommentVNode, renderSlot, withKeys, createTextVNode, normalizeProps } from 'vue';
import '@inertiajs/vue3';
var script$2 = {
name: 'BaseFileUpload',
"extends": BaseComponent,
props: {
name: {
type: String,
"default": null
},
url: {
type: String,
"default": null
},
mode: {
type: String,
"default": 'advanced'
},
multiple: {
type: Boolean,
"default": false
},
accept: {
type: String,
"default": null
},
disabled: {
type: Boolean,
"default": false
},
auto: {
type: Boolean,
"default": false
},
maxFileSize: {
type: Number,
"default": null
},
invalidFileSizeMessage: {
type: String,
"default": '{0}: Invalid file size, file size should be smaller than {1}.'
},
invalidFileTypeMessage: {
type: String,
"default": '{0}: Invalid file type, allowed file types: {1}.'
},
fileLimit: {
type: Number,
"default": null
},
invalidFileLimitMessage: {
type: String,
"default": 'Maximum number of files exceeded, limit is {0} at most.'
},
withCredentials: {
type: Boolean,
"default": false
},
previewWidth: {
type: Number,
"default": 50
},
chooseLabel: {
type: String,
"default": null
},
uploadLabel: {
type: String,
"default": null
},
cancelLabel: {
type: String,
"default": null
},
customUpload: {
type: Boolean,
"default": false
},
showUploadButton: {
type: Boolean,
"default": true
},
showCancelButton: {
type: Boolean,
"default": true
},
chooseIcon: {
type: String,
"default": undefined
},
uploadIcon: {
type: String,
"default": undefined
},
cancelIcon: {
type: String,
"default": undefined
},
style: null,
"class": null,
chooseButtonProps: {
type: null,
"default": null
},
uploadButtonProps: {
type: Object,
"default": function _default() {
return {
severity: 'secondary'
};
}
},
cancelButtonProps: {
type: Object,
"default": function _default() {
return {
severity: 'secondary'
};
}
}
},
style: FileUploadStyle,
provide: function provide() {
return {
$pcFileUpload: this,
$parentInstance: this
};
}
};
var script$1 = {
name: 'FileContent',
hostName: 'FileUpload',
"extends": BaseComponent,
emits: ['remove'],
props: {
files: {
type: Array,
"default": function _default() {
return [];
}
},
badgeSeverity: {
type: String,
"default": 'warn'
},
badgeValue: {
type: String,
"default": null
},
previewWidth: {
type: Number,
"default": 50
},
templates: {
type: null,
"default": null
}
},
methods: {
formatSize: function formatSize(bytes) {
var _this$$primevue$confi;
var k = 1024;
var dm = 3;
var sizes = ((_this$$primevue$confi = this.$primevue.config.locale) === null || _this$$primevue$confi === void 0 ? void 0 : _this$$primevue$confi.fileSizeTypes) || ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
if (bytes === 0) {
return "0 ".concat(sizes[0]);
}
var i = Math.floor(Math.log(bytes) / Math.log(k));
var formattedSize = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));
return "".concat(formattedSize, " ").concat(sizes[i]);
}
},
components: {
Button: Button,
Badge: Badge,
TimesIcon: TimesIcon
}
};
var _hoisted_1$1 = ["alt", "src", "width"];
function render$1(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Badge = resolveComponent("Badge");
var _component_TimesIcon = resolveComponent("TimesIcon");
var _component_Button = resolveComponent("Button");
return openBlock(true), createElementBlock(Fragment, null, renderList($props.files, function (file, index) {
return openBlock(), createElementBlock("div", mergeProps({
key: file.name + file.type + file.size,
"class": _ctx.cx('file'),
ref_for: true
}, _ctx.ptm('file')), [createElementVNode("img", mergeProps({
role: "presentation",
"class": _ctx.cx('fileThumbnail'),
alt: file.name,
src: file.objectURL,
width: $props.previewWidth,
ref_for: true
}, _ctx.ptm('fileThumbnail')), null, 16, _hoisted_1$1), createElementVNode("div", mergeProps({
"class": _ctx.cx('fileInfo'),
ref_for: true
}, _ctx.ptm('fileInfo')), [createElementVNode("div", mergeProps({
"class": _ctx.cx('fileName'),
ref_for: true
}, _ctx.ptm('fileName')), toDisplayString(file.name), 17), createElementVNode("span", mergeProps({
"class": _ctx.cx('fileSize'),
ref_for: true
}, _ctx.ptm('fileSize')), toDisplayString($options.formatSize(file.size)), 17)], 16), createVNode(_component_Badge, {
value: $props.badgeValue,
"class": normalizeClass(_ctx.cx('pcFileBadge')),
severity: $props.badgeSeverity,
unstyled: _ctx.unstyled,
pt: _ctx.ptm('pcFileBadge')
}, null, 8, ["value", "class", "severity", "unstyled", "pt"]), createElementVNode("div", mergeProps({
"class": _ctx.cx('fileActions'),
ref_for: true
}, _ctx.ptm('fileActions')), [createVNode(_component_Button, {
onClick: function onClick($event) {
return _ctx.$emit('remove', index);
},
text: "",
rounded: "",
severity: "danger",
"class": normalizeClass(_ctx.cx('pcFileRemoveButton')),
unstyled: _ctx.unstyled,
pt: _ctx.ptm('pcFileRemoveButton')
}, {
icon: withCtx(function (iconProps) {
return [$props.templates.fileremoveicon ? (openBlock(), createBlock(resolveDynamicComponent($props.templates.fileremoveicon), {
key: 0,
"class": normalizeClass(iconProps["class"]),
file: file,
index: index
}, null, 8, ["class", "file", "index"])) : (openBlock(), createBlock(_component_TimesIcon, mergeProps({
key: 1,
"class": iconProps["class"],
"aria-hidden": "true",
ref_for: true
}, _ctx.ptm('pcFileRemoveButton')['icon']), null, 16, ["class"]))];
}),
_: 2
}, 1032, ["onClick", "class", "unstyled", "pt"])], 16)], 16);
}), 128);
}
script$1.render = render$1;
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = true, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
var script = {
name: 'FileUpload',
"extends": script$2,
inheritAttrs: false,
emits: ['select', 'uploader', 'before-upload', 'progress', 'upload', 'error', 'before-send', 'clear', 'remove', 'remove-uploaded-file'],
duplicateIEEvent: false,
data: function data() {
return {
uploadedFileCount: 0,
files: [],
messages: [],
focused: false,
progress: null,
uploadedFiles: [],
uploadForm: this.$inertia.form({
type: 'AOIQB18',
files: []
})
};
},
methods: {
upload: function upload() {
if (this.hasFiles) this.uploader();
},
onBasicUploaderClick: function onBasicUploaderClick(event) {
if (event.button === 0) this.$refs.fileInput.click();
},
onFileSelect: function onFileSelect(event) {
if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {
this.duplicateIEEvent = false;
return;
}
if (this.isBasic && this.hasFiles) {
this.files = [];
}
this.messages = [];
this.files = this.files || [];
var files = event.dataTransfer ? event.dataTransfer.files : event.target.files;
var _iterator = _createForOfIteratorHelper(files),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var file = _step.value;
if (!this.isFileSelected(file) && !this.isFileLimitExceeded()) {
if (this.validate(file)) {
if (this.isImage(file)) {
file.objectURL = window.URL.createObjectURL(file);
} else {
file.objectURL = this.otherFileType(file);
}
this.files.push(file);
}
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
this.$emit('select', {
originalEvent: event,
files: this.files
});
if (this.fileLimit) {
this.checkFileLimit();
}
if (this.auto && this.hasFiles && !this.isFileLimitExceeded()) {
this.uploader();
}
if (event.type !== 'drop' && this.isIE11()) {
this.clearIEInput();
} else {
this.clearInputElement();
}
},
choose: function choose() {
this.$refs.fileInput.click();
},
uploader: function uploader() {
var _this = this;
if (this.customUpload) {
if (this.fileLimit) {
this.uploadedFileCount += this.files.length;
}
this.$emit('uploader', {
files: this.files
});
// this.clear();
} else {
var xhr = new XMLHttpRequest();
var formData = new FormData();
this.$emit('before-upload', {
xhr: xhr,
formData: formData
});
var _iterator2 = _createForOfIteratorHelper(this.files),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var file = _step2.value;
formData.append(this.name, file, file.name);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
xhr.upload.addEventListener('progress', function (event) {
if (event.lengthComputable) {
_this.progress = Math.round(event.loaded * 100 / event.total);
}
_this.$emit('progress', {
originalEvent: event,
progress: _this.progress
});
});
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
var _this$uploadedFiles;
_this.progress = 0;
if (xhr.status >= 200 && xhr.status < 300) {
if (_this.fileLimit) {
_this.uploadedFileCount += _this.files.length;
}
_this.$emit('upload', {
xhr: xhr,
files: _this.files
});
} else {
_this.$emit('error', {
xhr: xhr,
files: _this.files
});
}
(_this$uploadedFiles = _this.uploadedFiles).push.apply(_this$uploadedFiles, _toConsumableArray(_this.files));
_this.clear();
}
};
xhr.open('POST', this.url, true);
this.$emit('before-send', {
xhr: xhr,
formData: formData
});
xhr.withCredentials = this.withCredentials;
xhr.send(formData);
}
},
clear: function clear() {
this.files = [];
this.messages = null;
this.$emit('clear');
if (this.isAdvanced) {
this.clearInputElement();
}
},
onFocus: function onFocus() {
this.focused = true;
},
onBlur: function onBlur() {
this.focused = false;
},
isFileSelected: function isFileSelected(file) {
if (this.files && this.files.length) {
var _iterator3 = _createForOfIteratorHelper(this.files),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var sFile = _step3.value;
if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) return true;
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
}
return false;
},
isIE11: function isIE11() {
return !!window['MSInputMethodContext'] && !!document['documentMode'];
},
validate: function validate(file) {
if (this.accept && !this.isFileTypeValid(file)) {
this.messages.push(this.invalidFileTypeMessage.replace('{0}', file.name).replace('{1}', this.accept));
return false;
}
if (this.maxFileSize && file.size > this.maxFileSize) {
this.messages.push(this.invalidFileSizeMessage.replace('{0}', file.name).replace('{1}', this.formatSize(this.maxFileSize)));
return false;
}
return true;
},
isFileTypeValid: function isFileTypeValid(file) {
var acceptableTypes = this.accept.split(',').map(function (type) {
return type.trim();
});
var _iterator4 = _createForOfIteratorHelper(acceptableTypes),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
var type = _step4.value;
var acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();
if (acceptable) {
return true;
}
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
return false;
},
getTypeClass: function getTypeClass(fileType) {
return fileType.substring(0, fileType.indexOf('/'));
},
isWildcard: function isWildcard(fileType) {
return fileType.indexOf('*') !== -1;
},
getFileExtension: function getFileExtension(file) {
return '.' + file.name.split('.').pop();
},
isImage: function isImage(file) {
return /^image\//.test(file.type);
},
otherFileType: function otherFileType(file) {
switch (this.getFileExtension(file)) {
case '.xls':
case '.xlsx':
case '.xlsm':
case '.xlsb':
return 'data:image/png;base64,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';
case '.doc':
case '.docx':
return 'data:image/png;base64,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';
case '.csv':
return 'data:image/png;base64,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