Closed sakshigarg9 closed 5 years ago
Either your panel does not have the id options or your button not the id cmdImport. Btw, the trash icon does not really sound like "importing". Maybe you have mixed that up. Other than that, please provide more code.
@NicoEngler This is the index.js file for Panels when using the grapesjs-webpage-preset
import {
cmdImport,
cmdDeviceDesktop,
cmdDeviceTablet,
cmdDeviceMobile,
cmdClear
} from './../consts';
export default (editor, config) => {
const pn = editor.Panels;
const eConfig = editor.getConfig();
const crc = 'create-comp';
const mvc = 'move-comp';
const swv = 'sw-visibility';
const expt = 'export-template';
const osm = 'open-sm';
const otm = 'open-tm';
const ola = 'open-layers';
const obl = 'open-blocks';
const ful = 'fullscreen';
const prv = 'preview';
eConfig.showDevices = 0;
pn.getPanels().reset([{
id: 'commands',
buttons: [{}],
},{
id: 'options',
buttons: [{
id: swv,
command: swv,
context: swv,
className: 'fa fa-square-o',
},{
id: prv,
context: prv,
command: e => e.runCommand(prv),
className: 'fa fa-eye',
},{
id: ful,
command: ful,
context: ful,
className: 'fa fa-arrows-alt',
},{
id: expt,
className: 'fa fa-code',
command: e => e.runCommand(expt),
},{
id: 'undo',
className: 'fa fa-undo',
command: e => e.runCommand('core:undo'),
},{
id: 'redo',
className: 'fa fa-repeat',
command: e => e.runCommand('core:redo'),
},{
id: cmdImport,
className: 'fa fa-download',
command: e => e.runCommand(cmdImport),
},{
id: cmdClear,
className: 'fa fa-trash',
command: e => e.runCommand(cmdClear),
}],
},{
id: 'views',
buttons : [{
id: osm,
command: osm,
active: true,
className: 'fa fa-paint-brush',
},{
id: otm,
command: otm,
className: 'fa fa-cog',
},{
id: ola,
command: ola,
className: 'fa fa-bars',
},{
id: obl,
command: obl,
className: 'fa fa-th-large',
}],
}]);
// Add devices buttons
const panelDevices = pn.addPanel({id: 'devices-c'});
panelDevices.get('buttons').add([{
id: cmdDeviceDesktop,
command: cmdDeviceDesktop,
className: 'fa fa-desktop',
active: 1,
},{
id: cmdDeviceTablet,
command: cmdDeviceTablet,
className: 'fa fa-tablet',
},{
id: cmdDeviceMobile,
command: cmdDeviceMobile,
className: 'fa fa-mobile',
}]);
const openBl = pn.getButton('views', obl);
editor.on('load', () => openBl && openBl.set('active', 1));
// On component change show the Style Manager
config.showStylesOnChange && editor.on('component:selected', () => {
const openSmBtn = pn.getButton('views', osm);
const openLayersBtn = pn.getButton('views', ola);
// Don't switch when the Layer Manager is on or
// there is no selected component
if ((!openLayersBtn || !openLayersBtn.get('active')) && editor.getSelected()) {
openSmBtn && openSmBtn.set('active', 1);
}
});
}
I actually wish to disable both import and the trash icon. Following is the code I placed in grapes.init{..} to disable import icon.
const panelManager=editor.Panels;
panelManager.removeButton('options','cmdImport');
cmdImport and cmdClear are variables imported at the top of the file. So the actual id might be different from 'cmdImport'. You can easily check this by observing the rendered sourcecode though.
As an attempt to fix it, try:
panelManager.removeButton('options', cmdImport);
panelManager.removeButton('options', cmdClear);
Notice the missing '
I tried the same, but it does not work. I tried placing the code in the index.js (Panel) file as well as under grapesjs.init{..}
It's hard to investigate the problem without seeing actual code. Set up a demo that reproduces the problem. That way, me and others can help you to solve it.
@sakshigarg9 Comment or delete this part in index.js
{
id: cmdImport,
className: 'fa fa-download',
command: e => e.runCommand(cmdImport),
},{
id: cmdClear,
className: 'fa fa-trash',
command: e => e.runCommand(cmdClear),
}
and run npm start to run the server and see the changes in the browser on localhost. To make sure the changes reflect in your index.html page, you will need to build the project using npm run build which will update the js and css files in dist folder. After building, you will be able to see the changes in index.html without the need to run the server.
Remember, any changes you make in any of the JS or CSS file then make sure you run npm run build as you need to have the updated files in dist folder to reflect changes in index.html.
Full index.js code:
import {
cmdImport,
cmdDeviceDesktop,
cmdDeviceTablet,
cmdDeviceMobile,
cmdClear
} from './../consts';
export default (editor, config) => {
const pn = editor.Panels;
const eConfig = editor.getConfig();
const crc = 'create-comp';
const mvc = 'move-comp';
const swv = 'sw-visibility';
const expt = 'export-template';
const osm = 'open-sm';
const otm = 'open-tm';
const ola = 'open-layers';
const obl = 'open-blocks';
const ful = 'fullscreen';
const prv = 'preview';
eConfig.showDevices = 0;
pn.getPanels().reset([{
id: 'commands',
buttons: [{}],
},{
id: 'options',
buttons: [{
id: swv,
command: swv,
context: swv,
className: 'fa fa-square-o',
},{
id: prv,
context: prv,
command: e => e.runCommand(prv),
className: 'fa fa-eye',
},{
id: ful,
command: ful,
context: ful,
className: 'fa fa-arrows-alt',
},{
id: expt,
className: 'fa fa-code',
command: e => e.runCommand(expt),
},{
id: 'undo',
className: 'fa fa-undo',
command: e => e.runCommand('core:undo'),
},{
id: 'redo',
className: 'fa fa-repeat',
command: e => e.runCommand('core:redo'),
}
// ,{
// id: cmdImport,
// className: 'fa fa-download',
// command: e => e.runCommand(cmdImport),
// },{
// id: cmdClear,
// className: 'fa fa-trash',
// command: e => e.runCommand(cmdClear),
// }
],
},{
id: 'views',
buttons : [{
id: osm,
command: osm,
active: true,
className: 'fa fa-paint-brush',
},{
id: otm,
command: otm,
className: 'fa fa-cog',
},{
id: ola,
command: ola,
className: 'fa fa-bars',
},{
id: obl,
command: obl,
className: 'fa fa-th-large',
}],
}]);
// Add devices buttons
const panelDevices = pn.addPanel({id: 'devices-c'});
panelDevices.get('buttons').add([{
id: cmdDeviceDesktop,
command: cmdDeviceDesktop,
className: 'fa fa-desktop',
active: 1,
},{
id: cmdDeviceTablet,
command: cmdDeviceTablet,
className: 'fa fa-tablet',
},{
id: cmdDeviceMobile,
command: cmdDeviceMobile,
className: 'fa fa-mobile',
}]);
const openBl = pn.getButton('views', obl);
editor.on('load', () => openBl && openBl.set('active', 1));
// On component change show the Style Manager
config.showStylesOnChange && editor.on('component:selected', () => {
const openSmBtn = pn.getButton('views', osm);
const openLayersBtn = pn.getButton('views', ola);
// Don't switch when the Layer Manager is on or
// there is no selected component
if ((!openLayersBtn || !openLayersBtn.get('active')) && editor.getSelected()) {
openSmBtn && openSmBtn.set('active', 1);
}
});
}
I commented out this code
{
id: cmdImport,
className: 'fa fa-download',
command: e => e.runCommand(cmdImport),
},{
id: cmdClear,
className: 'fa fa-trash',
command: e => e.runCommand(cmdClear),
}
from grapesjs-preset-webpage.min.js and it worked
Of course that worked but you should not do it that way. You are losing maintainability.
@sakshigarg9 I think I found what you wanted I had the same problem... Some buttons IDs are stored in a constant file :
import {
cmdImport,
cmdDeviceDesktop,
cmdDeviceTablet,
cmdDeviceMobile,
cmdClear
} from './../consts';
So when you look into this file, you'll be able to find the right IDs :
export const
cmdImport = 'gjs-open-import-webpage',
cmdDeviceDesktop = 'set-device-desktop',
cmdDeviceTablet = 'set-device-tablet',
cmdDeviceMobile = 'set-device-mobile',
cmdClear = 'canvas-clear';
And so to get the trash button : editor.Panels.getButton('options', 'canvas-clear')
Thanks for your solution it's work.
This is my code in index.html. I'm using the grapesjs-preset-webpage