diff --git a/src/components/collections/PmGridCollection.jsx b/src/components/collections/PmGridCollection.jsx index 36bb11d9..21bd4825 100644 --- a/src/components/collections/PmGridCollection.jsx +++ b/src/components/collections/PmGridCollection.jsx @@ -12,6 +12,9 @@ const PmGridCollection = ({ selectedProject, fromDate, toDate, isPending }) => { className: "text-start", groupable: true, enableAdvancedFilter: false, + onCellClick: (row, column) => { + console.log("Clicked cell:", row, column); + }, }, { key: "title", @@ -123,7 +126,7 @@ const PmGridCollection = ({ selectedProject, fromDate, toDate, isPending }) => { { label: "Edit", icon: "bx-edit ", - onClick: (row) => console.log("Edit", row), + onClick: (row) => console.log("Edit", row, col), }, { label: "Delete", diff --git a/src/services/pmsGrid/BasicTable.jsx b/src/services/pmsGrid/BasicTable.jsx index 83c1e3d1..595db4da 100644 --- a/src/services/pmsGrid/BasicTable.jsx +++ b/src/services/pmsGrid/BasicTable.jsx @@ -216,7 +216,8 @@ const boqData = [ id: 18, category: "Waterproofing Works", itemCode: "W-002", - description: "Polyurethane Waterproofing Membrane Polyurethane Waterproofing Membrane", + description: + "Polyurethane Waterproofing Membrane Polyurethane Waterproofing Membrane", unit: "Sqm", quantity: 200, rate: 850, @@ -610,7 +611,6 @@ const boqData = [ }, ]; - /** * COLUMN DEFINITIONS */ @@ -718,31 +718,25 @@ 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); -}); + const trigger = document.getElementById("dropdownBtn"); + const dropdown = document.getElementById("dropdownMenu"); return (
- + - -
+ +
- ({ ...r, @@ -767,14 +761,13 @@ trigger.addEventListener("click", () => { { label: "Edit", icon: "bx-edit ", - onClick: (row) => console.log("Edit", row), + onClick: (row,ind,column) => console.log("Edit", row,ind,column), }, { label: "Delete", icon: "bx-trash text-danger", onClick: (row) => console.log("Delete", row), }, - ], }} renderExpanded={(row) => ( diff --git a/src/services/pmsGrid/PmsGrid.jsx b/src/services/pmsGrid/PmsGrid.jsx index baee4496..772973dd 100644 --- a/src/services/pmsGrid/PmsGrid.jsx +++ b/src/services/pmsGrid/PmsGrid.jsx @@ -24,6 +24,7 @@ export default function PmsGrid({ renderExpanded, }) { const [isFullScreen, setFullScreen] = useState(false); + const [activeCell, setActiveCell] = useState(null); const grid = useGridCore({ data, serverMode, @@ -380,11 +381,14 @@ export default function PmsGrid({ >
- {loading ? (

Loading...

):(Image) } - + {loading ? ( +

Loading...

+ ) : ( + Image + )}
@@ -523,11 +527,19 @@ export default function PmsGrid({ { + e.stopPropagation(); + setActiveCell({ + rowId: row[rowKey], + columnKey: col.key, + }); + col.onCellClick && col.onCellClick(row, col); + }} className={`${col.className ?? ""} ${ col.pinned ? "pinned-left px-3 bg-white pms-grid td pinned" : "px-3" - }`} + } ${activeCell?.rowId == row.id && activeCell.columnKey === col.key ? "grid-cell-active" : ""} cursor-pointer`} > {col.render ? col.render(row) : row[col.key] ?? ""} diff --git a/src/services/pmsGrid/pms-grid.css b/src/services/pmsGrid/pms-grid.css index 0eadc437..ea5e364e 100644 --- a/src/services/pmsGrid/pms-grid.css +++ b/src/services/pmsGrid/pms-grid.css @@ -215,6 +215,12 @@ } +.grid-cell-active { + outline: 1px solid #696cff; /* Sneat primary */ + outline-offset: -2px; + background-color: #f5f6ff; +} +