|
|
@@ -1,10 +1,11 @@
|
|
|
<script lang="ts">
|
|
|
+import type { Content } from '../stores/content'
|
|
|
export default {
|
|
|
props:['jsonContent'],
|
|
|
data: () => {
|
|
|
const rawHtml: string = ""
|
|
|
return{
|
|
|
- rawHtml
|
|
|
+ rawHtml
|
|
|
}
|
|
|
},
|
|
|
setup(props){
|
|
|
@@ -14,13 +15,16 @@
|
|
|
|
|
|
},
|
|
|
methods: {
|
|
|
- reloadContent(el: any, jsonContent : Array<any>){
|
|
|
+ reloadContent(el: HTMLElement, jsonContent : Array<Content>){
|
|
|
if(jsonContent && jsonContent.length > 0){
|
|
|
for(const contentItem of jsonContent){
|
|
|
- let itemEl = null
|
|
|
+ let itemEl:HTMLElement | null = null
|
|
|
switch(contentItem?.type){
|
|
|
case "text":
|
|
|
let contentText = contentItem?.text
|
|
|
+ if(!contentText){
|
|
|
+ contentText = ""
|
|
|
+ }
|
|
|
contentText = contentText.replace(/\n/g, "<br />");
|
|
|
if(contentItem.bold){
|
|
|
const bold = document.createElement("b")
|
|
|
@@ -50,14 +54,14 @@
|
|
|
break
|
|
|
case "link":
|
|
|
itemEl = document.createElement("a")
|
|
|
- itemEl.href = contentItem.url
|
|
|
- el.append(itemEl)
|
|
|
+ itemEl.setAttribute("href", contentItem.url || "#")
|
|
|
+ el.append(itemEl!)
|
|
|
break
|
|
|
|
|
|
|
|
|
}
|
|
|
if(contentItem.children && contentItem.children.length > 0){
|
|
|
- this.reloadContent(itemEl, contentItem.children)
|
|
|
+ this.reloadContent(itemEl!, contentItem.children)
|
|
|
}
|
|
|
}
|
|
|
}
|