Monaco Editor
A Monaco Editor form field.
Author:
Abdelhamid Errahmouni
Documentation
- Demo
- Installation
- Usage
- Customization
- Testing
- Changelog
- Contributing
- Security Vulnerabilities
- Credits
- License
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.
The author
Abdelhamid is a Full Stack developer (works mostly with the TALL stack), passionate about enhancing web experiences ✨ and crafting robust back-ends 🏗️ currently working @digiton.ma and blog @errahmounispace.
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Custom Fields
Eliminate custom field migrations forever. Let your users create and manage form fields directly in Filament admin panels with 20+ built-in field types, validation, and zero database changes.
Relaticle
Data Lens
Advanced Data Visualization for Laravel Filament - a premium reporting solution enabling custom column creation, sophisticated filtering, and enterprise-grade data insights within admin panels.
Padmission