@smkit/ui
Version:
UI Kit of SberMarketing
47 lines (46 loc) • 1.41 kB
JavaScript
import { get } from 'svelte/store';
export const actions = {
close: (node, controller) => {
const handleMouseEnter = () => {
// console.log('action close');
controller.closeChildren(controller);
};
node.addEventListener('mouseenter', handleMouseEnter);
return {
destroy() {
node.removeEventListener('mouseenter', handleMouseEnter);
}
};
},
trigger(node, settings) {
let { controller, position, event } = settings;
position ??= 'right';
event ??= 'click';
controller.setTrigger(node, 'click');
function listener(e) {
e.preventDefault();
const rects = node.getBoundingClientRect();
if (get(controller.show)) {
controller.close();
return;
}
let x = rects.x;
let y = rects.y;
switch (position) {
case 'right':
x += rects.width + 10;
break;
case 'bottom':
y += rects.height + 10;
break;
}
controller.spawn(x, y);
}
node.addEventListener(event, listener);
return {
destroy() {
node.removeEventListener(event, listener);
}
};
}
};