Spaces:
Paused
Paused
File size: 1,034 Bytes
a0fda44 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
const useModalBestPosition =
() =>
(event, { overlayId, modalData }) => {
const overlayData = document
.getElementById(overlayId)
.getBoundingClientRect();
let left;
let top;
// Co ordinates of click position
const clickX = event.clientX;
const clickY = event.clientY;
// Get horizontal position
const clickXPositionInOverlay = clickX - overlayData.left;
const canModalFitX =
overlayData.width - clickXPositionInOverlay > modalData.width;
left = canModalFitX
? clickXPositionInOverlay
: overlayData.width - modalData.width;
// Get vertical position
const clickYPositionInOverlay = clickY - overlayData.top;
const canModalFitY =
overlayData.height - clickYPositionInOverlay > modalData.height;
// If click position is too close to the bottom
top = canModalFitY
? clickYPositionInOverlay
: overlayData.height - modalData.height;
return {
left,
top,
};
};
export default useModalBestPosition;
|