Skip to content

Commit

Permalink
Merge pull request #1257 from /issues/1254@v3
Browse files Browse the repository at this point in the history
jquery__event_type_pointerpressrelease: expose `originalEvent`
  • Loading branch information
dfilatov committed Mar 30, 2016
2 parents 15c30a5 + dec3356 commit 7eba4dd
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,17 @@ modules.define('jquery', function(provide, $) {
$.each({
pointerpress : 'pointerdown',
pointerrelease : 'pointerup pointercancel'
}, function(spec, origEvent) {
}, function(fix, origEvent) {
function eventHandler(e) {
var res, origType = e.handleObj.origType;

if(e.which === 1) {
e.type = spec;
res = $.event.dispatch.apply(this, arguments);
e.type = origType;
var fixedEvent = cloneEvent(e);
fixedEvent.type = fix;
fixedEvent.originalEvent = e;
return $.event.dispatch.call(this, fixedEvent);
}

return res;
}

$.event.special[spec] = {
$.event.special[fix] = {
setup : function() {
$(this).on(origEvent, eventHandler);
return false;
Expand All @@ -28,6 +25,16 @@ $.each({
};
});

function cloneEvent(event) {
var eventCopy = $.extend(new $.Event(), event);
if(event.preventDefault) {
eventCopy.preventDefault = function() {
event.preventDefault();
};
}
return eventCopy;
}

provide($);

});
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,62 @@ modules.define(
['jquery', 'sinon'],
function(provide, $, sinon) {

describe('jquery__event_type_pointerpressrelease', function() {
it('should trigger "pointerpress" event on "mousedown"', function() {
var spy = sinon.spy(),
e = $.Event('mousedown', { which : 1 }),
elem = $('<div/>').appendTo('body');

elem.on('pointerpress', spy).trigger(e);
describe.only('jquery__event_type_pointerpressrelease', function() {
var elem;

spy.should.have.been.calledOnce;
beforeEach(function() {
elem = $('<div/>').appendTo('body');
});

afterEach(function() {
elem.remove();
});

it('should trigger "pointerrelease" event on "mouseup"', function() {
var spy = sinon.spy(),
e = $.Event('mouseup', { which : 1 }),
elem = $('<div/>').appendTo('body');
it('should trigger "pointerpress" event on "mousedown"', function() {
var spy = sinon.spy();
elem.on('pointerpress', spy)
.trigger($.Event('mousedown', { which : 1 }))
.trigger('mouseup');

spy.should.have.been.calledOnce;
});

elem.on('pointerrelease', spy).trigger(e);
it('should trigger "pointerrelease" event on "mouseup"', function() {
var spy = sinon.spy();
elem.on('pointerrelease', spy)
.trigger('mousedown')
.trigger($.Event('mouseup', { which : 1 }));

spy.should.have.been.calledOnce;
});

elem.remove();
it('"pointerpress" should have "pointerdown" original event', function(done) {
elem
.on('pointerpress', function(e) {
e.originalEvent.type.should.be.equal('pointerdown');
done();
})
.trigger($.Event('mousedown', { which : 1 }))
.trigger('mouseup');
});

it('"pointerrelease" should have "pointerup" original event', function(done) {
elem
.on('pointerrelease', function(e) {
e.originalEvent.type.should.be.equal('pointerup');
done();
})
.trigger('mousedown')
.trigger($.Event('mouseup', { which : 1 }));
});

it('"pointerrelease" should have "pointercancel" original event', function(done) {
elem
.on('pointerrelease', function(e) {
e.originalEvent.type.should.be.equal('pointercancel');
done();
})
.trigger($.Event('pointercancel', { which : 1 }));
});
});

Expand Down

0 comments on commit 7eba4dd

Please sign in to comment.