diff --git a/src/api/API.ts b/src/api/API.ts
index 88d0472..796f622 100644
--- a/src/api/API.ts
+++ b/src/api/API.ts
@@ -43,6 +43,7 @@ export const API = {
exportApplicationResponses: (params: { applicationIds: string }) => client.get('/onboarding/applications/export-responses', params),
getApplications: (params?: any) => client.get('/onboarding/applications', params),
shortlistApplications: (data: any) => client.post('/onboarding/applications/shortlist', data),
+ sendBulkReminders: (data: { applicationIds: string[] }) => client.post('/onboarding/applications/reminders', data),
getApplicationById: (id: string) => client.get(`/onboarding/applications/${id}`),
updateApplication: (id: string, data: any) => client.put(`/onboarding/applications/${id}`, data),
getLatestQuestionnaire: () => client.get('/questionnaire/latest'),
diff --git a/src/features/onboarding/pages/AllApplicationsPage.tsx b/src/features/onboarding/pages/AllApplicationsPage.tsx
index 0bc84b7..b9c86b0 100644
--- a/src/features/onboarding/pages/AllApplicationsPage.tsx
+++ b/src/features/onboarding/pages/AllApplicationsPage.tsx
@@ -26,7 +26,6 @@ import {
Download,
Grid3x3,
List,
- Mail,
CheckCircle,
AlertCircle,
Loader2
@@ -193,9 +192,6 @@ export function AllApplicationsPage({ onViewDetails, initialFilter = 'all' }: Al
}
};
- const handleBulkReminders = () => {
- toast.success(`Reminder emails sent to ${selectedIds.length} applicant(s)`);
- };
// For DD's All Applications page, only show initial statuses
const statusOptions: ApplicationStatus[] = [
@@ -356,16 +352,6 @@ export function AllApplicationsPage({ onViewDetails, initialFilter = 'all' }: Al
{selectedIds.length > 0 && (
<>
-
-
)}
diff --git a/src/features/onboarding/pages/NonOpportunitiesPage.tsx b/src/features/onboarding/pages/NonOpportunitiesPage.tsx
index 1fb61ef..085a573 100644
--- a/src/features/onboarding/pages/NonOpportunitiesPage.tsx
+++ b/src/features/onboarding/pages/NonOpportunitiesPage.tsx
@@ -11,6 +11,14 @@ import {
SelectTrigger,
SelectValue,
} from '@/components/ui/select';
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from '@/components/ui/popover';
+import { Calendar as CalendarPicker } from '@/components/ui/calendar';
+import { format } from 'date-fns';
+import { cn } from '@/components/ui/utils';
import {
Search,
Download,
@@ -182,9 +190,12 @@ export function NonOpportunitiesPage({ onViewDetails }: NonOpportunitiesPageProp
setApplicationsData(mappedApps);
- // Extract unique locations
- const uniqueLocations = Array.from(new Set(mappedApps.map(app => app.preferredLocation))).filter(Boolean);
- setLocations(uniqueLocations);
+ // Extract unique locations and states from the returned data
+ const newLocations = Array.from(new Set(mappedApps.map(app => app.preferredLocation))).filter(Boolean) as string[];
+ setLocations(prev => Array.from(new Set([...prev, ...newLocations])));
+
+ const newStates = Array.from(new Set(mappedApps.map(app => app.state))).filter(Boolean) as string[];
+ setStates(prev => Array.from(new Set([...prev, ...newStates])));
} catch (error) {
console.error('Failed to fetch applications:', error);
toast.error('Failed to load non-opportunity requests');
@@ -247,29 +258,55 @@ export function NonOpportunitiesPage({ onViewDetails }: NonOpportunitiesPageProp
-
-
- setFromDate(e.target.value)}
- className="pl-10 text-xs"
- placeholder="From"
- data-testid="onboarding-non-opps-from-date"
- />
-
+
+
+
+
+
+ setFromDate(date ? date.toISOString().split('T')[0] : '')}
+ initialFocus
+ />
+
+
+
to
-
-
- setToDate(e.target.value)}
- className="pl-10 text-xs"
- placeholder="To"
- data-testid="onboarding-non-opps-to-date"
- />
-
+
+
+
+
+
+
+ setToDate(date ? date.toISOString().split('T')[0] : '')}
+ initialFocus
+ />
+
+
+
+