@aotearoan/neon
Version:
Neon is a lightweight design library of Vue 3 components with minimal dependencies.
3 lines (2 loc) • 1.33 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../models/NeonDropdownPlacementObject.cjs.js"),l=require("../enums/NeonPosition.cjs.js"),P=require("./NeonPlacementUtils.cjs.js");class f{static calculatePlacement(e,o,n,t){const i=s.NeonDropdownPlacementObject.toNeonDropdownPlacementObject(n),{maxWidth:a,maxHeight:r}=P.NeonPlacementUtils.calculateBounds(t),c=P.NeonPlacementUtils.calculateAvailableSpace(e,a,r,t),m={top:c.bottom+e.offsetHeight,bottom:c.top+e.offsetHeight,left:c.right+e.offsetWidth,right:c.left+e.offsetWidth};return f.findPlacement(o,c,m,i,s.NeonDropdownPlacementObject.flipMinor(i),s.NeonDropdownPlacementObject.flipMajor(i),s.NeonDropdownPlacementObject.flip(i))}static findPlacement(e,o,n,...t){var a;const i=t.findIndex(r=>f.validPlacement(e,o,n,r));return((a=t[i])==null?void 0:a.placement)||t[0].placement}static validPlacement(e,o,n,t){switch(t.majorPlacement){case l.NeonPosition.Top:case l.NeonPosition.Bottom:return e.offsetHeight<=o[t.majorPlacement]&&!!t.minorPlacement&&e.offsetWidth<=n[t.minorPlacement];case l.NeonPosition.Left:case l.NeonPosition.Right:return e.offsetWidth<=o[t.majorPlacement]&&!!t.minorPlacement&&e.offsetHeight<=n[t.minorPlacement]}}}exports.NeonDropdownPlacementUtils=f;
//# sourceMappingURL=NeonDropdownPlacementUtils.cjs.js.map