Feat optimize preview (#156)
* pref: change code structure * feat(information): support gif preview * feat(information): support video preview
This commit is contained in:
@@ -24,6 +24,21 @@
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
<div
|
||||
v-else-if="model.previewType === 'video'"
|
||||
class="h-full w-full p-1 hover:p-0"
|
||||
>
|
||||
<video
|
||||
class="h-full w-full object-cover"
|
||||
playsinline
|
||||
autoplay
|
||||
loop
|
||||
disablepictureinpicture
|
||||
preload="none"
|
||||
>
|
||||
<source :src="preview" />
|
||||
</video>
|
||||
</div>
|
||||
<div v-else class="h-full w-full p-1 hover:p-0">
|
||||
<img class="h-full w-full rounded-lg object-cover" :src="preview" />
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,24 @@
|
||||
class="relative mx-auto w-full overflow-hidden rounded-lg preview-aspect"
|
||||
:style="$sm({ width: `${cardWidth}px` })"
|
||||
>
|
||||
<ResponseImage :src="preview" :error="noPreviewContent"></ResponseImage>
|
||||
<div v-if="previewType === 'video'" class="h-full w-full p-1 hover:p-0">
|
||||
<video
|
||||
class="h-full w-full object-cover"
|
||||
playsinline
|
||||
autoplay
|
||||
loop
|
||||
disablepictureinpicture
|
||||
preload="none"
|
||||
>
|
||||
<source :src="preview" />
|
||||
</video>
|
||||
</div>
|
||||
|
||||
<ResponseImage
|
||||
v-else
|
||||
:src="preview"
|
||||
:error="noPreviewContent"
|
||||
></ResponseImage>
|
||||
|
||||
<Carousel
|
||||
v-if="defaultContent.length > 1"
|
||||
@@ -95,6 +112,7 @@ const { cardWidth } = useConfig()
|
||||
|
||||
const {
|
||||
preview,
|
||||
previewType,
|
||||
typeOptions,
|
||||
currentType,
|
||||
defaultContent,
|
||||
|
||||
@@ -579,6 +579,10 @@ export const useModelPreviewEditor = (formInstance: ModelFormInstance) => {
|
||||
return content
|
||||
})
|
||||
|
||||
const previewType = computed(() => {
|
||||
return model.value.previewType
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
registerReset(() => {
|
||||
currentType.value = 'default'
|
||||
@@ -594,6 +598,7 @@ export const useModelPreviewEditor = (formInstance: ModelFormInstance) => {
|
||||
|
||||
const result = {
|
||||
preview,
|
||||
previewType,
|
||||
typeOptions,
|
||||
currentType,
|
||||
// default value
|
||||
|
||||
1
src/types/typings.d.ts
vendored
1
src/types/typings.d.ts
vendored
@@ -11,6 +11,7 @@ export interface BaseModel {
|
||||
pathIndex: number
|
||||
isFolder: boolean
|
||||
preview: string | string[]
|
||||
previewType: string
|
||||
description: string
|
||||
metadata: Record<string, string>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user