@stackoverfloweth/prefect-design
Version:
A collection of low-level Vue components.
141 lines (113 loc) • 3.87 kB
text/typescript
import { PositionMethod, Position } from '@/types/position'
export const top: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top - content.height
const left = target.left - container.left + target.width / 2 - content.width / 2
return {
top,
left,
}
}
export const right: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top - content.height / 2 + target.height / 2
const left = target.left - container.left + target.width
return {
top,
left,
}
}
export const rightInside: PositionMethod = function(target, content, container): Position {
const top = target.top - container.top - content.height / 2 + target.height / 2
const left = target.right - content.width
return {
top,
left,
}
}
export const bottom: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top + target.height
const left = target.left - container.left + target.width / 2 - content.width / 2
return {
top,
left,
}
}
export const left: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top - content.height / 2 + target.height / 2
const left = target.left - container.left - content.width
return {
top,
left,
}
}
export const leftInside: PositionMethod = function(target, content, container): Position {
const top = target.top - container.top - content.height / 2 + target.height / 2
const { left } = target
return {
top,
left,
}
}
export const topRight: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top - content.height
const left = target.right - container.left - content.width
return {
top,
left,
}
}
export const bottomRight: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top + target.height
const left = target.right - container.left - content.width
return {
top,
left,
}
}
export const topLeft: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top - content.height
const left = target.right - container.left - target.width
return {
top,
left,
}
}
export const bottomLeft: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top + target.height
const left = target.right - container.left - target.width
return {
top,
left,
}
}
export const leftBottom: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.bottom - container.top - content.height
const left = target.left - container.left - content.width
return {
top,
left,
}
}
export const rightBottom: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.bottom - container.top - content.height
const left = target.left - container.left + target.width
return {
top,
left,
}
}
export const leftTop: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top
const left = target.left - container.left - content.width
return {
top,
left,
}
}
export const rightTop: PositionMethod = function(target: DOMRect, content: DOMRect, container: DOMRect): Position {
const top = target.top - container.top
const left = target.left - container.left + target.width
return {
top,
left,
}
}