Tinymce

Trusted open source rich text editor for devs who want control

Tinymce

TinyMCE gives you total control over your rich text editing. Either create a fully customized experience via the APIs or take advantage of the out-of-the-box enterprise-grade editor to build your next generation web app.

And those use cases are just the start. TinyMCE is incredibly flexible, and with hundreds of APIs there’s likely a solution for your editor project. If you haven’t experienced Tiny Cloud, get started today. You’ll even get a free trial of our premium plugins – no credit card required!

							
                                
<template>
    <!-- you can create your api key through : https://www.tiny.cloud/auth/signup/ -->
    <editor
      api-key="your_tinymce_api_key"  
      :init="editorConfig"
      :initial-value="initialValue"
      @init="handleEditorInit"
    />
</template>

<script>
import Editor from "@tinymce/tinymce-vue";

export default {
  components: {
    Editor,
  },
  data() {
    return {
      initialValue:"Your initial text here",
    };
  },
  setup(props) {
    const editorRef = ref(null);

    const editorConfig = {
      height: 500,
      plugins: [
        "advlist autolink lists link image charmap print preview anchor",
        "searchreplace visualblocks code fullscreen",
        "insertdatetime media table paste code help wordcount",
      ],
      menu: {
        tc: {
          title: "Comments",
          items: "addcomment showcomments deleteallconversations",
        },
      },
      plugins: [
        "advlist autolink lists link image charmap print preview anchor",
        "searchreplace visualblocks code fullscreen",
        "insertdatetime media table paste code help wordcount",
      ],
      menubar: "file edit view insert format tools table tc help",
      toolbar:
        "undo redo | " +
        "bold italic underline strikethrough backcolor | fontselect fontsizeselect formatselect | alignleft aligncenter " +
        "alignright alignjustify | bullist numlist outdent indent | " +
        "removeformat | help",
      autosave_ask_before_unload: true,
      autosave_interval: "30s",
      autosave_prefix: "{path}{query}-{id}-",
      autosave_restore_when_empty: false,
      autosave_retention: "2m",
      image_advtab: true,
      link_list: [
        {
          title: "My page 1",
          value: "https://www.tiny.cloud",
        },
        {
          title: "My page 2",
          value: "http://www.moxiecode.com",
        },
      ],
      image_list: [
        {
          title: "My page 1",
          value: "https://www.tiny.cloud",
        },
        {
          title: "My page 2",
          value: "http://www.moxiecode.com",
        },
      ],
      image_class_list: [
        { title: "None", value: "" },
        { title: "Some class", value: "class-name" },
      ],
      content_style: "body { font-family:Helvetica,Arial,sans-serif; font-size:14px }",
      templates: [
        {
          title: "New Table",
          description: "creates a new table",
          content:
            '<div class="mceTmpl"><table width="98%%"  border="0" cellspacing="0" cellpadding="0"><tr><th scope="col"> </th><th scope="col"> </th></tr><tr><td> </td><td> </td></tr></table></div>',
        },
        {
          title: "Starting my story",
          description: "A cure for writers block",
          content: "Once upon a time...",
        },
        {
          title: "New list with dates",
          description: "New List with dates",
          content:
            '<div class="mceTmpl"><span class="cdate">cdate</span><br /><span class="mdate">mdate</span><h2>My List</h2><ul><li></li><li></li></ul></div>',
        },
      ],
      template_cdate_format: "[Date Created (CDATE): %m/%d/%Y : %H:%M:%S]",
      template_mdate_format: "[Date Modified (MDATE): %m/%d/%Y : %H:%M:%S]",
      image_caption: true,
      quickbars_selection_toolbar:
        "bold italic | quicklink h2 h3 blockquote quickimage quicktable",
      noneditable_noneditable_class: "mceNonEditable",
      toolbar_mode: "sliding",
      spellchecker_ignore_list: ["Ephox", "Moxiecode"],
      tinycomments_mode: "embedded",
      // ... all the other init configuration options
    };

    const handleEditorInit = (evt, editor) => {
      editorRef.value = editor;
    };

    return {
      editorRef,
      editorConfig,
      handleEditorInit,
    };
  },
};
</script>