Default Component Properties
Question
Is there any way I can change the default properties of components?
I want almost everything to be copyable: false, resizable: false, draggable: false unless the loaded component specifically provides a data-resizable=true.
So basically I want to whitelist some components to enable these instead of blacklisting.
Is it doable?
Answers (3)
@artf FYI that doesn't exactly work as needed. Updating the default component's default properties does not take effect for already-defined components (such as built in table, textnode, et. al.) because they have already extended the default model. Updating the default component would only change the default behavior for any new models that further extend the new default model definition.
In order to update all components, including existing and built ins, to have the desired default properties, I had to iterate over them all and update them one by one. This resulted in the desired (for me) behavior of establishing across-the-board default properties.
// Update all component model default properties
const allComps = editor.DomComponents.componentTypes.slice();
for (let i = 0; i < allComps.length; i++) {
editor.DomComponents.addType(allComps[i].id, {
model: {
defaults: {
copyable: false,
resizable: false,
draggable: false,
}
},
});
}
You can update the default component https://grapesjs.com/docs/modules/Components.html#update-component-type
@jereddanielson correct, this is how you should do to update also already defined component types. Thanks for pointing this out
Related Questions and Answers
Continue research with similar issue discussions.
Issue #1336
[Question] Can I make everything unselectable by default?
Currently all components are selectable/hoverable by default. And if you want you can change that behavior by providing data-gjs-hoverable=...
Issue #865
[QUESTION] How can I set default tagName
Hi ! I want to set tagName tr for all components(or specific component in use). Is there any predefined function to set tagName ?
Issue #1191
Is there a way to find the number of components
I want to remove the component start from the second,so i need to take the traversal. domc.getComponents() is getting everything.i just wan...
Issue #1841
Components name
I have two questions.Is there any way to change the built-in components name? I wanted to change the name "Box" to "Div". so the same name...
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.