Skip to content

Commit

Permalink
Added unregister trigger support
Browse files Browse the repository at this point in the history
  • Loading branch information
hsnaydd committed Mar 24, 2017
1 parent 696e470 commit 9f136e4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
9 changes: 7 additions & 2 deletions src/moveTo.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ const MoveTo = (() => {
* Register a dom element as trigger
* @param {HTMLElement} dom Dom trigger element
* @param {function} callback Callback function
* @return {function|void} unregister function
*/
MoveTo.prototype.registerTrigger = function(dom, callback) {
if (!dom) {
Expand All @@ -104,10 +105,14 @@ const MoveTo = (() => {
options.callback = callback;
}

dom.addEventListener('click', (e) => {
const listener = (e) => {
e.preventDefault();
this.move(target, options);
});
};

dom.addEventListener('click', listener, false);

return () => dom.removeEventListener('click', listener, false);
};

/**
Expand Down
15 changes: 13 additions & 2 deletions tests/moveTo-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ function createMockDomElement(options) {
offsetParent: null,
addEventListener: function(event, cb) {
this._listeners[event] = cb;
},
removeEventListener: function(event, cb) {
delete this._listeners[event];
}
};
}
Expand Down Expand Up @@ -65,15 +68,23 @@ test('It should change options', (t) => {

test('It should register trigger', (t) => {
const instance = new MoveTo();

const elem = createMockDomElement({});
t.is(elem._listeners['click'], undefined);

instance.registerTrigger(elem);

t.true(typeof elem._listeners['click'] === 'function');
});

test('It should unregister trigger', (t) => {
const instance = new MoveTo();
const elem = createMockDomElement({});
const unregister = instance.registerTrigger(elem);

t.true(typeof elem._listeners['click'] === 'function');
unregister();
t.true(typeof elem._listeners['click'] === 'undefined');
});

test('It should add custom ease function', (t) => {
const inst = new MoveTo();
const elem = createMockDomElement({});
Expand Down

0 comments on commit 9f136e4

Please sign in to comment.