feat(events): support preventdefault

Fixes #1039
Closes #1397
This commit is contained in:
Marc Laval
2015-04-16 18:03:15 +02:00
parent aabe83cf63
commit 883e1c1541
5 changed files with 61 additions and 9 deletions

View File

@ -591,6 +591,23 @@ export function main() {
});
}));
it('should support preventing default on render events', inject([TestBed, AsyncTestCompleter], (tb, async) => {
tb.overrideView(MyComp, new View({
template: '<input type="checkbox" listenerprevent></input><input type="checkbox" listenernoprevent></input>',
directives: [DecoratorListeningDomEventPrevent, DecoratorListeningDomEventNoPrevent]
}));
tb.createView(MyComp, {context: ctx}).then((view) => {
expect(DOM.getChecked(view.rootNodes[0])).toBeFalsy();
expect(DOM.getChecked(view.rootNodes[1])).toBeFalsy();
DOM.dispatchEvent(view.rootNodes[0], DOM.createMouseEvent('click'));
DOM.dispatchEvent(view.rootNodes[1], DOM.createMouseEvent('click'));
expect(DOM.getChecked(view.rootNodes[0])).toBeFalsy();
expect(DOM.getChecked(view.rootNodes[1])).toBeTruthy();
async.done();
});
}));
it('should support render global events from multiple directives', inject([TestBed, AsyncTestCompleter], (tb, async) => {
tb.overrideView(MyComp, new View({
template: '<div *if="ctxBoolProp" listener listenerother></div>',
@ -1162,6 +1179,30 @@ class DecoratorListeningDomEventOther {
}
}
@Decorator({
selector: '[listenerprevent]',
hostListeners: {
'click': 'onEvent($event)'
}
})
class DecoratorListeningDomEventPrevent {
onEvent(event) {
return false;
}
}
@Decorator({
selector: '[listenernoprevent]',
hostListeners: {
'click': 'onEvent($event)'
}
})
class DecoratorListeningDomEventNoPrevent {
onEvent(event) {
return true;
}
}
@Component({
selector: '[id]',
properties: {'id': 'id'}