From f32c844e65f884d0aa7bd6a371ced6bc0401fc2e Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sun, 30 Aug 2026 12:24:09 +0700 Subject: [PATCH] feat: enhance student creation and editing forms with combobox for academic advisor selection --- .../js/pages/admin/users/students/create.tsx | 287 ++++++++++++--- .../js/pages/admin/users/students/edit.tsx | 332 +++++++++++++++--- 2 files changed, 509 insertions(+), 110 deletions(-) diff --git a/resources/js/pages/admin/users/students/create.tsx b/resources/js/pages/admin/users/students/create.tsx index 8589bc1..3f7449f 100644 --- a/resources/js/pages/admin/users/students/create.tsx +++ b/resources/js/pages/admin/users/students/create.tsx @@ -7,16 +7,34 @@ import InputError from '@/components/input-error'; import { PageHeader } from '@/components/page-header'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { + Combobox, + ComboboxContent, + ComboboxEmpty, + ComboboxInput, + ComboboxItem, + ComboboxList, +} from '@/components/ui/combobox'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { PhoneInput } from '@/components/ui/phone-input'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { index, store } from '@/routes/admin/users/students'; type Department = { id: number; name: string }; -type Lecturer = { id: number; lecturer_number: string; user: { profile: { full_name: string } | null } | null }; +type Lecturer = { + id: number; + lecturer_number: string; + user: { profile: { full_name: string } | null } | null; +}; type Props = { departments: Department[]; @@ -26,6 +44,7 @@ type Props = { export default function StudentCreate({ departments, lecturers }: Props) { const [gender, setGender] = useState(''); const [birthDate, setBirthDate] = useState(); + const [advisor, setAdvisor] = useState(null); return ( <> @@ -54,16 +73,31 @@ export default function StudentCreate({ departments, lecturers }: Props) {
- +
- +
@@ -76,57 +110,138 @@ export default function StudentCreate({ departments, lecturers }: Props) {
- - + +
- - + +
- - + +
- - + +
- - + +
- +
- - + +
- - - + + +
-