sckatik / moonshine-editorjs
EditorJs block editor for MoonShine
Installs: 111
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 0
Open Issues: 0
Language:JavaScript
Requires
- php: ^8.2
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-json: *
- codex-team/editor.js: *
- guzzlehttp/guzzle: ^7.0
- illuminate/events: ^10.0 || ^11.0
- spatie/image: ^3.0
Requires (Dev)
- brianium/paratest: ^6.8
- mockery/mockery: ^1.4.4
- orchestra/testbench: ^4.0|^5.0|^6.0|^7.0|^8.0
- phpstan/phpstan: ^1.4.7
- phpunit/phpunit: ^9.5.8
Conflicts
- moonshine/moonshine: <1.52
README
Demo
You can can play with the demo here
Installation
Install via composer:
composer require sckatik/moonshine-editorjs
Publish the config file
php artisan vendor:publish --tag="moonshine-editorjs-config"
Publish assets be sure to publish without them the editor will not work
php artisan vendor:publish --tag="moonshine-editorjs-assets"
Optionally, you can publish the views if you want to change the appearance of the fields that are output from the editorJs In views blocks
php artisan vendor:publish --tag="moonshine-editorjs"
You can also connect the necessary components or your own in editorJs.
In the view fields/editorJs.blade.php remove the line
{{ Vite::useHotFile('vendor/moonshine-editorjs/moonshine-editorjs.hot')
->useBuildDirectory("vendor/moonshine-editorjs")
->withEntryPoints(['resources/css/field.css', 'resources/js/field.js']) }}
and connect your js with a set of its components EditorJs
Config
You can disable or enable the necessary blocks in the editor. In config/moonshine-editor-js.php in the configuration block - toolSettings
In config/moonshine-editor-js.php in the configuration block - renderSettings You can customize the rendering rules from EditorJs data
Usage
Add a field to the database with the text type To output data from EditorJs, use the following methods:
use App\Models\Post; use Sckatik\MoonshineEditorJs\Facades\RenderEditorJs; $post = Post::find(1); echo RenderEditorJs::render($post->body);
Defining An Accessor
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Sckatik\MoonshineEditorJs\Facades\RenderEditorJs; class Post extends Model { public function getBodyAttribute() { return RenderEditorJs::render($this->attributes['body']); } } $post = Post::find(1); echo $post->body;