How to add link on an image?
Ok, I was able to get it working by doing the following: I don't know if it's a good way or not, appreciate any feedback.
Read full answer below ↓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 #6646
Javascript error when I want to add padding
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome & Firefox Reproducible demo link De...
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 #4082
Remove some initial styles from frame canvas
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v96 Reproducible demo link No demo...
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 →Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.