flexi-js
Version:
A responsive and flexible css scheme.
41 lines (34 loc) • 952 B
JavaScript
import "./poly/element.closest";
export default class DropDown {
constructor() {
if (window.addEventListener) {
window.addEventListener('click', this._onClick.bind(this));
window.addEventListener('touch', this._onClick.bind(this));
}
}
_onClick(evt) {
let elem = evt.target,
container = elem.closest('.flexi'),
node = elem.closest('.flexi > *'),
activeContainer = this._activeContainer,
activeNode = this._activeNode;
if (container != activeContainer) {
if (activeContainer) {
activeContainer.classList.remove('active');
}
if (container) {
container.classList.add('active');
}
this._activeContainer = container;
}
if (node != activeNode) {
if (activeNode) {
activeNode.classList.remove('active');
}
if (node) {
node.classList.add('active');
}
this._activeNode = node;
}
}
}