Skip to content

Commit bf4d735

Browse files
authored
Added proper way to customize editor styles (#73)
* Added proper way to customize editor styles * Updated readme * Fixed code style * Using default classes to avoid issues
1 parent e8cf54a commit bf4d735

File tree

16 files changed

+110
-7
lines changed

16 files changed

+110
-7
lines changed

README.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ use Kirschbaum\Commentions\Filament\Actions\CommentsAction;
245245
CommentsAction::make()
246246
->mentionables(User::all())
247247
->perPage(10)
248-
248+
249249
])
250250
```
251251
Without Pagination:
@@ -257,7 +257,7 @@ use Kirschbaum\Commentions\Filament\Actions\CommentsAction;
257257
CommentsAction::make()
258258
->mentionables(User::all())
259259
->disablePagination();
260-
260+
261261
])
262262
```
263263
Advanced Usage:
@@ -386,6 +386,40 @@ class User extends Authenticatable implements Commenter, HasName, HasAvatar
386386
}
387387
```
388388

389+
### Customizing TipTap Editor Styles
390+
391+
You can customize the TipTap editor CSS classes used using the `Config` class.
392+
393+
```php
394+
use Kirschbaum\Commentions\Config;
395+
396+
Config::resolveTipTapCssClassesUsing(function () {
397+
return 'prose max-w-none focus:outline-none p-4';
398+
});
399+
```
400+
401+
And you can also override the classes on a per-component basis using the `tipTapCssClasses()` method:
402+
403+
```php
404+
use Kirschbaum\Commentions\Filament\Infolists\Components\CommentsEntry;
405+
406+
CommentsEntry::make('comments')
407+
->mentionables(fn (Model $record) => User::all())
408+
->tipTapCssClasses('prose max-w-none focus:outline-none p-4')
409+
```
410+
411+
Or with actions:
412+
413+
```php
414+
use Kirschbaum\Commentions\Filament\Actions\CommentsAction;
415+
416+
CommentsAction::make()
417+
->mentionables(User::all())
418+
->tipTapCssClasses('prose max-w-none focus:outline-none p-4')
419+
```
420+
421+
**Important**: Make sure to whitelist the classes in your Tailwind config if you override them.
422+
389423
### Translations
390424

391425
You can publish the package translation files and override any strings used by the UI.

resources/dist/commentions.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/js/commentions.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@ import Placeholder from '@tiptap/extension-placeholder'
55
import suggestion from './suggestion'
66

77
document.addEventListener('alpine:init', () => {
8-
Alpine.data('editor', (content, mentions, component, placeholder) => {
8+
Alpine.data('editor', (content, mentions, component, placeholder, editorCssClasses) => {
99
let editor
1010

11+
const defaultEditorCssClasses = `comm:prose comm:dark:prose-invert comm:prose-sm comm:sm:prose-base comm:lg:prose-lg comm:xl:prose-2xl comm:focus:outline-none comm:p-4 comm:min-w-full comm:w-full comm:rounded-lg comm:border comm:border-gray-300 comm:dark:border-gray-700`;
12+
1113
return {
1214
updatedAt: Date.now(),
1315

@@ -30,7 +32,7 @@ document.addEventListener('alpine:init', () => {
3032
],
3133
editorProps: {
3234
attributes: {
33-
class: `comm:prose comm:dark:prose-invert comm:prose-sm comm:sm:prose-base comm:lg:prose-lg comm:xl:prose-2xl comm:focus:outline-none comm:p-4 comm:min-w-full comm:w-full comm:rounded-lg comm:border comm:border-gray-300 comm:dark:border-gray-700`,
35+
class: editorCssClasses || defaultEditorCssClasses,
3436
},
3537
},
3638
placeholder: 'Type something...',

resources/views/comment-list.blade.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class="comm:w-8 comm:h-8 comm:text-gray-400 comm:dark:text-gray-500"
1919
:key="$comment->getContentHash()"
2020
:comment="$comment"
2121
:mentionables="$mentionables"
22+
:tip-tap-css-classes="$tipTapCssClasses"
2223
/>
2324
@endforeach
2425

resources/views/comment.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class="comm:text-xs comm:text-gray-300 comm:ml-1"
9292
@if ($editing)
9393
<div class="comm:mt-2">
9494
<div class="tip-tap-container comm:mb-2" wire:ignore>
95-
<div x-data="editor(@js($commentBody), @js($mentionables), 'comment')">
95+
<div x-data="editor(@js($commentBody), @js($mentionables), 'comment', null, @js($this->getTipTapCssClasses()))">
9696
<div x-ref="element"></div>
9797
</div>
9898
</div>

resources/views/comments-modal.blade.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@
1010
:per-page-increment="$perPageIncrement ?? null"
1111
:sidebar-enabled="$sidebarEnabled ?? true"
1212
:show-subscribers="$showSubscribers ?? true"
13+
:tip-tap-css-classes="$tipTapCssClasses ?? null"
1314
/>
1415
</div>

resources/views/comments.blade.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
{{-- tiptap editor --}}
99
<div class="comm:relative tip-tap-container comm:mb-2" x-on:click="wasFocused = true" wire:ignore>
1010
<div
11-
x-data="editor(@js($commentBody), @js($this->mentions), 'comments', @js($this->getPlaceholder()))"
11+
x-data="editor(@js($commentBody), @js($this->mentions), 'comments', @js($this->getPlaceholder()), @js($this->getTipTapCssClasses()))"
1212
>
1313
<div x-ref="element"></div>
1414
</div>
@@ -40,6 +40,7 @@
4040
:per-page="$perPage ?? 5"
4141
:load-more-label="$loadMoreLabel ?? __('commentions::comments.show_more')"
4242
:per-page-increment="$perPageIncrement ?? null"
43+
:tip-tap-css-classes="$tipTapCssClasses"
4344
/>
4445
</div>
4546

resources/views/filament/infolists/components/comments-entry.blade.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
:load-more-label="$getLoadMoreLabel()"
99
:per-page-increment="$getPerPageIncrement()"
1010
:sidebar-enabled="$isSidebarEnabled()"
11+
:tip-tap-css-classes="$getTipTapCssClasses()"
1112
/>
1213
</x-dynamic-component>

src/Config.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ class Config
1414

1515
protected static ?Closure $resolveCommentUrl = null;
1616

17+
protected static ?Closure $resolveTipTapCssClasses = null;
18+
1719
public static function resolveAuthenticatedUserUsing(Closure $callback): void
1820
{
1921
static::$resolveAuthenticatedUser = $callback;
@@ -78,4 +80,18 @@ public static function getAllowedReactions(): array
7880
{
7981
return config('commentions.reactions.allowed', ['👍']);
8082
}
83+
84+
public static function resolveTipTapCssClassesUsing(Closure $callback): void
85+
{
86+
static::$resolveTipTapCssClasses = $callback;
87+
}
88+
89+
public static function getTipTapCssClasses(): ?string
90+
{
91+
if (static::$resolveTipTapCssClasses instanceof Closure) {
92+
return call_user_func(static::$resolveTipTapCssClasses);
93+
}
94+
95+
return 'comm:prose comm:dark:prose-invert comm:prose-sm comm:sm:prose-base comm:lg:prose-lg comm:xl:prose-2xl comm:focus:outline-none comm:p-4 comm:min-w-full comm:w-full comm:rounded-lg comm:border comm:border-gray-300 comm:dark:border-gray-700';
96+
}
8197
}

src/Filament/Actions/CommentsAction.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
use Kirschbaum\Commentions\Filament\Concerns\HasPagination;
99
use Kirschbaum\Commentions\Filament\Concerns\HasPolling;
1010
use Kirschbaum\Commentions\Filament\Concerns\HasSidebar;
11+
use Kirschbaum\Commentions\Filament\Concerns\HasTipTapCssClasses;
1112

1213
class CommentsAction extends Action
1314
{
1415
use HasMentionables;
1516
use HasPagination;
1617
use HasPolling;
1718
use HasSidebar;
19+
use HasTipTapCssClasses;
1820

1921
protected function setUp(): void
2022
{
@@ -32,6 +34,7 @@ protected function setUp(): void
3234
'perPageIncrement' => $this->getPerPageIncrement() ?: $this->getPerPage(),
3335
'sidebarEnabled' => $this->isSidebarEnabled(),
3436
'showSubscribers' => $this->showSubscribers(),
37+
'tipTapCssClasses' => $this->getTipTapCssClasses(),
3538
]))
3639
->modalWidth($this->isSidebarEnabled() ? '4xl' : 'xl')
3740
->label(__('commentions::comments.label'))

0 commit comments

Comments
 (0)