9.1 KiB
StyleManager
With Style Manager you build categories (called sectors) of CSS properties which could be used to customize the style of components. You can customize the initial state of the module from the editor initialization, by passing the following Configuration Object
const editor = grapesjs.init({
styleManager: {
// options
}
})
Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance
const styleManager = editor.StyleManager;
- getConfig
- addSector
- getSector
- removeSector
- getSectors
- addProperty
- getProperty
- removeProperty
- getProperties
- getModelToStyle
- addType
- getType
- getTypes
- createType
getConfig
Get configuration object
Returns Object
addSector
Add new sector to the collection. If the sector with the same id already exists, that one will be returned.
Parameters
-
idstring Sector id -
sectorObject Object representing sector -
optionsObject Options (optional, default{})
Examples
const sector = styleManager.addSector('mySector',{
name: 'My sector',
open: true,
properties: [{ name: 'My property'}]
}, { at: 0 });
// With `at: 0` we place the new sector at the beginning of the collection
Returns Sector Added Sector
getSector
Get sector by id
Parameters
idstring Sector idopts(optional, default{})
Examples
const sector = styleManager.getSector('mySector');
Returns (Sector | null)
removeSector
Remove a sector by id
Parameters
idstring Sector id
Examples
const removed = styleManager.removeSector('mySector');
Returns Sector Removed sector
getSectors
Get all sectors
Parameters
opts(optional, default{})
Examples
const sectors = styleManager.getSectors();
Returns Collection<Sector> Collection of sectors
addProperty
Add property to the sector identified by id
Parameters
-
sectorIdstring Sector id -
propertyObject Property objectproperty.namestring Name of the property (optional, default'')property.propertystring CSS property, eg.min-height(optional, default'')property.typestring Type of the property: integer | radio | select | color | file | composite | stack (optional, default'')property.unitsArray<string> Unit of measure available, eg. ['px','%','em']. Only for integer type (optional, default[])property.unitstring Default selected unit fromunits. Only for integer type (optional, default'')property.minnumber Min possible value. Only for integer type (optional, defaultnull)property.maxnumber Max possible value. Only for integer type (optional, defaultnull)property.defaultsstring Default value (optional, default'')property.infostring Some description (optional, default'')property.iconstring Class name. If exists no text will be displayed (optional, default'')property.previewBoolean Show layers preview. Only for stack type (optional, defaultfalse)property.functionNamestring Indicates if value need to be wrapped in some function, for istancetransform: rotate(90deg)(optional, default'')property.propertiesArray<Object> Nested properties for composite and stack type (optional, default[])property.layersArray<Object> Layers for stack properties (optional, default[])property.listArray<Object> List of possible options for radio and select types (optional, default[])
-
opts(optional, default{}) -
optionsObject Options (optional, default{})
Examples
var property = styleManager.addProperty('mySector',{
name: 'Minimum height',
property: 'min-height',
type: 'select',
defaults: '100px',
list: [{
value: '100px',
name: '100',
},{
value: '200px',
name: '200',
}],
}, { at: 0 });
// With `at: 0` we place the new property at the beginning of the collection
Returns (Property | null) Added Property or null in case sector doesn't exist
getProperty
Get property by its CSS name and sector id
Parameters
Examples
var property = styleManager.getProperty('mySector','min-height');
Returns (Property | null)
removeProperty
Remove a property from the sector
Parameters
Examples
const property = styleManager.removeProperty('mySector', 'min-height');
Returns Property Removed property
getProperties
Get properties of the sector
Parameters
sectorIdstring Sector id
Examples
var properties = styleManager.getProperties('mySector');
Returns Properties Collection of properties
getModelToStyle
Get what to style inside Style Manager. If you select the component without classes the entity is the Component itself and all changes will go inside its 'style' property. Otherwise, if the selected component has one or more classes, the function will return the corresponding CSS Rule
Parameters
modelModeloptions(optional, default{})
Returns Model
addType
Add new property type
Parameters
idstring Type IDdefinitionObject Definition of the type. Each definition containsmodel(business logic),view(presentation logic) andisTypefunction which recognize the type of the passed entity
Examples
styleManager.addType('my-custom-prop', {
create({ props, change }) {
const el = document.createElement('div');
el.innerHTML = '<input type="range" class="my-input" min="10" max="50"/>';
const inputEl = el.querySelector('.my-input');
inputEl.addEventListener('change', event => change({ event })); // change will trigger the emit
inputEl.addEventListener('input', event => change({ event, complete: false }));
return el;
},
emit({ props, updateStyle }, { event, complete }) {
const { value } = event.target;
const valueRes = value + 'px';
// Pass a string value for the exact CSS property or an object containing multiple properties
// eg. updateStyle({ [props.property]: valueRes, color: 'red' });
updateStyle(valueRes, { complete });
},
update({ value, el }) {
el.querySelector('.my-input').value = parseInt(value, 10);
},
destroy() {
// In order to prevent memory leaks, use this method to clean, eventually, created instances, global event listeners, etc.
}
})
getType
Get type
Parameters
idstring Type ID
Returns Object Type definition
getTypes
Get all types
Returns Array
createType
Create new property from type
Parameters
Examples
const propView = styleManager.createType('integer', {
model: {units: ['px', 'rem']}
});
propView.render();
propView.model.on('change:value', ...);
someContainer.appendChild(propView.el);
Returns PropertyView