78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
// Register our property at core/heading
|
|
wp.hooks.addFilter(
|
|
"blocks.registerBlockType",
|
|
"homegrade-blocks/block_editor_adjustments", // our custom namespace
|
|
function (settings, name) {
|
|
if (name !== "core/button") {
|
|
// skip other core blocks
|
|
return settings;
|
|
}
|
|
settings.attributes = Object.assign(settings.attributes, {
|
|
buttonVariant: {
|
|
type: "boolean",
|
|
default: false,
|
|
},
|
|
});
|
|
return settings;
|
|
}
|
|
);
|
|
// Display the custom ToggleControl for every header; toggle the custom property
|
|
|
|
wp.hooks.addFilter(
|
|
"editor.BlockEdit",
|
|
"homegrade-blocks/block_editor_adjustments",
|
|
wp.compose.createHigherOrderComponent(function (BlockEdit) {
|
|
return function (props) {
|
|
if (props.name !== "core/button") {
|
|
// skip other core blocks
|
|
return wp.element.createElement(BlockEdit, props);
|
|
}
|
|
|
|
return wp.element.createElement(
|
|
wp.element.Fragment,
|
|
{},
|
|
wp.element.createElement(
|
|
wp.blockEditor.InspectorControls,
|
|
{},
|
|
wp.element.createElement(
|
|
wp.components.PanelBody,
|
|
{},
|
|
wp.element.createElement(
|
|
wp.components.ToggleControl,
|
|
|
|
{
|
|
label: "Show in Table of Contents",
|
|
checked: props.attributes.buttonVariant,
|
|
onChange: (value) => {
|
|
props.setAttributes({
|
|
buttonVariant: value,
|
|
});
|
|
},
|
|
}
|
|
)
|
|
)
|
|
),
|
|
wp.element.createElement(BlockEdit, props)
|
|
);
|
|
};
|
|
})
|
|
);
|
|
|
|
// Convert the custom property value into CSS class name on every save
|
|
|
|
wp.hooks.addFilter(
|
|
"blocks.getSaveContent.extraProps",
|
|
"homegrade-blocks/block_editor_adjustments",
|
|
function (extraProps, blockType, attributes) {
|
|
if (blockType.name !== "core/button") {
|
|
// skip other core blocks
|
|
return extraProps;
|
|
}
|
|
if (attributes.buttonVariant) {
|
|
extraProps.className = extraProps.className + " lol " + " extra-props-de-antoine";
|
|
}
|
|
|
|
return extraProps;
|
|
}
|
|
);
|