GrapesJS is a free and open source Web Template Editor for building HTML templates to be used inside sites, webapps, newsletters or anything else related with HTML.
GrapesJS is a free and open source Web Template Builder which helps you building HTML templates to be used inside sites, newsletters or even mobile apps.
Mainly GrapesJS was designed to be used inside a [CMS] to speed up creation of dynamic templates. To better understand this concept check the image below
Mainly GrapesJS was designed to be used inside a [CMS] to speed up creation of dynamic templates. To better understand this concept check the image below
Generally any 'template system', that you can find in various applications like CMS, is composed by the **structure** (HTML), **style** (CSS) and **variables**, which are then replaced with other templates and contents on server-side and rendered on client.
Generally any 'template system', that you can find in various applications like CMS, is composed by the **structure** (HTML), **style** (CSS) and **variables**, which are then replaced with other templates and contents on server-side and rendered soon on client.
This demo shows an example of what is possible to achieve: http://grapesjs.com/demo.html
This demo shows an example of what is possible to achieve: http://grapesjs.com/demo.html
@ -77,7 +78,7 @@ If [Grunt](http://gruntjs.com/) is already installed globally you could change t
## Usage
## Usage
JQuery is the only hard dependency so you have to include it before use GrapesJS.
JQuery is the only hard dependency so you have to include it before using GrapesJS.
Unfortunately with the configuration above you wouldn't see a lot. This because GrapesJS it self is simply empty, adding panels, buttons and other stuff will be your job (actually it's not empty but you need buttons to show them up).
You could also grab the content directly from the element with `fromElement` property
The section below will explain some basic configurations but for a more practical example I suggest to look up the code inside this demo: http://grapesjs.com/demo.html
Documentation is under construction here: [wiki]
## Configuration
For now I only show up some general settings, for more details check source or demo. Examples will be available soon
```js
var config = {
// Prefix to use inside local storage name
storagePrefix: 'wte-',
// Where to render editor (eg. #myId)
container: '',
// Enable/Disable the possibility to copy (ctrl + c) and paste (ctrl + v) elements
copyPaste: true,
// Enable/Disable undo manager
undoManager: true,
//Indicates which storage to use. Available: local | remote | none
storageType: 'local',
//Configurations for Asset Manager (check src/asset_manager/config/config.js)
assetManager: {},
//Configurations for Style Manager (check src/style_manager/config/config.js)
```html
styleManager: {},
<divid="gjs">
<divclass="txt-red">Hello world!</div>
//Configurations for Layers (check src/navigator/config/config.js)
<style>.txt-red{color:red}</style>
layers: {},
</div>
//Configurations for Storage Manager (check src/storage_manager/config/config.js)
storageManager: {},
//Configurations for Rich Text Editor (check src/rich_text_editor/config/config.js)
<scripttype="text/javascript">
rte: {},
var editor = grapesjs.init({
container : '#gjs',
fromElement: true,
});
</script>
```
//Configurations for Components (check src/dom_components/config/config.js)
Unfortunately with the configuration above you wouldn't see a lot. This because GrapesJS it self is simply empty, adding panels, buttons and other stuff will be your job (actually it's not empty but you need buttons to show them up).
components: {},
The section below will explain some basic configurations but for a more practical example I suggest to look up the code inside this demo: http://grapesjs.com/demo.html
//Configurations for Panels (check src/panels/config/config.js)
panels: {},
//Configurations for Commands (check src/commands/config/config.js)
## Configuration
commands: {},
};
Check the getting started guide here: [wiki]
```
## API
## API
At the moment `render()` is the only available method but others will be public very soon...
API References (draft) could be found here: [wiki/API-Reference]
## Testing
## Testing
**ATTENTION: tests are pretty far away from being complete**
Tests are run by [PhantomJS](http://phantomjs.org/) using [Mocha](https://mochajs.org/) (with [Chai](http://chaijs.com/) and [Sinon](http://sinonjs.org/) help)
```sh
```sh
$ npm run test
$ npm test
```
```
## Todos before beta release
## TODOs before beta release
* **Class Manager** (*in development*) - Ability to assign different classes to components and style them (because CSS with only ids is pretty much a pain)
* **Breakpoint Manager** - Resize canvas according to breakpoints established by user (in simple terms, for responsive templates). Will be put into development immediately after Class Manager
* **Breakpoint Manager** - Resize canvas according to breakpoints established by user (in simple terms, for responsive templates). Will be put into development immediately after Class Manager
* **Style Manager improvements** - Mainly `stack` type is not yet complete
## Acknowledgements
## Acknowledgements
@ -189,16 +155,11 @@ GrapesJS is built on top of this amazing open source projects:
## Support
## Support
A star/fork is already a huge motivational support and I'd like to thank all of you for that, but if you want to contribute the project economically and you have this possibility you could use the link below :heart:
If you like the project support it, with a donation of your choice.