Can't remove border of element
Hi @kuhelbeher with the new https://github.com/artf/grapesjs/releases/tag/v0.18.1 release this can be handled. The main issue here is how the built-in border property is configured, which is a Composite type of border-width, border-style and border-color. That means the editor is able to understand styles like border:...
Read full answer below ↓Question
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome v96
Reproducible demo link
https://codesandbox.io/s/grapes-border-issue-94lje
Describe the bug
How to reproduce the bug?
- Select block with top and bottom borders
- Go to Style panel -> Decorations -> Border
- Clear border-color input and press Enter
What is the expected behavior? Border should be removed
What is the current behavior?
Border remains. Check the css, it will look like border: 5px solid none; which is invalid value
I noticed that this issue appears only if border is set via separate border styles, e.g. border-top and border-bottom. Following question - how to properly remove borders via style panel?
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (2)
Hi @kuhelbeher with the new https://github.com/artf/grapesjs/releases/tag/v0.18.1 release this can be handled.
The main issue here is how the built-in border property is configured, which is a Composite type of border-width, border-style and border-color.
That means the editor is able to understand styles like border: 5px solid red or even border-color: red; border-style: solid; border-width: 5px; but unfortunately, properties like border-top, border-bottom, etc. are out of the scope as they're seen as totally different ones.
The good news, with the new release you're able to manage built-in properties and update their behavior with props like toStyle/fromStyle (available for composite and stack types). So here is an example of how would you force to remove alternative border properties on change.
const extendBorder = (editor) => {
editor.StyleManager.addBuiltIn('border', {
toStyle(values, { property }) {
const propWidth = property.getProperty('border-width');
const width = `${propWidth.getValue()}${propWidth.getUnit()}`;
const style = property.getProperty('border-style').getValue();
const color = property.getProperty('border-color').getValue();
return {
'border': `${width} ${style} ${color}`,
'border-top': '',
'border-right': '',
'border-bottom': '',
'border-left': '',
}
}
});
}
grapesjs.init({
// ...
plugins: [extendBorder]
})
The alternative solution would be to set up a new UI type for managing the border property in a more advanced way but that for sure requires more effort.
Thanks for reporting this, @kuhelbeher.
Great question about Can't remove border of element. The recommended approach with StyleManager is to use the event-driven API.
Start here:
- Check the GrapesJS documentation for your specific module
- Look for the
on()event listener method - Most operations can be achieved by listening to editor and component events
Common patterns:
// Listen for changes
editor.on('change', () => console.log('something changed'));
// Component lifecycle
editor.on('component:mount', (c) => console.log('component ready', c));
editor.on('component:update', (c) => console.log('component updated', c));
If you're still stuck:
- Share a minimal CodeSandbox reproduction
- Include what you've already tried
- Mention your GrapesJS version
- The community is here to help!
Related Questions and Answers
Continue research with similar issue discussions.
Issue #6039
Cannot set Block display value
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome 126 Reproducible demo link https://...
Issue #6685
Custom component styles are not applied after deletion and re-addition
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v143.0.7499.193 Reproducible demo l...
Issue #6369
Display order of border radius is not correct
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v130 Reproducible demo link https:/...
Issue #6458
sector.setName doesn't work
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome Reproducible demo link https://jsfi...
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.
Tutorial
Find the Right GrapesJS Plugin in Seconds: Smarter Discovery Is Live
We're shipping a set of discovery upgrades. New label filters, a proper compatibility switch for GrapesJS vs Studio, one-click and a smarter sort bar.
Tutorial
GrapesJS vs Webflow vs Tilda: What to Choose for Your Business in 2026
Choosing the right website platform in 2026 is no longer just about building a site
Tutorial
GJS Market 2.0 - Donations, Tracking, Labels and Better Product Discovery
We’ve rolled out a new set of GrapesJS marketplace updates across GJS Market, focused on improving how creators distribute products
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.