ember-cli-summernote v1.5.2
Ember-cli-summernote
Description
Ember-cli-summernote is an Ember CLI add-on. This addon actually converts summernote to an Ember component which is a re-usable unit. This is still a work in progress. Pull requests are welcome.
Installation
# install via npm
$ npm install ember-cli-summernote --save-dev
# make ember-cli fetch internal dependencies
$ ember g ember-cli-summernote
Basic Usage
Handlebar Template
As of version 1.1.0
, the addon embraces DDAU
.
The content
property is readonly and onContentChange
action is used for updated contents.
import Ember from 'ember';
export default Ember.ObjectController.extend({
contentHeight: 200,
postContent: "Some intial contents go here. Lorem Ipsum is simply dummy text of the printing.",
editingDisabled: false,
actions: {
onContentChange(text) {
set(this, 'postContent', text);
},
changeHeight(someObject) {
let height = someObject.doSomeCalculationToGetHeight();
set(this, 'contentHeight', height)
}
}
});
As a result to follow DDAU
, the summernote internall callback onChange
will not be supported through the callbacks
property in a consumming application.
{{summer-note height=contentHeight
btnSize=bs-sm
airMode=false
focus=false
header="Example"
content=(readonly postContent)
onContentChange=(action 'onContentChange')
disabled=editingDisabled
callbacks=callbackOptions
toolbarOptions=toolbarOptions}}
Example of configuring the toolbar options.
toolbarOptions: {
style: false,
insert: {
picture: false
},
help: false
}
Custom buttons usage
In hbs file
{{summer-note content=article customButtons=customButtons}}
In controller file
import Ember from 'ember';
export default Ember.Controller.extend({
article: 'some text',
customButtons: [],
init() {
let _onNewBlock = this.get('onNewBlock').bind(this);
let newBlockButton = function (context) {
var ui = $.summernote.ui;
var button = ui.button({
contents: '<i class="fa fa-file-text-o"/> New div',
tooltip: 'New div',
click: _onNewBlock
});
return button.render();
}
this.customButtons.push(newBlockButton);
},
onNewBlock() {
let blocks = '<div class="header" id="headerBlock"></div>';
this.set('article', article + blocks);
}
});
All callbacks except onChange
are supported.
The onChange
callback are used internally for the onContentChange
action.
callbackOptions: {
onInit: function() {
console.log('Summernote is launched');
},
onEnter: function() {
console.log('Enter/Return key pressed');
},
onPaste: function(e) {
console.log('Called event paste');
},
},
config/environment.js
The bootstrap resources will not be imported to your resources by default.
Also you can set lang
option for the editor.
var ENV = {
modulePrefix: 'dummy',
environment: environment,
...
'ember-cli-summernote': {
"importBootstrapCSS": true,
"importBootstrapJS": true,
"lang": "en-US // "ru-RU" //"lang": "en-US"
}
}
Test Helper
This addon also provides a convenient test helper to interact with the editor in acceptance tests.
fillInSummernote('.summernote-container', '<p>Test Text Entered.</p>');
getContentFromSummernote('.summernote-container');
Demo
You can clone this repo and run the app
$ sudo npm install -g ember-cli
# clone the codebase
$ git clone http://github.com/vsymguysung/ember-cli-summernote.git
$ cd ember-cli-summernote
# install dependencies
$ npm install; bower install
# fire up local server
$ ember serve
# visit the page with the following url.
http://localhost:4200
Inspired by
Summernote(Super simple WYSIWYG Editor) (https://github.com/summernote/summernote)
Heather Brysiewicz's blog post (http://hbrysiewicz.github.io/2014-04-18-summernote-ember-wysiwyg.html)
License
MIT license.
6 years ago
6 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago