Я хотел бы создать собственный формат для встраивания, который можно стилизовать, но его текст нельзя изменить. Мой вариант использования очень похож на случай с хэштегом. Я хочу иметь внешнюю кнопку, которая добавит хэштег к текущему выбранному диапазону в редакторе. Но после этого я хочу, чтобы хэштег вел себя как «блок», чтобы пользователь не мог пойти туда и изменить его текст.
Единственный способ, которым я мог это сделать, - сказать, что узел формата contenteditable = false, но я не уверен, что иду правильным путем, поскольку у меня есть некоторые проблемы с этим подходом, в основном:
Если хэштег является последним в редакторе, я не могу пройти мимо него (стрелками или курсором). Двойной щелчок по нему для выбора должен выделить все это (а не отдельные слова) (для стиля). Если курсор находится сразу за хэштегом, нажатие вправо и запись будет писать внутри хэштега. Вы можете проверить код, который я сделал, экспериментируя с этим:
Quill.import('blots/embed');
class QuillHashtag extends Embed {
static create(value) {
let node = super.create(value);
node.innerHTML = `<span contenteditable=false>#${value}</span>`;
return node;
}
}
QuillHashtag.blotName = 'hashtag';
QuillHashtag.className = 'quill-hashtag';
QuillHashtag.tagName = 'span';
Вот полный код: http://codepen.io/emanuelbsilva/pen/Zpmmzv.
Если вы, ребята, можете дать мне какие-либо советы о том, как я могу это сделать, я был бы рад.
Спасибо.