abdelhamiderrahmouni / filament-monaco-editor
A monaco editor form field for filamentphp.
Fund package maintenance!
AbdelhamidErrahmouni
Installs: 56 171
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 1
Forks: 2
Open Issues: 4
Requires
- php: ^8.1
- filament/forms: ^3.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.1
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
This package provides a Monaco editor field for FilamentPHP.
Demo
Installation
You can install the package via composer:
composer require abdelhamiderrahmouni/filament-monaco-editor
You can publish the config file with:
php artisan vendor:publish --tag="filament-monaco-editor-config"
Optionally, you can publish the views using
php artisan vendor:publish --tag="filament-monaco-editor-views"
This is the contents of the published config file:
return [ "general" => [ "enable-preview" => true, "show-full-screen-toggle" => true, "show-placeholder" => true, "placeholder-text" => "Your code here...", "show-loader" => true, "font-size" => "15px", "line-numbers-min-chars" => true, "automatic-layout" => true, "default-theme" => "blackboard" ], "themes" => [ "blackboard" => [ "base" => "vs-dark", "inherit" => true, "rules" => [ # long list of rules ... ], "colors" => [ "editor.foreground" => "#F8F8F8", "editor.background" => "#0C1021", "editor.selectionBackground" => "#253B76", "editor.lineHighlightBackground" => "#FFFFFF0F", "editorCursor.foreground" => "#FFFFFFA6", "editorWhitespace.foreground" => "#FFFFFF40" ] ] ], ];
Usage
You can use this field with minimal configuration like this:
MonacoEditor::make('content') ->language('php'),
You can change the theme of the editor by using the theme
method:
->theme('blackboard') # themes should be defined in the config file in the themes array
Add Scripts and Styles to preview's head element
->previewHeadEndContent("<script src='https://cdn.tailwindcss.com'></script><script defer src='https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js'></script>"),
Add attributes to the preview's body element
->previewBodyAttributes([ 'class' => 'bg-red-500', 'id' => 'preview-body' ]),
Add content to the start of the preview's body element
->previewBodyStartContent("<div class='bg-red-500'>"),
Add content to the end of the preview's body element
->previewBodyEndContent("</div>"),
You can Disable preview code functionality by method or in the config
->enablePreview(false) # or ->disablePreview()
You can show/hide the full screen button by method or in the config
->showFullScreenButton(false) # or ->hideFullScreenButton()
Show/Hide The loader
->showLoader(false) # or ->hideLoader()
Show/Hide the placeholder
->showPlaceholder(false) # or ->hidePlaceholder()
Customize placeholder's text
->placeholderText('Your placeholder text')
change the font-size of the editor
->fontSize('14px')
Customization
You can use your own theme by customizing the themes array in filament-monaco-editor.php
config file:
"themes" => [ "themeName" => [ "base" => "vs-dark|vs-light", "inherit" => true|false, "rules" => [ //... your rules ], "colors" => [ // your colors, the following are an example... "editor.foreground" => "#F8F8F8", "editor.background" => "#0C1021", "editor.selectionBackground" => "#253B76", "editor.lineHighlightBackground" => "#FFFFFF0F", "editorCursor.foreground" => "#FFFFFFA6", "editorWhitespace.foreground" => "#FFFFFF40" ] ] ],
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
Thanks to PinesUI for the Monaco editor component and the DevDojo team for their dedication and contribution to open source projects.
License
The MIT License (MIT). Please see License File for more information.