ADD: RichText
Added RichText system
This commit is contained in:
parent
311894d6d0
commit
b014d31577
9 changed files with 250 additions and 95 deletions
40
app/components/RichText/General.vue
Normal file
40
app/components/RichText/General.vue
Normal file
|
@ -0,0 +1,40 @@
|
|||
<template>
|
||||
<component :is="computedComponent.is" v-bind="computedComponent.props" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { RichText } from './Types'
|
||||
|
||||
type Props = {
|
||||
element : RichText
|
||||
}
|
||||
|
||||
const { element } = defineProps<Props>()
|
||||
|
||||
const computedComponent = computed(() => {
|
||||
let is : ReturnType<typeof resolveComponent> = {}
|
||||
|
||||
switch (element.type) {
|
||||
case 'plain':
|
||||
is = resolveComponent('RichTextPlain')
|
||||
break
|
||||
case 'p':
|
||||
is = resolveComponent('RichTextParagraph')
|
||||
break
|
||||
case 'span':
|
||||
is = resolveComponent('RichTextString')
|
||||
break
|
||||
case 'a':
|
||||
is = resolveComponent('RichTextLink')
|
||||
break
|
||||
case 'br':
|
||||
is = resolveComponent('RichTextNewLine')
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
return { is, props: { ...element } }
|
||||
})
|
||||
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue