diff --git a/frontend/src/components/common/DataTable.vue b/frontend/src/components/common/DataTable.vue index 5a9bcd2..96bc7a7 100644 --- a/frontend/src/components/common/DataTable.vue +++ b/frontend/src/components/common/DataTable.vue @@ -300,6 +300,12 @@ @click="$emit('rowClick', slotProps)" /> + @@ -1096,6 +1102,17 @@ const handleStatusButtonClick = (column, rowData) => { } }; +// Handle link clicks +const handleLinkClick = (column, rowData) => { + try { + if (column.onLinkClick && typeof column.onLinkClick === "function") { + column.onLinkClick(rowData[column.fieldName], rowData); + } + } catch (error) { + console.error("Error executing link click:", error); + } +}; + const getBadgeColor = (status) => { switch (status?.toLowerCase()) { case "paid": @@ -1634,4 +1651,18 @@ defineExpose({ transform: none; box-shadow: none; } + +/* Link Styles */ +.datatable-link { + background: none; + border: none; + padding: 0; + cursor: pointer; + outline: none; +} + +.datatable-link:hover { + text-decoration: underline; +} + diff --git a/frontend/src/components/pages/Clients.vue b/frontend/src/components/pages/Clients.vue index 9854aea..8c286eb 100644 --- a/frontend/src/components/pages/Clients.vue +++ b/frontend/src/components/pages/Clients.vue @@ -112,10 +112,11 @@ const columns = [ { label: "Customer Name", fieldName: "customerName", - type: "text", + type: "link", sortable: true, filterable: true, filterInputId: "customerSearchInput", + onLinkClick: (link, rowData) => handleCustomerClick(link, rowData), }, { label: "Type", @@ -126,10 +127,11 @@ const columns = [ { label: "Property", fieldName: "address", - type: "text", + type: "link", sortable: true, filterable: true, filterInputId: "propertySearchInput", + onLinkClick: (link, rowData) => handlePropertyClick(link, rowData), }, //{ // label: "Create Estimate", @@ -297,6 +299,20 @@ const handleAppointmentClick = (status, rowData) => { } }; +const handleCustomerClick = (link, rowData) => { + console.log("DEBUG: Customer Link Clicked."); + const client = encodeURIComponent(rowData.customerName); + const address = encodeURIComponent(rowData.address); + router.push(`/client?client=${client}&address=${address}`); +} + +const handlePropertyClick = (link, rowData) => { + console.log("DEBUG: Property Link Clicked."); + const client = encodeURIComponent(rowData.customerName); + const address = encodeURIComponent(rowData.address); + router.push(`/client?client=${client}&address=${address}`); +} + const handleEstimateClick = (status, rowData) => { const address = encodeURIComponent(rowData.address); router.push(`/estimate?new=true&address=${address}`);