4.5 KiB
BlockManager
You can customize the initial state of the module from the editor initialization, by passing the following Configuration Object
const editor = grapesjs.init({
blockManager: {
// options
}
})
Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance
const blockManager = editor.BlockManager;
getConfig
Get configuration object
Returns Object
onLoad
Load default blocks if the collection is empty
add
Add new block to the collection.
Parameters
idstring Block idoptsObject Optionsopts.labelstring Name of the blockopts.contentstring HTML contentopts.category(string | Object) Group the block inside a catgegory. You should pass objects with id property, eg: {id: 'some-uid', label: 'My category'} The string will be converted in: 'someid' => {id: 'someid', label: 'someid'}opts.attributesObject Block attributes (optional, default{})
Examples
blockManager.add('h1-block', {
label: 'Heading',
content: '<h1>Put your title here</h1>',
category: 'Basic',
attributes: {
title: 'Insert h1 block'
}
});
Returns Block Added block
get
Return the block by id
Parameters
idstring Block id
Examples
const block = blockManager.get('h1-block');
console.log(JSON.stringify(block));
// {label: 'Heading', content: '<h1>Put your ...', ...}
getAll
Return all blocks
Examples
const blocks = blockManager.getAll();
console.log(JSON.stringify(blocks));
// [{label: 'Heading', content: '<h1>Put your ...'}, ...]
Returns Collection
getAllVisible
Return the visible collection, which containes blocks actually rendered
Returns Collection
remove
Remove a block by id
Parameters
idstring Block id
Examples
// Id of the block which need to be removed
const id = 'button';
blockManager.remove(id);
Returns Block Removed block
getCategories
Get all available categories. It's possible to add categories only within blocks via 'add()' method
Returns (Array | Collection)
getContainer
Return the Blocks container element
Returns HTMLElement
render
Render blocks
Parameters
blocksArray Blocks to render, without the argument will render all global blocksoptsObject Options (optional, default{})
Examples
// Render all blocks (inside the global collection)
blockManager.render();
// Render new set of blocks
const blocks = blockManager.getAll();
const filtered = blocks.filter(block => block.get('category') == 'sections')
blockManager.render(filtered);
// Or a new set from an array
blockManager.render([
{label: 'Label text', content: '<div>Content</div>'}
]);
// Back to blocks from the global collection
blockManager.render();
// You can also render your blocks outside of the main block container
const newBlocksEl = blockManager.render(filtered, { external: true });
document.getElementById('some-id').appendChild(newBlocksEl);
Returns HTMLElement Rendered element