homegrade_blocks_production/block_editor_adjustments.js

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;
}
);