ErlangFormDocs v1.0.0
Konfigurasi

Kondisi dan nilai dinamis

Visibilitas, state input, pilihan dinamis, dan scope callback.

Catatan bisa diedit.

Penggunaan

Gunakan form dari useForm. Lihat persiapan awal.

example.tsx
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

PosisiArgumen
Field rootSeluruh nilai form
Child objectObject induk langsung
Child object dalam arrayObject item tersebut
Posisi tupleTuple induk
Item primitif melalui itemArray 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.

Di halaman ini