import React from 'react'; import DropDownBase from './DropDownBase.js'; export default class DropDownMenu extends DropDownBase { state = { items: this.props.items } render() { let sel = this.state.selectedItem; return
{this.state.items.map((i, index) => (i.split ?
:
{i.hotkey ?
{i.hotkey}
: null} {i.icon ? : null} {i.text}
))}
} onMouseOver = (ev) => { let t = ev.target; while ((t && t != this.refs.dd) && (!t.className || t.className.substr(0, 4) != 'item')) t = t.parentNode; if (t && t != this.refs.dd) this.setState({ selectedItem: parseInt(t.getAttribute('data-index')) }); } onKeyDown = (ev) => { if (ev.keyCode == 40 || ev.keyCode == 38) { let a = ev.keyCode == 40 ? 1 : this.state.items.length-1; let sel = this.state.selectedItem; do { sel = ((sel+a) % this.state.items.length); } while (this.state.items[sel].split && sel != this.state.selectedItem); this.setState({ selectedItem: sel }); } else if (ev.keyCode == 10 || ev.keyCode == 13) this.clickItem(); ev.preventDefault(); ev.stopPropagation(); } clickItem = (ev) => { } myOnClick = (ev) => { if (ev.target.getAttribute('data-index')) this.clickItem(); this.onClick(ev); } }