Skip to content

Instantly share code, notes, and snippets.

@HenriqueLimas
Created May 3, 2016 12:36
Show Gist options
  • Save HenriqueLimas/2ff9993ac32aaa54cb126fe2e070eeeb to your computer and use it in GitHub Desktop.
Save HenriqueLimas/2ff9993ac32aaa54cb126fe2e070eeeb to your computer and use it in GitHub Desktop.
Dropdown with RxJs
let Observable = Rx.Observable;
let div:Element = document.querySelector('.to-drag');
let mousedown = Observable.fromEvent(div, 'mousedown');
let mouseup = Observable.fromEvent(document, 'mouseup');
let mousemove = Observable.fromEvent(document, 'mousemove');
mousedown.forEach((e) => {
return mousemove
.takeUntil(mouseup)
.map((e:MouseEvent) => {
return {
x: e.pageX,
y: e.pageY
};
})
.forEach((pos:Object) => {
let element:Element = e.target;
let rect:ClientRect = element.getBoundingClientRect();
element.style.position = 'absolute';
element.style.left = (pos.x - (rect.width / 2)) + 'px';
element.style.top = (pos.y - (rect.height / 2)) + 'px';
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment