31 lines
828 B
JavaScript
31 lines
828 B
JavaScript
|
const clickEvent = function() {
|
||
|
return new MouseEvent('click', {
|
||
|
bubbles: true,
|
||
|
cancelable: true,
|
||
|
view: window,
|
||
|
});
|
||
|
};
|
||
|
export default function(closest, click = clickEvent) {
|
||
|
// TODO: Decide whether we should use `e` for ease
|
||
|
// or `target`/`el`
|
||
|
return function(e) {
|
||
|
// click on row functionality
|
||
|
// so if you click the actual row but not a link
|
||
|
// find the first link and fire that instead
|
||
|
const name = e.target.nodeName.toLowerCase();
|
||
|
switch (name) {
|
||
|
case 'input':
|
||
|
case 'label':
|
||
|
case 'a':
|
||
|
case 'button':
|
||
|
return;
|
||
|
}
|
||
|
// TODO: why should this be restricted to a tr
|
||
|
// closest should probably be relaced with a finder function
|
||
|
const $a = closest('tr', e.target).querySelector('a');
|
||
|
if ($a) {
|
||
|
$a.dispatchEvent(click());
|
||
|
}
|
||
|
};
|
||
|
}
|