<template> <div> <vue-editor :id="editorId" v-model="content" :editorToolbar="customToolbar" :disabled="disabled"></vue-editor> </div> </template> <script> import { VueEditor } from "vue2-editor"; export default { name: 'akaunting-html-editor', components: { VueEditor }, props: { name: { type: String, default: '', description: 'The name of the field', }, value: { type: String, default: '' }, model: { type: [String, Number, Array, Object], default: '', description: "Selectbox selected model" }, disabled: { type: Boolean, default: false, description: "Selectbox disabled status" }, }, data () { return { content: null, editorId: null, customToolbar: [ ["bold", "italic", "underline"], [{ list: "ordered" }, { list: "bullet" }], ], } }, methods: { randomString() { let text = ""; let possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; for (let i = 0; i < 5; i++) { text += possible.charAt(Math.floor(Math.random() * possible.length)); } return text; }, }, async mounted () { this.editorId = this.randomString(); this.content = this.value; }, watch: { value (newVal) { if (newVal !== this.content) { this.content = newVal; } }, model (newVal) { if (newVal !== this.content) { this.content = newVal; } }, content (newVal) { // #337y1z3 This issue reason <p> tag broken email template newVal = newVal.replace(/(<p[^>]+?>|<p>|<\/p>)/img, ""); this.$emit('input', newVal); }, }, } </script>