|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>GrapesJS Example</title> |
|
|
|
<link rel="stylesheet" href="https://unpkg.com/grapesjs/dist/css/grapes.min.css"> |
|
</head> |
|
<body> |
|
<div id="gjs"></div> |
|
|
|
|
|
<script src="https://unpkg.com/grapesjs"></script> |
|
|
|
<script> |
|
const editor = grapesjs.init({ |
|
container: '#gjs', |
|
fromElement: true, |
|
height: '100vh', |
|
storageManager: { type: 0 }, |
|
plugins: [], |
|
pluginsOpts: {}, |
|
selectorManager: { |
|
componentFirst: true, |
|
}, |
|
}); |
|
|
|
const domc = editor.DomComponents; |
|
const bm = editor.BlockManager; |
|
|
|
|
|
bm.add('horizontal-triple-block', { |
|
label: 'Horizontal Triple Block', |
|
content: ` |
|
<div style="display: flex; justify-content: space-between;"> |
|
<div style="flex: 1; margin: 5px; background-color: #f0f0f0; padding: 10px; border: 1px solid #ccc;"></div> |
|
<div style="flex: 1; margin: 5px; background-color: #f0f0f0; padding: 10px; border: 1px solid #ccc;"></div> |
|
<div style="flex: 1; margin: 5px; background-color: #f0f0f0; padding: 10px; border: 1px solid #ccc;"></div> |
|
</div> |
|
`, |
|
}); |
|
|
|
|
|
domc.addType('add-block-button', { |
|
model: { |
|
defaults: { |
|
components: ` |
|
<button onclick="addNewBlock()">Add New Block</button> |
|
`, |
|
attributes: { |
|
'data-gjs-type': 'add-block-button', |
|
}, |
|
}, |
|
}, |
|
}); |
|
|
|
|
|
window.addNewBlock = function() { |
|
const newBlock = ` |
|
<div style="display: flex; justify-content: space-between;"> |
|
<div style="flex: 1; margin: 5px; background-color: #f0f0f0; padding: 10px; border: 1px solid #ccc;"></div> |
|
<div style="flex: 1; margin: 5px; background-color: #f0f0f0; padding: 10px; border: 1px solid #ccc;"></div> |
|
<div style="flex: 1; margin: 5px; background-color: #f0f0f0; padding: 10px; border: 1px solid #ccc;"></div> |
|
</div> |
|
`; |
|
editor.addComponents(newBlock); |
|
}; |
|
|
|
|
|
bm.add('add-block-button', { |
|
label: 'Add Block Button', |
|
content: { |
|
type: 'add-block-button', |
|
}, |
|
}); |
|
</script> |
|
</body> |
|
</html> |