import { Button } from '@/components/ui/button'; import { Calendar } from '@/components/ui/calendar'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; import { useForm } from '@inertiajs/react'; import AppLayout from '@/layouts/app-layout'; import { Head } from '@inertiajs/react'; import { type BreadcrumbItem } from '@/types'; import InputError from '@/components/input-error'; import { format } from 'date-fns'; import { CalendarIcon } from 'lucide-react'; import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { cn } from '@/lib/utils'; import { Textarea } from '@/components/ui/textarea'; interface EmployeeFormProps { mode: 'create' | 'edit'; employee?: { id?: string; employee_id: string; name: string; email: string; gender: string; nik?: string; birth_date: string; birth_place?: string; address?: string; phone_number?: string; specialization?: string; license_number?: string; join_date: string; resign_date?: string; is_active: boolean; }; } const toLocalISOString = (date: Date) => { const offset = date.getTimezoneOffset(); const localDate = new Date(date.getTime() - (offset * 60 * 1000)); return localDate.toISOString().split('T')[0]; }; const breadcrumbs: BreadcrumbItem[] = [ { title: 'Dashboard', href: '/dashboard' }, { title: 'Employees', href: '/employees' }, { title: 'Form', href: '#' }, ]; export default function EmployeeForm({ mode, employee }: EmployeeFormProps) { const { data, setData, post, put, processing, errors, reset } = useForm({ // User fields name: employee?.name || '', email: employee?.email || '', password: '', // Employee fields employee_id: employee?.employee_id || '', gender: employee?.gender || 'laki-laki', nik: employee?.nik || '', birth_date: employee?.birth_date || '', birth_place: employee?.birth_place || '', address: employee?.address || '', phone_number: employee?.phone_number || '', specialization: employee?.specialization || '', license_number: employee?.license_number || '', join_date: employee?.join_date || '', resign_date: employee?.resign_date || '', is_active: employee?.is_active ?? true, }); const onSubmit = (e: React.FormEvent) => { e.preventDefault(); if (mode === 'create') { post(route('employees.store'), { onSuccess: () => reset(), }); } else { put(route('employees.update', employee?.id), { preserveScroll: true, }); } }; return (

{mode === 'create' ? 'Create New Employee' : 'Edit Employee'}

{mode === 'edit' && ( ID. Pegawai {data.employee_id} )}
{/* User Information Section */}
setData('name', e.target.value)} placeholder="Joko Susanto" />
setData('email', e.target.value)} placeholder="joko_susanto@example.com" />
{mode === 'create' && (
setData('password', e.target.value)} placeholder="••••••••" />
)}
setData('gender', value)} className="flex gap-4" >
setData('nik', e.target.value)} placeholder="16-digit NIK" />
date && setData('birth_date', toLocalISOString(date))} initialFocus showOutsideDays={false} />
setData('birth_place', e.target.value)} placeholder="Jakarta" />
setData('phone_number', e.target.value)} placeholder="08123456789" />
setData('specialization', e.target.value)} placeholder="Dokter Spesialis Saraf (Sp.S)" />
setData('license_number', e.target.value)} placeholder="1028305" /> Masukkan 7 digit terakhir nomor STR