angular-summernote demo

by bizamajig

HTML

<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdn.rawgit.com/summernote/summernote/v0.6.0/dist/summernote.css">
<script src="https://cdn.rawgit.com/summernote/summernote/v0.6.0/dist/summernote.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.6/angular.min.js"></script>
<script src="http://labs.sideeffect.kr/2014/angular-summernote/v0.3.1/dist/angular-summernote.min.js"></script>
<h1>angular-summernote</h1>
<p>angular directive for <a href="http://hackerwins.github.io/summernote/">Summernote</a></p>

<h2>summernote directive</h2>

<h4>use element</h4>
<summernote></summernote>

<h4>use attribute</h4>
<div summernote></div>

<h2>summernote options</h2>

<h4>height</h4>
<summernote height="300"></summernote>

<h4>focus</h4>
<summernote focus></summernote>

<div ng-controller="AirmodeCtrl">
<h4>airmode</h4>
<summernote airMode ng-model="text">
</summernote>
</div>

<div ng-controller="OptCtrl">
<h4>options object</h4>
<summernote config="options"></summernote>
</div>

<div ng-controller="CodeCtrl">
<h4>code : HTML string in summernote</h4>
<summernote ng-model="text"></summernote>

<br>
<textarea type="text" ng-model="text" style="width:100%;"></textarea></br>
text : {{text}}
</div>

<div ng-controller="CallbacksCtrl">
<h4>use callbacks</h4>
<summernote on-init="init()" on-enter="enter()" on-focus="focus(evt)"
            on-blur="blur(evt)" on-paste="paste()" on-keyup="keyup(evt)" on-keydown="keydown(evt)"
            on-change="change(contents)"
            on-image-upload="imageUpload(files, editor)"
            editable="editable"></summernote>
</div>

CSS

body {
  margin: 10px 20px 50px 20px;
}

JavaScript

angular.module('summernoteDemo', ['summernote'])
    .controller('OptCtrl', function($scope) {
      $scope.options = {
        height: 150,
        toolbar: [
          ['style', ['bold', 'italic', 'underline', 'clear']],
          ['fontsize', ['fontsize']],
          ['color', ['color']],
          ['para', ['ul', 'ol', 'paragraph']],
          ['height', ['height']]
        ]
      };
    })
    .controller('AirmodeCtrl', function($scope) {
      $scope.text = "<h3>This is an Air-mode editable area.</h3>";
    })
    .controller('CodeCtrl', function($scope) {
      $scope.text = "Hello World";
    })
    .controller('CallbacksCtrl', function($scope) {
      $scope.init = function() { console.log('Summernote is launched'); };
      $scope.enter = function() { console.log('Enter/Return key pressed'); };
      $scope.focus = function(e) { console.log('Editable area is focused'); };
      $scope.blur = function(e) { console.log('Editable area loses focus'); };
      $scope.paste = function() { console.log('Called event paste'); };
      $scope.change = function(contents) {
        console.log('contents are changed:', contents, $scope.editable);
      };
      $scope.keyup = function(e) { console.log('Key is released:', e.keyCode); };
      $scope.keydown = function(e) { console.log('Key is pressed:', e.keyCode); };
      $scope.imageUpload = function(files, editor) {
        console.log('image upload:', files, editor);
        console.log('image upload\'s editable:', $scope.editable);
      };
    });