select vbox multiple wip

This commit is contained in:
Mashy 2019-11-19 11:35:30 +10:00
parent 0d08536837
commit 33152e54d5

View File

@ -172,14 +172,13 @@ class Vbox extends preact.Component {
if (!vboxSelecting) return false; if (!vboxSelecting) return false;
document.activeElement.blur(); document.activeElement.blur();
clearVboxSelected(); clearVboxSelected();
sendVboxAccept(vboxSelected[0], vboxSelected[1]); sendVboxAccept(vboxSelected[0][0], vboxSelected[0][1]);
return true; return true;
} }
function availableBtn(v, group, index) { function availableBtn(v, group, index) {
if (!v) return <button disabled class='empty' key={(group * 10) + index} >&nbsp;</button>; if (!v) return <button disabled class='empty' key={(group * 10) + index} >&nbsp;</button>;
const selected = vboxSelected[0] === group && vboxSelected[1] === index; const selected = vboxSelected.length && vboxSelected.some(vs => vs[0] === group && vs[1] === index);
// state not yet set in double click handler // state not yet set in double click handler
function onDblClick(e) { function onDblClick(e) {
clearVboxSelected(); clearVboxSelected();
@ -190,10 +189,11 @@ class Vbox extends preact.Component {
function onClick(e) { function onClick(e) {
e.stopPropagation(); e.stopPropagation();
setItemEquip(null); setItemEquip(null);
setCombiner([]);
setInfo(vbox.free[group][index]); setInfo(vbox.free[group][index]);
if (vboxSelected[0] === group && vboxSelected[1] === index) return clearVboxSelected(); if (vboxSelected.length && vboxSelected.some(vs => vs[0] === group && vs[1] === index)) {
return setVboxSelected([group, index]); return setVboxSelected(vboxSelected.filter(vs => !(vs[0] === group && vs[1] === index)));
}
return setVboxSelected([...vboxSelected, [group, index]]);
} }
const combinerItems = combiner.map(j => vbox.bound[j]); const combinerItems = combiner.map(j => vbox.bound[j]);
@ -217,10 +217,7 @@ class Vbox extends preact.Component {
const disabled = vbox.bits <= group; const disabled = vbox.bits <= group;
return ( return (
<label draggable='true' <label draggable='true'
onDragStart={ev => { onDragStart={ev => ev.dataTransfer.setData('text', '')}
onClick(ev);
ev.dataTransfer.setData('text', '')
}}
key={group * 10 + index} key={group * 10 + index}
onDragEnd={clearVboxSelected}> onDragEnd={clearVboxSelected}>
<button <button