UNPKG

create-nexaui-electron

Version:

Create Nexa App - Tool untuk membuat aplikasi Nexa Electron

62 lines (54 loc) 1.94 kB
export class Popover { constructor() { this.popovers = document.querySelectorAll(".nx-popover"); this.init(); } init() { // Inisialisasi event listeners document.addEventListener("DOMContentLoaded", () => this.initDynamicPopovers() ); window.addEventListener("resize", () => this.initDynamicPopovers()); } initDynamicPopovers() { this.popovers.forEach((popover) => { const content = popover.querySelector(".popover-content"); const position = popover.getAttribute("data-position"); popover.addEventListener("mouseenter", () => { // Reset style content.style.transform = ""; content.style.top = ""; content.style.bottom = ""; content.style.left = ""; content.style.right = ""; // Dapatkan posisi dan ukuran const buttonRect = popover.getBoundingClientRect(); const contentRect = content.getBoundingClientRect(); // Atur posisi berdasarkan data-position switch (position) { case "top": content.style.bottom = "calc(100% + 10px)"; content.style.left = "50%"; content.style.transform = "translateX(-50%)"; break; case "right": content.style.top = "50%"; content.style.left = "calc(100% + 10px)"; content.style.transform = "translateY(-50%)"; break; case "bottom": content.style.top = "calc(100% + 10px)"; content.style.left = "50%"; content.style.transform = "translateX(-50%)"; break; case "left": content.style.top = "50%"; content.style.right = "calc(100% + 10px)"; content.style.left = "auto"; content.style.transform = "translateY(-50%)"; break; } }); }); } }