Как подключить EditorJS в Admiral?
Всем привет! Напоминаем, что мы разрабатываем Admiral — решение с открытым исходным кодом на React, которое позволяет быстро разрабатывать красивые CRUDы в админ-панелях, но при желании создавать полностью кастомные интерфейсы. От разработчиков для разработчиков с любовью, как говорится.
Сегодня на примере Editor JS мы покажем, как легко и быстро подключить редактор в проект, созданный в Admiral. Это блочный редактор с универсальным выводом JSON, парсинг которого легко настроить на свой вкус. По-умолчанию Editor JS выглядит достаточно ограниченным, но его фишка — в легком расширении функционала с помощью плагинов, которые можно написать самостоятельно.
- Официально поддерживаемые плагины есть здесь.
- Живую демонстрацию смотрите на официальном сайте.
- Demo всего процесса, который я опишу ниже, можно посмотреть тут.
Поехали.
Необходимые зависимости
Устанавливаем сам редактор и несколько плагинов:
- @editorjs/editorjs
- @editorjs/header
- @editorjs/image
- @editorjs/paragraph
Типизация
Если вы будете использовать TS в проекте, потребуется установить описание типов для каждого плагина, однако существуют они не все.
Если пакета с типизацией нет, либо вам просто лень устанавливать дополнительные пакеты, необходимо вручную декларировать пакет. Для этого в корне проекта создайте файл global.d.ts со следующим содержимым:
Интеграция в проект с Admiral
Осталось добавить адаптированные под admiral компоненты с интеграцией Editor JS.
Файловая структура компонента выглядит так:
Контейнер над самим редактором для взаимодействия с хуком useForm(), который используем внутри admiral — EditorJSContainer:
Компонент, внутри которого инициализируется и настраивается сам редактор — EditorJSField.
Стили можно создавать в случае необходимости по собственному усмотрению.
Использование компонента выглядит так:
На данном этапе интеграция редактора в админку завершена.
Обработка конечных данных на клиенте
Осталось разобраться, как обрабатывать получаемые из редактора данные.
Конечные данные имеют следующую структуру:
Вы можете парсить данные по собственному усмотрению. Мы используем библиотеку html-react-parser. Вот, как выглядит тогда компонент (в наиболее простом варианте):
Применение компонента:
В SCSS/CSS файле можно задать любые стили, которые будут применяться к итоговому html.
Подводим итоги
Когда вы установите все необходимые зависимости и добавите несколько простых компонентов в свой проект, легко сможете подключить современный редактор в своё приложение и пользоваться всеми его преимуществами. Задавать любые стили, подключать доступные плагины и расширять функционал. А еще можно написать собственные плагины и внести вклад в развитие аутсорс продукта — попробуйте, это приятно :)