Sha256: a039269a3d9519b06bc9ee4e4501605677d36220875155fa4f6de812f8322a46
Contents?: true
Size: 1.27 KB
Versions: 8
Compression:
Stored size: 1.27 KB
Contents
import {Controller} from '@hotwired/stimulus' import {Editor} from '@tiptap/core' import {Document} from '@tiptap/extension-document' import {Paragraph} from '@tiptap/extension-paragraph' import {Text} from '@tiptap/extension-text' import DropCursor from '@tiptap/extension-dropcursor' import GapCursor from '@tiptap/extension-gapcursor' import {History} from '@tiptap/extension-history' export default class RichTextArea extends Controller { static targets = ['editor'] declare readonly editorTargets: [HTMLDivElement] connect() { for (const editorElement of this.editorTargets) { const pmEditor = new Editor({ extensions: [DropCursor, GapCursor, History, Document, Paragraph, Text], content: '', injectCSS: false, element: editorElement, editorProps: { attributes: { class: 'ariadne-p-3' } }, parseOptions: { preserveWhitespace: true } }) const tiptapValueContainer = editorElement.previousElementSibling if (tiptapValueContainer) { const parentForm = editorElement.closest('form') parentForm?.addEventListener('submit', () => { tiptapValueContainer.setAttribute('value', pmEditor.getText() || '') }) } } } }
Version data entries
8 entries across 8 versions & 1 rubygems