Kondisi dan nilai dinamis
Visibilitas, state input, pilihan dinamis, dan scope callback.
Penggunaan
Gunakan form dari useForm. Lihat persiapan awal.
const schema = z.object({ business: z.boolean(), company: z.string() });
<ErlForm
form={form}
schema={schema}
fieldConfig={{
company: {
showIf: (values) => values.business,
requiredIf: (values) => values.business,
clearOnHide: true,
},
}}
/>showIf, disableIf, readOnlyIf, dan requiredIf menerima nilai pada scope tempat field berada. label, placeholder, description, dan options dapat berupa nilai statis atau callback sinkron.
Gunakan config sebagai fieldConfig. Nilai awal contoh ini: { business: false, company: "", address: { country: "", city: "" } }.
Scope callback
| Posisi | Argumen |
|---|---|
| Field root | Seluruh nilai form |
| Child object | Object induk langsung |
| Child object dalam array | Object item tersebut |
| Posisi tuple | Tuple induk |
| Item primitif melalui item | Array induk |
Gunakan konfigurasi bersarang agar child dengan nama sama dapat diatur terpisah. Bentuk flat lama masih menjadi fallback. Untuk array primitif, gunakan item secara eksplisit agar scope konfigurasi konsisten.
Menyembunyikan field
Secara default nilai tetap disimpan. clearOnHide mereset string menjadi string kosong, angka/Date/datetime/file menjadi undefined, boolean menjadi false, array/tuple menjadi array kosong, dan object menjadi object kosong. Jenis lain memakai fallback string kosong; ini bukan pemanggilan schema.parse.
Field tersembunyi tetap termasuk validasi schema. requiredIf hanya mengatur state UI dan atribut input; tulis aturan kondisional melalui superRefine atau discriminated union. Jangan mewajibkan field yang dikosongkan tanpa kondisi yang sesuai.
Pilihan dinamis
options: (values) => [...] menghasilkan pilihan select sesuai nilai terbaru. Nilai yang tidak lagi ada dalam pilihan dikosongkan menjadi string kosong. Ambil data async di aplikasi terlebih dahulu; callback options tidak menerima Promise.