feat(components): create tinymce wrapper component
configs have also been created
This commit is contained in:
parent
1ecaf7fd1d
commit
1b14d2b702
36
components/baseEditor.vue
Normal file
36
components/baseEditor.vue
Normal file
@ -0,0 +1,36 @@
|
||||
<script setup lang="ts">
|
||||
import TinymceEditor from "@tinymce/tinymce-vue"
|
||||
import {useDark} from "@vueuse/core"
|
||||
import { NamePath } from "ant-design-vue/es/form/interface";
|
||||
import {Field as VeeField} from "vee-validate"
|
||||
import tinymce from "tinymce"
|
||||
const props = defineProps<{
|
||||
name: string;
|
||||
init: any;
|
||||
label: string;
|
||||
val?: string;
|
||||
width?: number;
|
||||
dark?: boolean;
|
||||
wrapCol?: any;
|
||||
}>()
|
||||
onMounted(() => {
|
||||
// if(typeof navigator != undefined) {
|
||||
// tinymce.init({...props.init, selector: `textarea[${props.name}]`})
|
||||
// }
|
||||
|
||||
})
|
||||
// const isDark = useDark()
|
||||
// console.log("darky")
|
||||
</script>
|
||||
<template>
|
||||
<ClientOnly>
|
||||
<vee-field :name="props.name" v-slot="{errorMessage, field, value}" :value="val">
|
||||
<a-form-item :validate-status="!!errorMessage ? 'error' : undefined" :name="props.name" :label="props.label" :value="val">
|
||||
<tinymce-editor v-bind="field" width="100%" cloud-channel="6-dev" api-key="qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc"
|
||||
:init="{...props.init,
|
||||
skin: props.dark ? 'oxide-dark' : 'oxide',
|
||||
content_css: props.dark ? 'dark' : 'default'}"/>
|
||||
</a-form-item>
|
||||
</vee-field>
|
||||
</ClientOnly>
|
||||
</template>
|
136
lib/client/editorConfig.ts
Normal file
136
lib/client/editorConfig.ts
Normal file
@ -0,0 +1,136 @@
|
||||
export const fancy = {
|
||||
branding: false,
|
||||
selector: 'textarea#txt',
|
||||
menubar: false,
|
||||
elementpath: false,
|
||||
formats: {
|
||||
bold: {
|
||||
inline: 'b'
|
||||
},
|
||||
italic: {
|
||||
inline: 'i'
|
||||
},
|
||||
underline: {
|
||||
inline: 'u'
|
||||
}
|
||||
},
|
||||
schema: 'html5',
|
||||
custom_colors: true,
|
||||
style_formats: [
|
||||
// { title: 'Image formats' },
|
||||
{
|
||||
title: 'Blocks',
|
||||
items: [
|
||||
{ title: 'p', block: 'p' },
|
||||
{ title: 'div', block: 'div' },
|
||||
{ title: 'pre', block: 'pre' }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: "Image",
|
||||
items: [
|
||||
{ title: 'Image Left', selector: 'img', styles: { 'float': 'left', 'margin': '0 10px 0 10px' } },
|
||||
{ title: 'Image Right', selector: 'img', styles: { 'float': 'right', 'margin': '0 0 10px 10px' } },
|
||||
{ title: 'Rounded corners', styles: { 'border-radius': '0.7em'} }
|
||||
]
|
||||
},
|
||||
{ title: 'Code/Monospace', selector: "p,div,h1,h2,h3,h4,h5,h6", classes: [ 'font-mono' ] },
|
||||
],
|
||||
toolbar_groups: {
|
||||
alignment: {
|
||||
icon: 'align-left',
|
||||
tooltip: "Alignment",
|
||||
items: "alignleft aligncenter alignright | alignjustify"
|
||||
},
|
||||
heading: {
|
||||
icon: 'format',
|
||||
tooltip: 'Header',
|
||||
items: 'h1 h2 h3 h4 h5 h6'
|
||||
}
|
||||
},
|
||||
toolbar: "undo redo | paste | bold italic underline | hr image link | forecolor styles | heading alignment | code",
|
||||
contextmenu: 'bold italic underline | hr | link | image | paste',
|
||||
external_plugins: {
|
||||
"mentions": "/plugins/mentions/plugin.min.js"
|
||||
},
|
||||
plugins:
|
||||
`advlist autolink lists link image charmap preview anchor searchreplace visualblocks advcode fullscreen insertdatetime media table help wordcount save mentions`.split(" ")
|
||||
}
|
||||
export const comment = {
|
||||
branding: false,
|
||||
height: 200,
|
||||
menubar: false,
|
||||
elementpath: false,
|
||||
formats: {
|
||||
bold: {
|
||||
inline: 'b'
|
||||
},
|
||||
italic: {
|
||||
inline: 'i'
|
||||
},
|
||||
underline: {
|
||||
inline: 'u'
|
||||
}
|
||||
},
|
||||
external_plugins: {
|
||||
"mentions": "/plugins/mentions/plugin.min.js"
|
||||
},
|
||||
schema: 'html5',
|
||||
plugins:
|
||||
`advlist autolink lists link image charmap preview anchor searchreplace visualblocks code fullscreen insertdatetime media table code help save mentions`.split(" "),
|
||||
toolbar: 'bold italic underline | link',
|
||||
contextmenu: 'bold italic underline | paste | link'
|
||||
}
|
||||
|
||||
export const story = {
|
||||
branding: false,
|
||||
selector: 'textarea#txt',
|
||||
height: 500,
|
||||
menubar: false,
|
||||
elementpath: false,
|
||||
formats: {
|
||||
bold: {
|
||||
inline: 'b'
|
||||
},
|
||||
italic: {
|
||||
inline: 'i'
|
||||
},
|
||||
underline: {
|
||||
inline: 'u'
|
||||
}
|
||||
},
|
||||
content_css: ["/test.css", "/quickfix.css"],
|
||||
schema: 'html5',
|
||||
plugins:
|
||||
`advlist autolink lists link image charmap preview anchor searchreplace visualblocks code fullscreen insertdatetime media table advcode help wordcount save`.split(" "),
|
||||
toolbar: 'undo redo | paste |' +
|
||||
'bold italic underline | hr | alignleft aligncenter ' +
|
||||
'alignright alignjustify | ' +
|
||||
'| code',
|
||||
contextmenu: 'bold italic underline | hr | paste | link'
|
||||
}
|
||||
export const bare = {
|
||||
branding: false,
|
||||
height: 200,
|
||||
menubar: false,
|
||||
elementpath: false,
|
||||
formats: {
|
||||
bold: {
|
||||
inline: 'b'
|
||||
},
|
||||
italic: {
|
||||
inline: 'i'
|
||||
},
|
||||
underline: {
|
||||
inline: 'u'
|
||||
}
|
||||
},
|
||||
schema: 'html5',
|
||||
external_plugins: {
|
||||
"mentions": "/plugins/mentions/plugin.min.js"
|
||||
},
|
||||
plugins:
|
||||
`advlist autolink lists link image charmap preview anchor searchreplace visualblocks code fullscreen insertdatetime media table advcode help save mentions`.split(" "),
|
||||
toolbar: 'bold italic underline | hr link',
|
||||
contextmenu: 'bold italic underline | paste | hr link'
|
||||
}
|
Loading…
Reference in New Issue
Block a user