Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tiptap Editor Bundle

CI Packagist Version Packagist Downloads License PHP Symfony

Found this useful? Install from Packagist · Star the repo on GitHub.

Symfony form type for rich text using Tiptap (ProseMirror). Stores HTML in the underlying textarea — comparable to embedding CKEditor-style WYSIWYG fields. Assets are built with Vite (IIFE bundle in Resources/public/). FrankenPHP demos: runtime is selected with FRANKENPHP_MODE (worker default, or classic for per-request PHP / hot-reload). See docs/DEMO-FRANKENPHP.md.

FrankenPHP Friendly Worker Mode

This bundle is FrankenPHP worker mode friendly.

Features

  • TiptapEditorType extending TextareaType — value is HTML string.
  • Optional formatting toolbar (bold, italic, bullet/ordered lists, undo/redo); notion variant adds bubble/floating menus (link, image, embed iframe).
  • Twig themes aligned with common Symfony layouts (Bootstrap 3–5, Foundation, Tailwind 2, table layout).
  • nowo_tiptap_editor_asset_path() / nowo_tiptap_editor_asset_package() Twig helpers for the Symfony asset package nowo_tiptap_editor.
  • pnpm + Vite frontend; Vitest on the bundle logger and the widget lifecycle (custom element).
  • Form submit: before POST, the bundle syncs ProseMirror HTML into each hidden Symfony textarea (capture-phase submit); see Usage.
  • Dockerfile + Makefile workflow matching other Nowo bundles.
  • Demos: Symfony 7 & 8 under demo/ (FrankenPHP).

Quick start

composer require nowo-tech/tiptap-editor-bundle:^1.0
php bin/console assets:install public

In Twig layout:

<script src="{{ asset(nowo_tiptap_editor_asset_path('tiptap-editor.js'), nowo_tiptap_editor_asset_package()) }}"></script>
use Nowo\TiptapEditorBundle\Form\TiptapEditorType;

$builder->add('article', TiptapEditorType::class, ['label' => 'Article']);

Demo preview

Editor variants in the Symfony demo app (profiles from config/packages/nowo_tiptap_editor.yaml: full reference, simple, notion, agent, headless). Start a demo with make -C demo up-symfony8 or make -C demo up-symfony7, then open the Variants route in the browser.

Editor variants — Symfony demo screenshot

Development

Requirements: Docker (recommended), or PHP 8.2+ with Composer + pnpm locally.

make up           # composer + pnpm install in container
make assets       # vite build → src/Resources/public/tiptap-editor.js
make test         # PHPUnit
make test-ts      # Vitest + coverage (logger)
make qa           # cs-check + phpunit
make demo-smoke   # REQ-TEST-011: FrankenPHP demo HTTP 200

Demos:

make -C demo up-symfony8
# http://localhost:8011

Documentation

Additional documentation

Tests and coverage

Layer Target / notes
PHP 100% line coverage on bundle src/ (PHPUnit); confirm with composer test-coverage or make test-coverage.
TypeScript Vitest thresholds on shared utilities (see vitest.config.ts); confirm with pnpm run test:coverage or make test-ts.

CI runs PHPUnit (matrix), PHPStan, PHP-CS-Fixer, and Vitest coverage on pushes and pull requests.

License

MIT — see LICENSE.

About

Symfony form type for rich text using Tiptap (https://tiptap.dev/) (ProseMirror). Stores HTML in the underlying textarea — comparable to embedding CKEditor-style WYSIWYG fields.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages