grapesjs-preset-newsletter
Version:
GrapesJS preset configuration for the newsletter editor
151 lines (113 loc) • 4.35 kB
Markdown
# GrapesJS Preset Newsletter
This preset configures GrapesJS to be used as a Newsletter Builder with some unique features and blocks composed specifically for being rendered correctly inside all major email clients.
[Demo](http://grapesjs.com/demo-newsletter-editor.html)
> The demo might include external plugins, you can check the full demo code [here](https://github.com/grapesjs/grapesjs/blob/gh-pages/demo-newsletter-editor.html).
<p align="center"><img src="http://grapesjs.com/img/grapesjs-preset-newsletter.jpg" alt="GrapesJS" width="500" align="center"/></p>
<br/>
## Summary
* Plugin name: **`grapesjs-preset-newsletter`**
* Commands
* `gjs-get-inlined-html` Get html with inlined CSS
* `gjs-open-import-template` Opens a modal for the import
* `gjs-toggle-images` Enable/Disable images
* Blocks
* `sect100` A section with 1 100% cell inside
* `sect50` A section with 2 50% cells inside
* `sect30` A section with 3 33.3333% cells inside
* `sect37` A section with 2 cells inside: 30% and 70%
* `button` Simple button
* `divider` Divider block
* `text` Simple text component
* `text-sect` A block with 2 text components, respectively for the heading and paragraph
* `image` Simple image component
* `quote` Text component for quotes
* `grid-items` Block of 2 components in row
* `list-items` List of 2 components
## Options
| Option | Description | Default |
| - | - | - |
| `blocks` | Which blocks to add | `All available blocks` |
|`block`| Add custom block options, based on block id|`(blockId) => ({})`|
|`cmdOpenImport`| Import command id |`gjs-open-import-template`|
|`cmdTglImages`| Toggle images command id |`gjs-toggle-images`|
|`cmdInlineHtml`| Get inlined HTML command id |`gjs-get-inlined-html`|
|`modalTitleImport`| Title for the import modal |`Import template`|
|`modalTitleExport`| Title for the export modal |`Export template`|
|`modalLabelExport`| Label for the export modal |`''`|
|`modalLabelImport`| Label for the import modal |`''`|
|`modalBtnImport`| Label for the import button |`Import`|
|`importPlaceholder`| Template as a placeholder inside import modal |`''`|
|`inlineCss`| If `true`, inlines CSS on export |`true`|
|`updateStyleManager`| Update Style Manager with more reliable style properties to use for newsletters |`true`|
|`showStylesOnChange`| Show the Style Manager on component change |`true`|
|`showBlocksOnLoad`| Show the Block Manager on load |`true`|
|`codeViewerTheme`| Code viewer theme |`hopscotch`|
|`juiceOpts`| Custom options for the `juice` HTML inliner |`{}`|
|`textCleanCanvas`| Confirm text before clearing the canvas |`Are you sure you want to clear the canvas?`|
|`useCustomTheme`| Load custom preset theme |`true`|
|`cellStyle`| Default style used inside blocks `td`s |`{ padding: 0, margin: 0, 'vertical-align': 'top' }`|
|`tableStyle`| Default style used for blocks tables |`{ height: '150px', margin: '0 auto 10px auto', padding: '5px 5px 5px 5px', width: '100%' }`|
## Download
* CDN
* `https://unpkg.com/grapesjs-preset-newsletter`
* NPM
* `npm i grapesjs-preset-newsletter`
* GIT
* `git clone https://github.com/grapesjs/preset-newsletter.git`
## Usage
Directly in the browser
```html
<link href="path/to/grapes.min.css" rel="stylesheet"/>
<script src="path/to/grapes.min.js"></script>
<script src="path/to/grapesjs-preset-newsletter.min.js"></script>
<div id="gjs"></div>
<script type="text/javascript">
var editor = grapesjs.init({
container : '#gjs',
...
plugins: ['grapesjs-preset-newsletter'],
pluginsOpts: {
'grapesjs-preset-newsletter': {
// options
}
}
});
</script>
```
Modern javascript
```js
import grapesjs from 'grapesjs';
import plugin from 'grapesjs-preset-newsletter';
const editor = grapesjs.init({
container : '#gjs',
// ...
plugins: [plugin],
pluginsOpts: {
[plugin]: { /* options */ }
}
// or
plugins: [
editor => plugin(editor, { /* options */ }),
],
});
```
## Development
Clone the repository
```sh
$ git clone https://github.com/grapesjs/preset-newsletter.git
$ cd preset-newsletter
```
Install it
```sh
$ npm i
```
Start the dev server
```sh
$ npm start
```
Build before the commit. This will also increase the patch level version of the package
```sh
$ npm run build
```
## License
BSD 3-Clause