mountainclans / livewire-tiptap
This is my package livewire-tiptap
Fund package maintenance!
Mountain Clans
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:Blade
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0||^12.0
- intervention/image: ^3.11
- livewire/livewire: ^3.4
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Установка
Установите пакет при помощи Composer:
composer require mountainclans/livewire-tiptap
Поскольку пакет основан на Tiptap Editor, установите его командой
npm install @tiptap/core @tiptap/pm @tiptap/starter-kit
Добавьте в app.js
следующие строки:
import tiptap from '../../vendor/mountainclans/livewire-tiptap/resources/js/tiptap'; Alpine.data('tiptap', tiptap);
Добавьте в app.css
следующие строки:
@import '../../vendor/mountainclans/livewire-tiptap/resources/css/tiptap.css';
Обратите внимание, что для корректной стилизации в вашем проекте должен использоваться TailwindCSS.
Добавьте в tailwind.config.js
следующие блоки:
export default { content: [ './vendor/mountainclans/livewire-tiptap/resources/views/**/*.blade.php', ], plugins: [ require("flowbite/plugin")({ wysiwyg: true, }), require("flowbite-typography"), ], safelist: [ 'max-w-none', 'text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl', 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'w-4', 'h-4', 'w-6', 'h-6', "h-9", 'w-fit', 'max-w-full', 'h-auto', 'block', 'relative', 'absolute', 'flex', "w-64", "w-1/2", "rounded-l-lg", "rounded-r-lg", "bg-gray-200", 'bg-gray-600', 'bg-gray-700', 'bg-gray-900', "bg-opacity-50", "dark:bg-opacity-80", "grid-cols-4", "grid-cols-7", "leading-6", "leading-9", "shadow-lg", "lg:format-md", 'top-1', 'right-1', 'my-0', 'my-1', 'hover:bg-gray-400', 'rounded', 'rounded-lg', 'text-center', 'text-white', 'text-xs', 'items-center', 'justify-center', 'mx-auto', 'cursor-pointer', 'border-none', 'select-none', ] }
Если редактор используется для заливки изображений:
Опубликуйте и примените миграцию:
php artisan vendor:publish --tag="livewire-tiptap-migrations"
php artisan migrate
Добавьте в секцию <head>
шаблона мета-тег csrf-token
, который необходим для корректной работы запросов при загрузке изображений:
<meta name="csrf-token" content="{{ csrf_token() }}">
Опционально, Вы можете опубликовать views
для их переопределения:
php artisan vendor:publish --tag="livewire-tiptap-views"
Использование
<x-ui.tiptap wire:model="content"
translatable
height="700"
placeholder="{{ __('Content') }}"
label="{{ __('Page`s content *') }}"
/>
Используйте атрибут translatable
, если Вы хотите использовать компонент как translatable поле.
Настройка модели для обработки изображений
Если Вы заливаете картинки в контент текстового редактора, необходимо настроить их обработку в модели.
Используйте трейт:
class YourModel extends Model { use MountainClans\LivewireTiptap\Traits\HasEditorMedia; }
После сохранения модели с новым полем (в примере content
), вызовите метод
processUploadedImages
:
public function saveBlog(): void { $this->validateInput(); $this->blog->setTranslations('content', $this->content); // или $this->blog->content = $this->content, если поле не переводимое $this->blog->save(); $this->blog->processUploadedImages('content'); }
Авторы
License
The MIT License (MIT). Please see License File for more information.