option to strip the <br> for empty input. bump to 0.1.0

fix-space-nbsp 0.1.0
Dmitri Akatov 11 years ago
parent 34f429cf36
commit 0858496a7b

@ -2,20 +2,25 @@
angular.module('contenteditable', []).directive('contenteditable', function() {
return {
require: 'ngModel',
link: function(scope, elmt, attrs, ctrl) {
link: function(scope, elmt, attrs, ngModel) {
var old_render;
old_render = ctrl.$render;
elmt.bind('input', function(e) {
return scope.$apply(function() {
return ctrl.$setViewValue(elmt.html());
var html;
html = elmt.html();
if (attrs.stripBr && attrs.stripBr !== "false" && html === '<br>') {
html = '';
}
return ngModel.$setViewValue(html);
});
});
return ctrl.$render = function() {
old_render = ngModel.$render;
return ngModel.$render = function() {
var el, el2, range, sel;
if (old_render !== null) {
if (old_render != null) {
old_render();
}
elmt.html(ctrl.$viewValue);
elmt.html(ngModel.$viewValue || '');
el = elmt.get(0);
range = document.createRange();
sel = window.getSelection();

@ -1,5 +1,5 @@
{ "name": "angular-contenteditable"
, "version": "0.0.1"
, "version": "0.1.0"
, "main": "angular-contenteditable.js"
, "ignore":
[ ".*"

@ -1,6 +1,6 @@
{
"name": "angular-contenteditable",
"version": "0.0.1",
"version": "0.1.0",
"description": "angular extensions",
"main": "angular-contenteditable.js",
"directories": {

@ -1,18 +1,19 @@
angular.module('contenteditable', [])
.directive('contenteditable', ->
require: 'ngModel',
link: (scope, elmt, attrs, ctrl) ->
old_render = ctrl.$render # save for later
link: (scope, elmt, attrs, ngModel) ->
# view -> model
elmt.bind 'input', (e) ->
scope.$apply ->
ctrl.$setViewValue elmt.html()
html = elmt.html()
html = '' if attrs.stripBr && attrs.stripBr != "false" && html == '<br>'
ngModel.$setViewValue(html)
# model -> view
ctrl.$render = ->
old_render() if old_render != null # old_render? leads to linted js
elmt.html ctrl.$viewValue
old_render = ngModel.$render # save for later
ngModel.$render = ->
old_render() if old_render?
elmt.html(ngModel.$viewValue || '')
# move cursor to the end
el = elmt.get(0)
range = document.createRange()

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html ng-app="simple">
<head>
<title>Simple</title>
<!-- we need jquery for e2e testing -->
<script src="../../components/jquery/jquery.js"></script>
<script src="../../components/angular-unstable/angular.js"></script>
<script src="../../angular-contenteditable.js"></script>
<script>
angular.module('simple', ['contenteditable'])
.controller('Ctrl', function($scope) {
// $scope.model2 = 'hello'
$scope.model = "Initial stuff <b>with bold</b> <em>and italic</em> yay"
})
.controller('Ctrl2', function($scope) {})
angular.bootstrap(document, ['simple'])
</script>
</head>
<body>
<div ng-controller="Ctrl">
<label>Contenteditable (View):</label>
<div id="input" contenteditable="true" ng-model="model" strip-br="true">
something
</div>
<hr>
<div>
<label>Model:</label>
<pre id="output" onclick="console.log('clicked the output')">{{ model }}</pre>
</div>
</div>
</body>
</html>