How to restrict blocks#
You can restrict blocks from being added to a content type using the restricted
key in the configuration object.
This key can be a boolean or a function that returns a boolean.
If the block is restricted, it won't show in the chooser.
However, it can still be added either programmatically or by directly using the REST API, so this restriction only applies to the user interface.
The function has this signature:
{
restricted: (args: {
properties: Content;
block: BlockConfigBase;
navRoot: Content;
contentType: string;
user: Object
}) => boolean;
}
properties
The current object data.
block
The block being evaluated in
BlockChooser
.navRoot
The nearest navigation root object.
contentType
The current content type.
user
An object that represents the currently authenticated user.
In the following configuration example, you can restrict a block so that it cannot be added unless the content type is News Item
or the content item is in a specific path in the content tree (/folder
):
const testBlockConditional = {
...testBlock,
id: 'testBlockConditional',
title: 'Test Conditional Block',
restricted: ({ properties, navRoot, contentType }) => {
if (contentType === 'News Item') {
return false;
} else if (flattenToAppURL(properties?.parent?.['@id']) === '/folder') {
return false;
}
return true;
},
};