How to add a custom button with custom command in default panel of grapesjs
Question
I have integrated grapesjs with angular6. and i am getting a default panel with a select box appearing at top of screen; i want a custom button with my own custom command on the default panel. i want to add a button looks like below marked by red color.

i want to when i click on the button then an alert box should be displayed on the screen with hello world message. please let me know how can i add my custom button on default panel
Answers (3)
Use editor.Panels.getPanels() to get all the available panels and then use addButtons method shown below.Here 'options' is the panel name
editor.Panels.addButton('options', [ { id: 'save', className: 'fa fa-floppy-o icon-blank', command: function(editor1, sender) { alert('Hello World') }, attributes: { title: 'Save Template' } }, ]);
I also had trouble with that when had tried to button to Panel. So, I used the following way: ` editor.Panels.addButton('#target panel id#',
{ id: 'alert-button', className: 'btn-alert-button', label: 'Click my butt(on)', command(editor) { alert('Hello World'); } active: true }); ` However, the panel and button were displayed.
It turns on it needs to use the render method to rerender Panel manager object. I can't find information about it into docs. So, decided this note here:
editor.Panels.render();
After that, the button and panel are displayed.
This is well documented at https://grapesjs.com/docs/getting-started.html#panels-buttons. You have two methods to add a panel with buttons: (1) When initializing GrapesJS, (2) After GrapesJS was initialized with addPanel.
Please note that this is for a panel that you have defined with <div id='basic-actions'></div>.
GrapesJS.init()
this.editor = grapesjs.init({
container: '#gjs',
fromElement: false,/* https://github.com/artf/grapesjs#usage */
addBasicStyle: true,
height: '800px',
width: 'auto',
panels: {
id: 'basic-actions',
el: '.panel__basic-actions',
buttons: [
{
id: 'alert-button',
className: 'btn-alert-button',
label: 'Click my butt(on)',
command(editor) { alert('Hello World'); }
}
]
},
...});
After GrapesJS was initialized
editor.Panels.addPanel({
id: 'basic-actions',
el: '.panel__basic-actions',
buttons: [
{
id: 'alert-button',
className: 'btn-alert-button',
label: 'Click my butt(on)',
command(editor) { alert('Hello World'); }
}
]
});
Related Questions and Answers
Continue research with similar issue discussions.
Issue #2350
[Question] How do I add elements/sectors to views container using a custom button in the Panel
I have added a custom button to the Panel as below: const pm = editor.Panels; pm.addButton('views', { id: 'customButton', className: '', co...
Issue #386
Extend Pannel/Command examples/documentation with opening a new view
Hi Artur, First of all grapesjs is awsome! At the moment i am trying to puzzle together how to create a pannel with a button that opens a n...
Issue #482
Default asset manager in custom component
I am in process to create custom component for below template and we want to have user enter text,link,hover text and select image and want...
Issue #3111
Question: How to trigger something (function) on adding asset?
Hi, @artf. What is the correct way to trigger a function when an asset is added to the assets by providing the link and then pressing the '...
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.