63 lines
		
	
	
		
			992 B
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			992 B
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div
 | |
|     class="rich-text"
 | |
|     v-html="formatedContent"
 | |
|   />
 | |
| </template>
 | |
| 
 | |
| <script lang="ts">
 | |
| import vue from '../adapter-vue';
 | |
| import { marked } from 'marked';
 | |
| import { customerServicePayloadType } from '../interface';
 | |
| const { computed } = vue;
 | |
| 
 | |
| interface Props {
 | |
|   payload: customerServicePayloadType;
 | |
| }
 | |
| 
 | |
| export default {
 | |
|   props: {
 | |
|     payload: {
 | |
|       type: Object as () => customerServicePayloadType,
 | |
|       default: () => ({}),
 | |
|     },
 | |
|   },
 | |
|   setup(props: Props) {
 | |
|     const formatedContent = computed(() => {
 | |
|       let richtext = marked.parse(props.payload.content);
 | |
|       const regex = new RegExp('<img', 'gi');
 | |
|       richtext = richtext.replace(regex, `<img style="max-width: 100%;"`);
 | |
|       return richtext;
 | |
|     });
 | |
|     return {
 | |
|       props,
 | |
|       formatedContent,
 | |
|     };
 | |
|   },
 | |
| };
 | |
| </script>
 | |
| <style lang="scss">
 | |
| .rich-text {
 | |
|   div,
 | |
|   ul,
 | |
|   ol,
 | |
|   dt,
 | |
|   dd,
 | |
|   li,
 | |
|   dl,
 | |
|   h1,
 | |
|   h2,
 | |
|   h3,
 | |
|   h4,
 | |
|   p,
 | |
|   img,
 | |
|   a {
 | |
|     max-width: 100%;
 | |
|   }
 | |
| 
 | |
|   a {
 | |
|     color: blue;
 | |
|   }
 | |
| }
 | |
| </style>
 |