Custom component used as HTML in block
Question
I've extended the default image component
export default (editor) => {
const domComponents = editor.DomComponents;
const imageType = domComponents.getType('image');
domComponents.addType('image-extended', {
model: imageType.model.extend({
defaults: Object.assign({}, imageType.model.prototype.defaults, {
name: 'Image Extended',
})
},
{
isComponent(el) {
if (el.tagName === 'img' && el.classList && el.classList.contains('img-extended')) {
return {type: 'image-extended'};
}
}
}),
view: imageType.view
});
};
Then I've got a block where I'm going to use the extended image. The following works fine.
export default (editor) => {
let bm = editor.BlockManager;
bm.add('ImageExtended').set({
label: 'Image Extended',
category: 'Layout',
attributes: {class: 'fa fa-image'},
content: {
type: 'image-extended',
classes: ['img-extended'],
},
});
};
However, this block will contain nested HTML (kind of a card) and one of the childs needs to be this custom image component. Using the following the img element is not recognized as my custom image component.
export default (editor) => {
let bm = editor.BlockManager;
bm.add('Card').set({
label: 'Card',
category: 'Layout',
attributes: {class: 'fa fa-image'},
content: '<div class="card"><img class="img-extended"></div>',
});
};
Answers (2)
el.tagName === 'IMG'
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Related Questions and Answers
Continue research with similar issue discussions.
Issue #1959
[Question] Edit innerHTML in a custom button
Hi All, I am trying to change the text in a button component, but I am not able to edit it. I added this type: I included the editable: tru...
Issue #738
image reverted to original size after resized
hi, i got a strange issue with component: i got 2 types, image and icon the issue is when i first drag and drop the image component, i'm ab...
Issue #665
Custom component and save
Sorry, me again ! I'm trying to save my template with my new component "img-link" : But when I save my template using the gjs-get-inlined-h...
Issue #1044
change src for image element in model
hello when a image block drop to editor i hide the default asset manager and display my custom asset manager: fot this i have no problem.bu...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Check the open-source GrapesJS plugins on GitHub or run a quick search in our free catalog.
Browse free plugins →Premium plugins ship with support, regular updates, and production-ready features — save days of integration work.
Browse premium plugins →Related tutorials
In-depth guides on the same topic.
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.