Я хочу добавить «декоративные» (не семантические) элементы в представление редактирования в определенных позициях.
Я внес небольшое изменение в плагин Block-Widget, приведенный в руководстве CKEditor5.
https://ckeditor.com/docs/ckeditor5/latest/framework/guides/tutorials/implementing-a-block-widget.html
Я добавил 3 строки ("const badge" и т. Д.) В код преобразователя с понижением:
_defineConverters() {
const conversion = this.editor.conversion;
// <simpleBox> converters
conversion.for( 'upcast' ).elementToElement( {
model: 'simpleBox',
view: {
name: 'section',
classes: 'simple-box'
}
} );
conversion.for( 'dataDowncast' ).elementToElement( {
model: 'simpleBox',
view: {
name: 'section',
classes: 'simple-box'
}
} );
conversion.for( 'editingDowncast' ).elementToElement( {
model: 'simpleBox',
view: ( modelElement, viewWriter ) => {
const section = viewWriter.createContainerElement( 'section', { class: 'simple-box' } );
const badge = viewWriter.createContainerElement( 'span', { class: 'cause-badge', style: 'font-weight: bold' } );
viewWriter.insert( viewWriter.createPositionAt( badge, 0 ), viewWriter.createText('Simple Box') );
viewWriter.insert( viewWriter.createPositionAt( section, 0), badge );
return toWidget( section, viewWriter, { label: 'simple box widget' } );
}
} );
//....
Я ожидал «Простое поле» в начале (вверху) виджета, поскольку я использую createPositionAt (section, 0).
Но вместо этого я получаю его в конце (внизу) виджета (в Firefox).
скриншот в Firefox