Skip to content

Commit

Permalink
Merge pull request #273 from a8m/master
Browse files Browse the repository at this point in the history
fix(taBind): ignoring keyup event on unnecessary keys

fixes #225
  • Loading branch information
SimeonC committed Aug 20, 2014
2 parents 23ccc99 + 62c3ccb commit bf4765e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/textAngular.js
Expand Up @@ -958,6 +958,7 @@ See README.md or https://github.com/fraywing/textAngular/wiki for requirements a
var _isReadonly = false;
var _focussed = false;
var _disableSanitizer = attrs.taUnsafeSanitizer || taOptions.disableSanitizer;
var BLOCKED_KEYS = /^(9|19|20|27|33|34|35|36|37|38|39|40|45|46|112|113|114|115|116|117|118|119|120|121|122|123|144|145)$/;

// defaults to the paragraph element, but we need the line-break or it doesn't allow you to type into the empty element
// non IE is '<p><br/></p>', ie is '<p></p>' as for once IE gets it correct...
Expand Down Expand Up @@ -1063,7 +1064,7 @@ See README.md or https://github.com/fraywing/textAngular/wiki for requirements a
element.on('keyup', function(event, eventData){
/* istanbul ignore else: this is for catching the jqLite testing*/
if(eventData) angular.extend(event, eventData);
if(!_isReadonly){
if(!_isReadonly && !BLOCKED_KEYS.test(event.keyCode)){
// if enter - insert new taDefaultWrap, if shift+enter insert <br/>
if(_defaultVal !== '' && event.keyCode === 13){
if(!event.shiftKey){
Expand Down
28 changes: 28 additions & 0 deletions test/taBind.spec.js
Expand Up @@ -337,6 +337,34 @@ describe('taBind', function () {
expect(element.html()).toBe('');
}));
});
describe('on ignoring keys press', function() {
it('should ignore blocked keys events', inject(function($rootScope, $compile, $window, $document, taSelection) {
var BLOCKED_KEYS = [19,20,27,33,34,35,36,37,38,39,40,45,46,112,113,114,115,116,117,118,119,120,121,122,123,144,145],
eventSpy = spyOn(taSelection, 'setSelectionToElementStart').andCallThrough(),
event;
$rootScope.html = '<p><br></p>';
element = $compile('<div ta-bind ta-default-wrap="b" contenteditable="contenteditable" ng-model="html"></div>')($rootScope);
$document.find('body').append(element);
$rootScope.$digest();
var range = $window.rangy.createRangyRange();
range.selectNodeContents(element.children()[0]);
$window.rangy.getSelection().setSingleRange(range);

BLOCKED_KEYS.forEach(function(key) {
if(angular.element === jQuery) {
event = jQuery.Event('keyup');
event.keyCode = key;
element.triggerHandler(event);
}else{
event = {keyCode: key};
element.triggerHandler('keyup', event);
}
$rootScope.$digest();
expect(eventSpy).not.toHaveBeenCalled();
});
element.remove();
}));
});
describe('on enter press', function(){
it('replace inserted with default wrap', inject(function($rootScope, $compile, $window, $document){
$rootScope.html = '<p><br></p>';
Expand Down

0 comments on commit bf4765e

Please sign in to comment.