selecton
Version:
Selecton.js combines a searchbar and a dropdown menu with nested child lists.
31 lines (24 loc) • 1.03 kB
JavaScript
import {select as d3select} from 'd3-selection';
import {event as d3event} from 'd3-selection';
import {_getInputSearchField} from './elementHandler';
export default function (w){
var inputSearch = _getInputSearchField(w);
var inputItem = d3select(this.parentNode).classed('drag-active', true).node();
var clone = inputItem.cloneNode(true);
var eventX = d3event.sourceEvent.pageX;
var eventY = d3event.sourceEvent.pageY;
var rect = this.getBoundingClientRect();
var xDragOffset = eventX - rect.left;
var yDragOffset = eventY - rect.top - (window.scrollY || window.pageYOffset);
d3select(clone)
.attr('class', 'input-item-clone')
.style('transform-origin', xDragOffset + 'px ' + yDragOffset + 'px')
.style('left', eventX - xDragOffset + 'px')
.style('top', eventY - yDragOffset + 'px');
document.body.appendChild(clone);
inputSearch.remove();
return {
x : xDragOffset,
y : yDragOffset
};
}