BUG: My Options ( in traits ) for select component gets resetted every time after each reload of page
Question
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome
Reproducible demo link
Not there
Describe the bug
How to reproduce the bug?
- Install Grapes js and implement the select component code
- Drag the select component into the editor
- Click on the select component and enter the traits
- Reload the page .
What is the expected behavior?
- Entered options should not be reset in the traits manager for that component
- Already entered options should be visible in the traits manager for that component
What is the current behavior? My Options ( in traits ) for select component gets resetted every time after each reload of page
If is necessary to execute some code in order to reproduce the bug, paste it here below:

const trm = editor.TraitManager;
trm.addType('select-options', {
events:{
'keyup': 'onChange',
},
onValueChange: function () {
var optionsStr = this.model.get('value').trim();
var options = optionsStr.split('\n');
var optComps = [];
for (var i = 0; i < options.length; i++) {
var optionStr = options[i];
var option = optionStr.split('::');
var opt = {
tagName: 'option',
attributes: {}
};
if(option[1]) {
opt.content = option[1];
opt.attributes.value = option[0];
} else {
opt.content = option[0];
opt.attributes.value = option[0];
}
optComps.push(opt);
}
var comps = this.target.get('components');
comps.reset(optComps);
this.target.view.render();
},
getInputEl: function() {
if (!this.$input) {
var md = this.model;
var trg = this.target;
var name = md.get('name');
var optionsStr = '';
var opts = {placeholder: ''};
var options = trg.get('components');
for (var i = 0; i < options.length; i++) {
var option = options.models[i];
var optAttr = option.get('attributes');
var optValue = optAttr.value || '';
optionsStr += `${optValue}::${option.get('content')}\n`;
}
this.$input = document.createElement('textarea');
this.$input.value = optionsStr;
}
return this.$input;
},
});
editor.Components.addType('input-select', {
isComponent: el => el.tagName === 'SELECT',
// Model definition
model: {
defaults: {
tagName: 'select',
components:{options: [ // Array of options
{ 'opt1':'Option 1'},
]},
//draggable: 'form, form *', // Can be dropped only inside `form` elements
droppable: false, // Can't drop other elements inside
attributes: { // Default attributes
type: 'select-options',
name: 'select-name',
class:'form-control'
},
traits: [{
type: 'select-options' // built-in types: text, number, select, checkbox, color
}],
// Add some style, just to make the component visible
style: {
}
}
}
});
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (1)
Hi @Sudhin35 please follow this API for your custom traits and I'd highly recommend storing your options as a component property instead of using inner components
Related Questions and Answers
Continue research with similar issue discussions.
Issue #3832
BUG: The css classes are removed and the autogenerated ids for each html tags gets changed ( Example : ivj5m-2) after each reload
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome Reproducible demo link Not there De...
Issue #3878
BUG: Not able to rename the page name and page id if we are using multipage concept
GrapesJS version[X] I confirm to use the latest version of GrapesJSWhat browser are you using? Chrome v9Reproducible demo link Not thereDes...
Issue #6685
BUG: 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 #6683
BUG: Modals close on mouseup event outside of modal rather than a full click
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome 143.0.7499.169 Reproducible demo li...
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.