// @ts-ignore import template from "./widget.html"; import toggle from "../../utils/toggle"; import { renderMenu } from "../menu/menu"; import { ISeinnaSettings } from "../../sienna"; import translateMenu from "../menu/translateMenu"; export function renderWidget(options: ISeinnaSettings) { let { position = "bottom-left", offset = [20, 20] } = options; const widget: HTMLElement = document.createElement("div"); widget.innerHTML = template; widget.classList.add("asw-container"); let $btn: HTMLElement = widget.querySelector(".asw-menu-btn"); let offsetX = offset?.[0] ?? 20; let offsetY = offset?.[1] ?? 25; let buttonStyle: { left?: string; bottom?: string; right?: string; top?: string; } = { left: `${offsetX}px`, bottom: `${offsetY}px`, }; if (position === "bottom-right") { buttonStyle = { ...buttonStyle, right: `${offsetX}px`, left: "auto", }; } else if (position === "top-left") { buttonStyle = { ...buttonStyle, top: `${offsetY}px`, bottom: "auto", }; } else if (position === "center-left") { buttonStyle = { ...buttonStyle, bottom: `calc(50% - (55px / 2) - ${offset?.[1] ?? 0}px)`, }; } else if (position === "top-right") { buttonStyle = { top: `${offsetY}px`, bottom: "auto", right: `${offsetX}px`, left: "auto", }; } else if (position === "center-right") { buttonStyle = { right: `${offsetX}px`, left: "auto", bottom: `calc(50% - (55px / 2) - ${offset?.[1] ?? 0}px)`, }; } else if (position === "bottom-center") { buttonStyle = { ...buttonStyle, left: `calc(50% - (55px / 2) - ${offset?.[0] ?? 0}px)`, }; } else if (position === "top-center") { buttonStyle = { top: `${offsetY}px`, bottom: "auto", left: `calc(50% - (55px / 2) - ${offset?.[0] ?? 0}px)`, }; } Object.assign($btn.style, buttonStyle); let menu; $btn?.addEventListener("click", (event) => { event.preventDefault(); if (menu) { toggle(menu); } else { menu = renderMenu({ ...options, container: widget, }); } }); translateMenu(widget); document.body.appendChild(widget); return widget; }