ErlangFormDocs v1.0.0
Konfigurasi

Field Config

Mengatur tampilan dan perilaku setiap field melalui fieldConfig.

Gunakan minimal 3 karakter.

Schema menentukan field dan validasinya. fieldConfig mengatur tampilan serta perilaku field tersebut: label, placeholder, deskripsi, jenis input, dan lainnya.

Penggunaan

Gunakan form dari useForm. Lihat persiapan awal.

example.tsx
const schema = z.object({ username: z.string(), email: z.email(), bio: z.string() });

<ErlForm
  form={form}
  schema={schema}
  fieldConfig={{
    username: {
      label: "Username",
      placeholder: "Masukkan username",
      description: "Nama yang ditampilkan.",
    },
    bio: { type: "textarea" },
  }}
/>

Properti fieldConfig

OpsiFungsi
labelTeks label input.
placeholderPetunjuk ketika input kosong.
descriptionTeks bantuan untuk field.
typeVarian input seperti text, password, atau textarea.
optionsDaftar pilihan untuk Select, masing-masing berisi label dan value.
layoutLebar field pada grid 12 kolom, misalnya { colSpan: 12, md: 6 }.
sectionNama kelompok tempat field ditampilkan.
className / wrapperClassNameClass CSS untuk input atau pembungkus field.

Opsi label, placeholder, type, dan options di atas digunakan pada input biasa. Konfigurasi Object dan Array mengikuti struktur field bersarang.

Cara membaca fieldConfig

Pada contoh di atas, schema memiliki username, email, dan bio. Konfigurasi memakai nama yang sama:

  • fieldConfig.username mengatur input username.
  • fieldConfig.email mengatur input email.
  • fieldConfig.bio.type: "textarea" membuat biography tampil sebagai textarea.

Anda cukup mengisi konfigurasi yang dibutuhkan. Field yang ada di schema tetap dirender meskipun tidak ditulis dalam fieldConfig.

Validasi dan perilaku field

Aturan validasi seperti .min(3) tetap ditulis pada schema dan diberikan ke validators TanStack Form. Mengganti label atau placeholder tidak mengubah aturan validasi.

Untuk perilaku berdasarkan nilai form, tersedia:

OpsiFungsi
showIfMenampilkan field ketika fungsi mengembalikan true.
disableIfMenonaktifkan input ketika kondisi terpenuhi.
readOnlyIfMembuat input hanya bisa dibaca.
requiredIfMengatur status required pada input.
clearOnHideMereset nilai ketika field disembunyikan.

Aturan wajib isi untuk validasi aplikasi tetap perlu didefinisikan pada schema; requiredIf tidak menggantikan aturan itu.

TypeScript

FormValues diambil dari schema dengan z.infer<typeof schema>. Memberikan tipe ini ke <ErlForm<FormValues>> membantu TypeScript memeriksa nama field dan opsi konfigurasinya, termasuk untuk Object dan Array.

Untuk mengelompokkan beberapa field, lanjutkan ke Field Section.

Referensi opsi 1.0.0

Opsi inputBentuk / catatan
labelReactNode atau callback nilai scope ke ReactNode
placeholder / descriptionString atau callback sinkron
optionsArray label/value string atau callback; mengaktifkan select
typetext, password, textarea, number, checkbox, radio, email, url, date, time, datetime-local, file, range, color
min / maxNumber atau string; diterapkan renderer angka dan string native
stepNumber atau any; renderer angka dan string native
accept / multipleAda pada tipe; belum diterapkan renderer file
componentKomponen input per field; prioritas di atas registry
labelClassName / descriptionClassName / errorClassNameClass elemen masing-masing
showIf / clearOnHideVisibilitas dan reset nilai saat tersembunyi
disableIf / readOnlyIf / requiredIfCallback boolean untuk state input
layout / sectionGrid dan pengelompokan root

Daftar type adalah opsi TypeScript, bukan jaminan semua schema dapat diubah menjadi semua input. Renderer utamanya ditentukan oleh schema: number selalu input number, boolean checkbox, tanggal/file memakai metadata khusus. Password/textarea/radio/color/range diterapkan pada jalur string yang sesuai. Lihat input khusus.

Object memakai konfigurasi child langsung dan component opsional. Array menerima child langsung untuk item object, item untuk konfigurasi elemen eksplisit, array untuk tombol/batas, serta inputType/options untuk checkbox group. Tuple memakai indeks posisi. Container tidak otomatis menerima seluruh opsi input seperti label dan placeholder.

import type { FieldConfig } from "erlangform";

const config = {
  profile: { firstName: { label: "Nama depan" } },
  contacts: {
    array: { minItems: 1, maxItems: 5, reorderable: true },
    item: { phone: { label: "Telepon" } },
  },
} satisfies FieldConfig<FormValues>;

Contoh konfigurasi ini memerlukan FormValues dengan profile.firstName dan contacts berupa array object berisi phone. Definisikan schema/nilai awal mengikuti Object dan Array. Jika item ditulis, isinya menggantikan fallback child pada parent. Konfigurasi child flat lama tetap didukung sebagai fallback, tetapi pola bersarang menghindari benturan nama.

Pelajari scope callback, layout, serta komponen kustom.

Di halaman ini