Compare commits

..

2 commits

2 changed files with 49 additions and 2 deletions

View file

@ -300,6 +300,12 @@
@click="$emit('rowClick', slotProps)"
/>
</template>
<template v-if="col.type === 'link'" #body="slotProps">
<button class="datatable-link"
@click="handleLinkClick(col, slotProps.data)">
{{ slotProps.data[col.fieldName] }}
</button>
</template>
</Column>
<!-- Actions Column -->
@ -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;
}
</style>

View file

@ -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}`);