feat: initialize Dr-Panel project with patient file number support
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\RichEditor;
|
||||
|
||||
use Tiptap\Core\Mark;
|
||||
use Tiptap\Utils\HTML;
|
||||
|
||||
class HighlightColorMark extends Mark
|
||||
{
|
||||
public static $name = 'highlightColor';
|
||||
|
||||
public function parseHTML(): array
|
||||
{
|
||||
return [
|
||||
[
|
||||
'tag' => 'span',
|
||||
'getAttrs' => function ($DOMNode) {
|
||||
$color = $DOMNode->getAttribute('data-hbg');
|
||||
if (! $color) {
|
||||
return null;
|
||||
}
|
||||
return ['data-hbg' => $color];
|
||||
},
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function addAttributes(): array
|
||||
{
|
||||
return [
|
||||
'data-hbg' => [
|
||||
'default' => null,
|
||||
'parseHTML' => function ($DOMNode) {
|
||||
return $DOMNode->getAttribute('data-hbg') ?: null;
|
||||
},
|
||||
'renderHTML' => function ($attributes) {
|
||||
if (empty($attributes->{'data-hbg'})) {
|
||||
return null;
|
||||
}
|
||||
$color = $attributes->{'data-hbg'};
|
||||
return [
|
||||
'data-hbg' => $color,
|
||||
'style' => "background-color: {$color};",
|
||||
];
|
||||
},
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function renderHTML($mark, $HTMLAttributes = []): array
|
||||
{
|
||||
return [
|
||||
'span',
|
||||
HTML::mergeAttributes($HTMLAttributes),
|
||||
0,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\RichEditor;
|
||||
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Forms\Components\RichEditor\Plugins\Contracts\RichContentPlugin;
|
||||
use Filament\Forms\Components\RichEditor\RichEditorTool;
|
||||
|
||||
class HighlightColorPlugin implements RichContentPlugin
|
||||
{
|
||||
public static function make(): static
|
||||
{
|
||||
return app(static::class);
|
||||
}
|
||||
|
||||
public function getTipTapPhpExtensions(): array
|
||||
{
|
||||
return [
|
||||
app(HighlightColorMark::class),
|
||||
];
|
||||
}
|
||||
|
||||
public function getTipTapJsExtensions(): array
|
||||
{
|
||||
return [asset('js/highlight-colors.js')];
|
||||
}
|
||||
|
||||
public function getEditorTools(): array
|
||||
{
|
||||
return [
|
||||
RichEditorTool::make('highlightYellow')
|
||||
->label('برجسته زرد')
|
||||
->icon('fi-o-highlight')
|
||||
->activeJsExpression("editorUpdatedAt && \$getEditor()?.isActive('highlightColor', {'data-hbg': '#FFFF00'})")
|
||||
->jsHandler("(function(){ var e=\$getEditor(); if(!e) return; e.isActive('highlightColor',{'data-hbg':'#FFFF00'}) ? e.chain().focus().unsetMark('highlightColor').run() : e.chain().focus().unsetMark('highlightColor').setMark('highlightColor',{'data-hbg':'#FFFF00'}).run(); })()"),
|
||||
|
||||
RichEditorTool::make('highlightRed')
|
||||
->label('برجسته قرمز')
|
||||
->icon('fi-o-highlight')
|
||||
->extraAttributes(['style' => 'color: #ef4444'])
|
||||
->activeJsExpression("editorUpdatedAt && \$getEditor()?.isActive('highlightColor', {'data-hbg': '#ef4444'})")
|
||||
->jsHandler("(function(){ var e=\$getEditor(); if(!e) return; e.isActive('highlightColor',{'data-hbg':'#ef4444'}) ? e.chain().focus().unsetMark('highlightColor').run() : e.chain().focus().unsetMark('highlightColor').setMark('highlightColor',{'data-hbg':'#ef4444'}).run(); })()"),
|
||||
];
|
||||
}
|
||||
|
||||
public function getEditorActions(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user