fix date picker on all filter and field using date
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
import { useState } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { submitVerificationAction } from "@/features/organizer/actions";
|
||||
import { DateField } from "@/components/shared/date-picker";
|
||||
|
||||
type Initial = {
|
||||
fullName: string;
|
||||
@@ -21,23 +22,31 @@ type UploadKind = "ktp" | "liveness";
|
||||
const ACCEPT_MIME = "image/jpeg,image/png,image/webp";
|
||||
const MAX_BYTES = 5 * 1024 * 1024;
|
||||
|
||||
function toYmd(d: Date): string {
|
||||
const y = d.getUTCFullYear();
|
||||
const m = String(d.getUTCMonth() + 1).padStart(2, "0");
|
||||
const day = String(d.getUTCDate()).padStart(2, "0");
|
||||
return `${y}-${m}-${day}`;
|
||||
}
|
||||
|
||||
export function VerifyForm({ initial }: { initial: Initial }) {
|
||||
const router = useRouter();
|
||||
const [error, setError] = useState("");
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [ktpKey, setKtpKey] = useState(initial?.ktpImageKey ?? "");
|
||||
const [livenessKey, setLivenessKey] = useState(initial?.livenessKey ?? "");
|
||||
// `birthDate` dari DB tersimpan sebagai tengah malam UTC — baca pakai getter
|
||||
// UTC supaya hari kalender yang tampil di picker tidak bergeser.
|
||||
const [birthDate, setBirthDate] = useState<Date | null>(
|
||||
initial
|
||||
? new Date(
|
||||
initial.birthDate.getUTCFullYear(),
|
||||
initial.birthDate.getUTCMonth(),
|
||||
initial.birthDate.getUTCDate()
|
||||
)
|
||||
: null
|
||||
);
|
||||
|
||||
async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
|
||||
e.preventDefault();
|
||||
setError("");
|
||||
if (!birthDate) {
|
||||
setError("Tanggal lahir wajib diisi");
|
||||
return;
|
||||
}
|
||||
if (!ktpKey || !livenessKey) {
|
||||
setError("Foto KTP dan foto memegang kertas SETRIP wajib diunggah");
|
||||
return;
|
||||
@@ -102,15 +111,21 @@ export function VerifyForm({ initial }: { initial: Initial }) {
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<label className="mb-1.5 block text-sm font-semibold text-neutral-700">
|
||||
<label
|
||||
htmlFor="birthDate"
|
||||
className="mb-1.5 block text-sm font-semibold text-neutral-700"
|
||||
>
|
||||
Tanggal Lahir
|
||||
</label>
|
||||
<input
|
||||
<DateField
|
||||
id="birthDate"
|
||||
name="birthDate"
|
||||
type="date"
|
||||
value={birthDate}
|
||||
onChange={setBirthDate}
|
||||
maxDate={new Date()}
|
||||
withMonthYearDropdown
|
||||
required
|
||||
defaultValue={initial ? toYmd(new Date(initial.birthDate)) : ""}
|
||||
className={inputCls}
|
||||
placeholder="Pilih tanggal lahir"
|
||||
/>
|
||||
</div>
|
||||
<div className="sm:col-span-2">
|
||||
|
||||
Reference in New Issue
Block a user