Skip to content

Commit

Permalink
fix(taBind.$formatters): Fix an issue where unwrapped tags broke the …
Browse files Browse the repository at this point in the history
…textarea display

Fixes #566
  • Loading branch information
SimeonC authored and SimeonC committed Mar 13, 2015
1 parent d006ed0 commit d39c7b6
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
20 changes: 11 additions & 9 deletions lib/taBind.js
Expand Up @@ -75,6 +75,15 @@ angular.module('textAngular.taBind', ['textAngular.factories', 'textAngular.DOM'

var _blankTest = _taBlankTest(_defaultTest);

var _ensureContentWrapped = function(value){
if(_blankTest(value)) return value;
var domTest = angular.element("<div>" + value + "</div>");
if(domTest.children().length === 0){
value = "<" + attrs.taDefaultWrap + ">" + value + "</" + attrs.taDefaultWrap + ">";
}
return value;
};

if(attrs.taPaste) _pasteHandler = $parse(attrs.taPaste);

element.addClass('ta-bind');
Expand Down Expand Up @@ -235,7 +244,7 @@ angular.module('textAngular.taBind', ['textAngular.factories', 'textAngular.DOM'
_html += '\n' + _repeat('\t', tablevel-1) + listNode.outerHTML.substring(listNode.outerHTML.lastIndexOf('<'));
return _html;
};

ngModel.$formatters.unshift(_ensureContentWrapped);
ngModel.$formatters.unshift(function(htmlValue){
// tabulate the HTML so it looks nicer
var _children = angular.element('<div>' + htmlValue + '</div>')[0].childNodes;
Expand Down Expand Up @@ -588,14 +597,7 @@ angular.module('textAngular.taBind', ['textAngular.factories', 'textAngular.DOM'
ngModel.$parsers.unshift(_validity);
// because textAngular is bi-directional (which is awesome) we need to also sanitize values going in from the server
ngModel.$formatters.push(_sanitize);
ngModel.$formatters.unshift(function(value){
if(_blankTest(value)) return value;
var domTest = angular.element("<div>" + value + "</div>");
if(domTest.children().length === 0){
value = "<" + attrs.taDefaultWrap + ">" + value + "</" + attrs.taDefaultWrap + ">";
}
return value;
});
ngModel.$formatters.unshift(_ensureContentWrapped);
ngModel.$formatters.unshift(_validity);
ngModel.$formatters.unshift(function(value){
return ngModel.$undoManager.push(value || '');
Expand Down
5 changes: 5 additions & 0 deletions test/taBind/taBind.$formatters.spec.js
Expand Up @@ -32,5 +32,10 @@ describe('taBind.$formatters', function () {
$rootScope.$digest();
expect(element.val()).toBe('<ol>\n\t<li>Test Line 1</li>\n\t<ul>\n\t\t<li>Nested Line 1</li>\n\t\t<li>Nested Line 2</li>\n\t</ul>\n\t<li>Test Line 3</li>\n</ol>');
});
it('handles no tags (should wrap)', function(){
$rootScope.html = 'Test Line 1';
$rootScope.$digest();
expect(element.val()).toBe('<p>Test Line 1</p>');
});
});
});

0 comments on commit d39c7b6

Please sign in to comment.