UNPKG

@smkit/ui

Version:

UI Kit of SberMarketing

47 lines (46 loc) 1.41 kB
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); } }; } };