UNPKG

@esri/calcite-components

Version:

Web Components for Esri's Calcite Design System.

35 lines (34 loc) 1.1 kB
import { createPopper as setupPopper } from "@popperjs/core"; import { getElementDir } from "./dom"; export const CSS = { animation: "calcite-popper-anim", animationActive: "calcite-popper-anim--active" }; export function getPlacement(el, placement) { const values = ["left", "right"]; if (getElementDir(el) === "rtl") { values.reverse(); } return placement.replace(/leading/gi, values[0]).replace(/trailing/gi, values[1]); } export function createPopper({ referenceEl, el, placement, modifiers }) { if (!referenceEl) { return null; } return setupPopper(referenceEl, el, { placement: getPlacement(el, placement), modifiers }); } export function updatePopper({ el, modifiers, placement: PopperPlacement, popper }) { const placement = getPlacement(el, PopperPlacement); popper.setOptions({ modifiers, placement }); } export function hypotenuse(sideA, sideB) { return Math.sqrt(Math.pow(sideA, 2) + Math.pow(sideB, 2)); } const visiblePointerSize = 4; export const defaultOffsetDistance = Math.ceil(hypotenuse(visiblePointerSize, visiblePointerSize));