Sha256: 6ed2c9bdbadd2afd8df1beb69b1d219be27d21ee37c202c9b228eae45547d235
Contents?: true
Size: 1.45 KB
Versions: 110
Compression:
Stored size: 1.45 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-h-28 ariadne-max-h-48 ariadne-p-2 ariadne-rounded-lg ariadne-overflow-y-auto focus:ariadne-outline-none', }, }, parseOptions: { preserveWhitespace: true, }, }) const tiptapValueContainer = editorElement.previousElementSibling if (tiptapValueContainer) { const parentForm = editorElement.closest('form') parentForm?.addEventListener('submit', () => { tiptapValueContainer.setAttribute('value', pmEditor.getText() || '') pmEditor.commands.clearContent() // TODO: test this }) } } } }
Version data entries
110 entries across 110 versions & 1 rubygems