Я добавил кнопки для текста большого, среднего и малого размера в блоке Gutenberg RichText с помощью блоков create-guten. Эти кнопки добавляют ClassName к выделенному тексту при нажатии. Они работают, но когда я нажимаю кнопку, которая уже имеет ClassName, она оборачивает другое ClassName. Я имею в виду, что они имеют двойные или тройные ClassNames ..
Как показано ниже ..
<span class="text-small"><span class="text-large">text<span><span>
Как я могу удалить предыдущее ClassName, когда я щелкаю по тому, которое уже имеет ClassName?
Спасибо.
//Large Text
var TextLarge = function( props ) {
return wp.element.createElement(
wp.editor.RichTextToolbarButton, {
icon: <svg xmlns="svg".../></svg>,
title: 'Large Text,
onClick: function() {
props.onChange( wp.richText.toggleFormat(
props.value,
{ type: 'my-blocks/text-large' }
) );
},
isActive: props.isActive,
}
);
}
var LButton = compose(
withSelect( function( select ) {
return {
selectedBlock: select( 'core/editor' ).getSelectedBlock()
}
} ),
ifCondition( function( props ) {
return (
props.selectedBlock &&
props.selectedBlock.name !== 'core/heading'
);
} )
)( TextLarge );
wp.richText.registerFormatType(
'my-blocks/text-large', {
title: 'Large Text',
tagName: 'span',
className: 'text-large',
edit: LButton,
}
);
//Medium Text
var TextMedium = function( props ) {
return wp.element.createElement(
wp.editor.RichTextToolbarButton, {
icon: <svg xmlns="svg".../></svg>,
title: 'Medium Text',
onClick: function() {
props.onChange( wp.richText.toggleFormat(
props.value,
{ type: 'my-blocks/text-medium' }
) );
},
isActive: props.isActive,
}
);
}
var MButton = compose(
withSelect( function( select ) {
return {
selectedBlock: select( 'core/editor' ).getSelectedBlock()
}
} ),
ifCondition( function( props ) {
return (
props.selectedBlock &&
props.selectedBlock.name !== 'core/heading'
);
} )
)( TextMedium );
wp.richText.registerFormatType(
'my-blocks/text-medium', {
title: 'Medium Text',
tagName: 'span',
className: 'text-medium',
edit: MButton,
}
);
//Small Text
var TextSmall = function( props ) {
return wp.element.createElement(
wp.editor.RichTextToolbarButton, {
icon: <svg xmlns="svg".../></svg>,
title: 'Small Text',
onClick: function() {
props.onChange( wp.richText.toggleFormat(
props.value,
{ type: 'my-blocks/text-small' }
) );
},
isActive: props.isActive,
}
);
}
var SButton = compose(
withSelect( function( select ) {
return {
selectedBlock: select( 'core/editor' ).getSelectedBlock()
}
} ),
ifCondition( function( props ) {
return (
props.selectedBlock &&
props.selectedBlock.name !== 'core/heading'
);
} )
)( TextSmall );
wp.richText.registerFormatType(
'my-blocks/text-small', {
title: 'Small Text',
tagName: 'span',
className: 'text-small',
edit: SButton,
}
);