diff --git a/frontend/src/pages/JobApplications.vue b/frontend/src/pages/JobApplications.vue index 1f038d3d..92080299 100644 --- a/frontend/src/pages/JobApplications.vue +++ b/frontend/src/pages/JobApplications.vue @@ -40,7 +40,19 @@ - + + +
- +
{{ item }}
- - + + +
{{ item }} @@ -150,6 +150,8 @@ import { Button, Breadcrumbs, Dialog, + Dropdown, + FeatherIcon, FormControl, TextEditor, ListView, @@ -163,7 +165,7 @@ import { usePageMeta, toast, } from 'frappe-ui' -import { User, Download, Mail } from 'lucide-vue-next' + import { inject, ref, computed, reactive } from 'vue' import { sessionStore } from '../stores/session' import EmptyState from '@/components/EmptyState.vue' @@ -253,27 +255,47 @@ const downloadResume = (resumeUrl) => { window.open(resumeUrl, '_blank') } +const getActionOptions = (row) => { + const options = [] + if (row.resume) { + options.push({ + label: __('View Resume'), + icon: 'download', + onClick: () => downloadResume(row.resume), + }) + } + options.push({ + label: __('Send Email'), + icon: 'mail', + onClick: () => openEmailModal(row), + }) + return options +} + const applicationColumns = computed(() => { return [ { - label: __('Name'), - key: 'display_name', - width: '15rem', + label: __('Full Name'), + key: 'full_name', + width: 2, + icon: 'user', }, { label: __('Email'), key: 'email', - width: '15rem', + width: 2, + icon: 'at-sign', }, { label: __('Applied On'), key: 'applied_date', - width: '10rem', + width: 1, + icon: 'calendar', }, { - label: __('Actions'), + label: '', key: 'actions', - width: '10rem', + width: 1, }, ] }) @@ -282,7 +304,7 @@ const applicantRows = computed(() => { if (!applications.data) return [] return applications.data.map((application) => ({ ...application, - display_name: application.full_name, + full_name: application.full_name, applied_date: dayjs(application.creation).format('MMM DD, YYYY'), })) })