diff --git a/src/services/pmsGrid/BasicTable.jsx b/src/services/pmsGrid/BasicTable.jsx index 5377f4db..83c1e3d1 100644 --- a/src/services/pmsGrid/BasicTable.jsx +++ b/src/services/pmsGrid/BasicTable.jsx @@ -717,10 +717,31 @@ export default function DemoBOQGrid() { }); return () => ps.destroy(); }, []); + + + + const container = document.getElementById("mainContainer"); +const trigger = document.getElementById("dropdownBtn"); +const dropdown = document.getElementById("dropdownMenu"); + +trigger.addEventListener("click", () => { + dropdown.classList.toggle("show"); + autoPositionInsideContainer(trigger, dropdown, container); +}); + return (
- +
+ + + +
+ ({ diff --git a/src/services/pmsGrid/pms-grid.css b/src/services/pmsGrid/pms-grid.css index f1d61478..c44458ba 100644 --- a/src/services/pmsGrid/pms-grid.css +++ b/src/services/pmsGrid/pms-grid.css @@ -255,3 +255,35 @@ } +.container-box { + width: 400px; /* your container */ + border: 1px solid #ccc; + padding: 20px; + position: relative; /* IMPORTANT */ +} + +.btn { + padding: 8px 12px; +} + +.dropdown-menu { + position: absolute; + top: 40px; + min-width: 150px; + background: white; + border: 1px solid #ccc; + display: none; + padding: 10px; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-menu.open-right { + left: 0; +} + +.dropdown-menu.open-left { + right: 0; +} diff --git a/src/services/pmsGrid/utils.js b/src/services/pmsGrid/utils.js index 83517560..fb683008 100644 --- a/src/services/pmsGrid/utils.js +++ b/src/services/pmsGrid/utils.js @@ -17,3 +17,27 @@ export function exportToCSV(rows = [], columns = [], filename = "export.csv") { link.click(); document.body.removeChild(link); } + +function autoPositionInsideContainer(triggerEl, dropdownEl, containerEl) { + const triggerRect = triggerEl.getBoundingClientRect(); + const dropdownWidth = dropdownEl.offsetWidth; + const containerRect = containerEl.getBoundingClientRect(); + + const spaceRight = containerRect.right - triggerRect.right; + const spaceLeft = triggerRect.left - containerRect.left; + + if (spaceRight < dropdownWidth && spaceLeft > dropdownWidth) { + // Open to LEFT + dropdownEl.style.left = ""; + dropdownEl.style.right = "0px"; + dropdownEl.classList.add("open-left"); + dropdownEl.classList.remove("open-right"); + } else { + // Open to RIGHT + dropdownEl.style.right = ""; + dropdownEl.style.left = "0px"; + dropdownEl.classList.add("open-right"); + dropdownEl.classList.remove("open-left"); + } +} +