diff --git a/frontend/src/components/ListViews/LeadsListView.vue b/frontend/src/components/ListViews/LeadsListView.vue
index 971cac24..ff185732 100644
--- a/frontend/src/components/ListViews/LeadsListView.vue
+++ b/frontend/src/components/ListViews/LeadsListView.vue
@@ -107,6 +107,10 @@
v-if="column.key == '_liked_by'"
variant="ghosted"
:class="isLiked(item) ? 'fill-red-500' : 'fill-white'"
+ @click.stop.prevent="
+ () =>
+ emit('likeDoc', { name: row.name, liked: isLiked(item) })
+ "
>
@@ -219,6 +223,7 @@ const emit = defineEmits([
'columnWidthUpdated',
'applyFilter',
'applyLikeFilter',
+ 'likeDoc',
])
const pageLengthCount = defineModel()
diff --git a/frontend/src/components/ViewControls.vue b/frontend/src/components/ViewControls.vue
index b8ddcd2f..28598989 100644
--- a/frontend/src/components/ViewControls.vue
+++ b/frontend/src/components/ViewControls.vue
@@ -789,7 +789,16 @@ function applyLikeFilter() {
updateFilter(filters)
}
-defineExpose({ applyFilter, applyLikeFilter })
+function likeDoc({ name, liked }) {
+ createResource({
+ url: 'frappe.desk.like.toggle_like',
+ params: { doctype: props.doctype, name: name, add: liked ? 'No' : 'Yes' },
+ auto: true,
+ onSuccess: () => reload(),
+ })
+}
+
+defineExpose({ applyFilter, applyLikeFilter, likeDoc })
// Watchers
watch(
diff --git a/frontend/src/pages/Leads.vue b/frontend/src/pages/Leads.vue
index 7dbf4ddb..4a62ef35 100644
--- a/frontend/src/pages/Leads.vue
+++ b/frontend/src/pages/Leads.vue
@@ -44,6 +44,7 @@
@updatePageCount="(count) => (updatedPageCount = count)"
@applyFilter="(data) => viewControls.applyFilter(data)"
@applyLikeFilter="(data) => viewControls.applyLikeFilter(data)"
+ @likeDoc="(data) => viewControls.likeDoc(data)"
/>