Skip to content

Instantly share code, notes, and snippets.

@winterggg
Created April 11, 2023 14:03
Show Gist options
  • Save winterggg/6c581d1a8b2559bd3798f5b8cd208ac3 to your computer and use it in GitHub Desktop.
Save winterggg/6c581d1a8b2559bd3798f5b8cd208ac3 to your computer and use it in GitHub Desktop.
demo: wrap a vue2 component
<template>
<div>
<raw-upload v-bind="$attrs" v-on="$listeners" :on-preview="previewHandler">
<slot v-for="(_, slotName) in $slots" :name="slotName" :slot="slotName" />
<template v-for="(_, slotName) in $scopedSlots" :slot="slotName" slot-scope="scope">
<slot :name="slotName" v-bind="scope" />
</template>
</raw-upload>
<dlw-viewer v-if="enhanced" ref="viewer" />
</div>
</template>
<script>
import DlwViewer from '@/components/dlw-viewer/dlw-viewer.vue'
export default {
name: 'ElUpload',
components: {
DlwViewer
},
inheritAttrs: false,
props: {
enhanced: {
type: Boolean,
default: true
}
},
methods: {
onPreview (file) {
const url = (file.response && file.response.url) || file.url
this.$refs.viewer.preview(url, true)
}
},
computed: {
previewHandler () {
return this.enhanced ? this.onPreview : this.$attrs['on-preview']
}
}
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment