[QUESTION]: How to add link on an image?
Question
Hi, quick question.
I have an image and I just want to add a link on it. Using the model, what is the easiest way to add a link on the image?
I tried to use model.replaceWith but the problem is that if I put some styling on the image and then call model.replaceWith, the styles are removed.
Is there a better way to achieve this?
Thanks!
Answers (3)
Ok, I was able to get it working by doing the following:
let model = editor.getSelected();
let attributes = { href: '#' }
let newLink = {
type: 'link',
attributes,
components: [model.clone()]
}
model.replaceWith(newLink);
I don't know if it's a good way or not, appreciate any feedback.
Hi @simplecommerce !
editor.DomComponents.addType('image-with-link', {
extend: 'link',
model: {
defaults: {
style: {
display: 'inline-block',
padding: '5px',
'min-height': '50px',
'min-width': '50px'
},
components: {
type: 'image',
}
}
}
});
cheers!
Hi @simplecommerce !
editor.DomComponents.addType('image-with-link', { extend: 'link', model: { defaults: { style: { display: 'inline-block', padding: '5px', 'min-height': '50px', 'min-width': '50px' }, components: { type: 'image', } } } });cheers!
Hi @pouyamiralayi, thanks for the reply.
I didn't mean by creating a new component, what I meant was to simply replace a rendered component model in the canvas (an image) by wrapping it inside a link (a) while keeping the styles.
The example code I pasted does exactly that.
For example:
- Add an image on the canvas.
- Select the image and add a fixed width, height and a border.
- Click on the toolbar icon button to add a link.
Step 3, should wrap the selected image in an (a) tag while keeping the styles of the image.
This is what I was trying to reproduce.
Thanks for the reply though!
Related Questions and Answers
Continue research with similar issue discussions.
Issue #3111
Question: How to trigger something (function) on adding asset?
Hi, @artf. What is the correct way to trigger a function when an asset is added to the assets by providing the link and then pressing the '...
Issue #2742
[QUESTION] How to prevent unique ids generation?
Hi! Thanks for your work @artf. This is a simplified code of how I use grapesjs, I want to save the styles and then want to apply them agai...
Issue #2076
[QUESTION] How make a new component to allow laravel blade directives?
Hi, thanks for the nice work. I'll like to know if there is a way to use blade directives inside the code. I already add a new functionalit...
Issue #1864
[QUESTION] Best way to listen to changes on the final HTML?
Hi, I just had a quick question because I could not figure out how to do it or did not find an issue related to it. I am just trying to cal...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.