Formulir & Masukan

FormField (Pembungkus Bidang Isian)

Wadah standar untuk mengelompokkan label, teks petunjuk (hint), kolom input, dan pesan validasi kesalahan.

Komponen FormField (.mjl-form-field) adalah fondasi utama seluruh formulir pelayanan publik di Kabupaten Majalengka. Komponen ini memastikan setiap kolom masukan memiliki keterkaitan aksesibel yang benar antara label, petunjuk, dan pesan error sesuai standar WCAG 2.1 Level AA.


1. Pratinjau FormField Lengkap

Pratinjau FormField

Pastikan 16 digit NIK terdaftar di Disdukcapil Majalengka.


2. Struktur Anatomi Komponen

  1. Label (.mjl-label): Menjelaskan informasi apa yang harus diisi. Wajib memiliki atribut for="id-input".
  2. Tanda Wajib (.mjl-label__required): Bintang merah * dengan atribut aria-hidden="true" (pembaca layar cukup membaca teks utama).
  3. Input (.mjl-input): Kolom masukan tempat pengguna mengetik data.
  4. Hint Text (.mjl-help-text): Teks penjelasan pembantu yang dihubungkan dengan atribut aria-describedby.
  5. Error Message (.mjl-error): Pesan kesalahan yang jelas, solutif, dan menggunakan role="alert" sehingga langsung dibacakan screen reader saat validasi gagal.

3. Integrasi Vue 3 (@majalengka/vue)

Komponen <MjlFormField> secara otomatis mengaitkan atribut id, for, aria-describedby, dan aria-invalid:

<script setup lang="ts">
import { MjlFormField, MjlInput } from '@majalengka/vue';
import { ref } from 'vue';

const nik = ref('');
const nikError = ref('');

function validateNik() {
  if (nik.value.length !== 16) {
    nikError.value = 'NIK harus tepat berjumlah 16 digit angka.';
  } else {
    nikError.value = '';
  }
}
</script>

<template>
  <MjlFormField
    label="Nomor Induk Kependudukan (NIK)"
    required
    hint="Contoh: 3210123456780001"
    :error="nikError"
  >
    <MjlInput
      v-model="nik"
      placeholder="Masukkan 16 digit NIK"
      maxlength="16"
      @blur="validateNik"
    />
  </MjlFormField>
</template>

Penggunaan di Berbagai Teknologi

Salin contoh sesuai teknologi proyek Anda. Semua versi memakai class dari @majalengka/css. Komponen siap pakai tersedia di @majalengka/vue; untuk React, Angular, Laravel, dan PHP, contoh di bawah sudah berupa pembungkus kecil yang bisa langsung disalin ke proyek.

<div class="mjl-form-field">
  <label class="mjl-label" for="nik">
    NIK <span class="mjl-label__required" aria-hidden="true">*</span>
  </label>
  <input id="nik" name="nik" class="mjl-input mjl-input--error" inputmode="numeric" required
         aria-invalid="true" aria-describedby="nik-error">
  <p id="nik-error" class="mjl-error-text" role="alert">NIK harus 16 digit angka.</p>
</div>

4. Kaidah Anti-Kaku pada Pesan Error

Hindari bahasa birokratis kaku yang membingungkan warga:

❌ Hindari (Birokratis / Kaku)✅ Gunakan (Jelas & Solutif)
"Format isian parameter input tidak valid.""Format email salah. Contoh yang benar: [email protected]"
"Data wajib diisi sesuai regulasi perundang-undangan.""Mohon masukkan nama lengkap sesuai KTP."
"Ukuran berkas melebihi kuota ambang batas.""Ukuran foto maksimal 2MB. Silakan kompres foto Anda terlebih dahulu."
Copyright © 2026