Skip to content

Commit

Permalink
Merge pull request #112 from shadybones/master
Browse files Browse the repository at this point in the history
makes copy of original configuration and use original callbacks
  • Loading branch information
outsideris committed Feb 20, 2016
2 parents 88063d1 + 97abd00 commit ee89dcc
Showing 1 changed file with 52 additions and 19 deletions.
71 changes: 52 additions & 19 deletions src/angular-summernote.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ angular.module('summernote', [])
'use strict';

var currentElement,
summernoteConfig = $scope.summernoteConfig || {};
summernoteConfig = angular.copy($scope.summernoteConfig) || {};

if (angular.isDefined($attrs.height)) { summernoteConfig.height = +$attrs.height; }
if (angular.isDefined($attrs.minHeight)) { summernoteConfig.minHeight = +$attrs.minHeight; }
Expand All @@ -20,20 +20,45 @@ angular.module('summernote', [])
summernoteConfig.lang = $attrs.lang;
}

var callbacks = {};
callbacks.onInit = $scope.init;
callbacks.onEnter = function(evt) { $scope.enter({evt:evt}); };
callbacks.onFocus = function(evt) { $scope.focus({evt:evt}); };
callbacks.onPaste = function(evt) { $scope.paste({evt:evt}); };
callbacks.onKeyup = function(evt) { $scope.keyup({evt:evt}); };
callbacks.onKeydown = function(evt) { $scope.keydown({evt:evt}); };
summernoteConfig.callbacks = summernoteConfig.callbacks || {};

if (angular.isDefined($attrs.onInit)) {
summernoteConfig.callbacks.onInit = function(evt) {
$scope.init({evt:evt});
};
}
if (angular.isDefined($attrs.onEnter)) {
summernoteConfig.callbacks.onEnter = function(evt) {
$scope.enter({evt:evt});
};
}
if (angular.isDefined($attrs.onFocus)) {
summernoteConfig.callbacks.onFocus = function(evt) {
$scope.focus({evt:evt});
};
}
if (angular.isDefined($attrs.onPaste)) {
summernoteConfig.callbacks.onPaste = function(evt) {
$scope.paste({evt:evt});
};
}
if (angular.isDefined($attrs.onKeyup)) {
summernoteConfig.callbacks.onKeyup = function(evt) {
$scope.keyup({evt:evt});
};
}
if (angular.isDefined($attrs.onKeydown)) {
summernoteConfig.callbacks.onKeydown = function(evt) {
$scope.keydown({evt:evt});
};
}
if (angular.isDefined($attrs.onImageUpload)) {
callbacks.onImageUpload = function(files) {
summernoteConfig.callbacks.onImageUpload = function(files) {
$scope.imageUpload({files:files, editable: $scope.editable});
};
}
if (angular.isDefined($attrs.onMediaDelete)) {
callbacks.onMediaDelete = function(target) {
summernoteConfig.callbacks.onMediaDelete = function(target) {
// make new object that has information of target to avoid error:isecdom
var removedMedia = {attrs: {}};
removedMedia.tagName = target[0].tagName;
Expand All @@ -55,18 +80,26 @@ angular.module('summernote', [])
}
};

callbacks.onChange = function(contents) {
$timeout(function() {
if (element.summernote('isEmpty')) { contents = ''; }
var originalOnChange = summernoteConfig.callbacks.onChange;
summernoteConfig.callbacks.onChange = function (contents) {
$timeout(function () {
if (element.summernote('isEmpty')) {
contents = '';
}
updateNgModel();
}, 0);
$scope.change({contents:contents, editable: $scope.editable});
};
callbacks.onBlur = function(evt) {
(!summernoteConfig.airMode) && element.blur();
$scope.blur({evt:evt});
if (angular.isDefined($attrs.onChange)) {
$scope.change({contents: contents, editable: $scope.editable});
} else if (angular.isFunction(originalOnChange)) {
originalOnChange.apply(this, arguments);
}
};
summernoteConfig.callbacks = callbacks;
if (angular.isDefined($attrs.onBlur)) {
summernoteConfig.callbacks.onBlur = function (evt) {
(!summernoteConfig.airMode) && element.blur();
$scope.blur({evt: evt});
};
}
element.summernote(summernoteConfig);

var editor$ = element.next('.note-editor'),
Expand Down

0 comments on commit ee89dcc

Please sign in to comment.