primevue-mirror/apps/showcase/doc/fileupload/CustomUploadDoc.vue

94 lines
2.7 KiB
Vue

<template>
<DocSectionText v-bind="$attrs">
<p>Uploading implementation can be overridden by enabling <i>customUpload</i> property. This sample, displays the image on the client side with a grayscale filter.</p>
</DocSectionText>
<div class="card flex flex-col items-center gap-6">
<FileUpload mode="basic" @select="onFileSelect" customUpload auto severity="secondary" class="p-button-outlined" />
<img v-if="src" :src="src" alt="Image" class="shadow-md rounded-xl w-full sm:w-64" style="filter: grayscale(100%)" />
</div>
<DocSectionCode :code="code" />
</template>
<script>
export default {
data() {
return {
src: null,
code: {
basic: `
<FileUpload mode="basic" @select="onFileSelect" customUpload auto severity="secondary" class="p-button-outlined" />
<img v-if="src" :src="src" alt="Image" class="shadow-md rounded-xl w-full sm:w-64" style="filter: grayscale(100%)" />
`,
options: `
<template>
<div class="card flex flex-col items-center gap-6">
<FileUpload mode="basic" @select="onFileSelect" customUpload auto severity="secondary" class="p-button-outlined" />
<img v-if="src" :src="src" alt="Image" class="shadow-md rounded-xl w-full sm:w-64" style="filter: grayscale(100%)" />
</div>
</template>
<script>
export default {
data() {
return {
src: null
}
},
methods: {
onFileSelect(event) {
const file = event.files[0];
const reader = new FileReader();
reader.onload = async (e) => {
this.src = e.target.result;
};
reader.readAsDataURL(file);
}
}
};
<\/script>
`,
composition: `
<template>
<div class="card flex flex-col items-center gap-6">
<FileUpload mode="basic" @select="onFileSelect" customUpload auto severity="secondary" class="p-button-outlined" />
<img v-if="src" :src="src" alt="Image" class="shadow-md rounded-xl w-full sm:w-64" style="filter: grayscale(100%)" />
</div>
</template>
<script setup>
import { ref } from "vue";
const src = ref(null);
function onFileSelect(event) {
const file = event.files[0];
const reader = new FileReader();
reader.onload = async (e) => {
src.value = e.target.result;
};
reader.readAsDataURL(file);
}
<\/script>
`
}
};
},
methods: {
onFileSelect(event) {
const file = event.files[0];
const reader = new FileReader();
reader.onload = async (e) => {
this.src = e.target.result;
};
reader.readAsDataURL(file);
}
}
};
</script>