Compare commits
2 commits
37a405a1f2
...
54280ac78f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54280ac78f | ||
|
|
1a7f0d872a |
2 changed files with 49 additions and 2 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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}`);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue