@akhatmirzo/ui

Field

Forma maydonining label, izoh va xato matnini o'raydi va ARIA atributlarini avtomatik ulaydi.

Tasdiqlash kodi SMS orqali yuboriladi

+998

Email manzil noto'g'ri

Import

import { Field } from '@akhatmirzo/ui';

Qachon ishlatish

  • Har bir forma maydoni uchun — Input, Textarea, Select, Checkbox, RadioGroup, Switch va boshqalar. id, htmlFor, aria-describedby, aria-invalid, aria-required ni qo'lda yozish shart emas.
  • Xatoni error ga bering, alohida <p> ga emas — shunda boshqaruv elementi ham qizil bo'ladi, ekran o'quvchi ham xatoni o'qiydi.
  • description — qisqa yo'l-yo'riq uchun: format, cheklov, nima uchun kerakligi. Uzun matnni sahifaga chiqaring.
  • Bitta Field — bitta boshqaruv elementi. Ikki maydonni bitta label ostiga qo'ymang.

Validatsiya

error bo'sh bo'lmasa, maydon xato holatiga o'tadi: boshqaruv elementi aria-invalid oladi, chegarasi qizarib, ostida ikonka bilan xato matni chiqadi. Xatolar aria-live hududida — paydo bo'lganda ekran o'quvchi e'lon qiladi. Formani bo'sh holda yuborib ko'ring.

Gorizontal joylashuv

orientation="horizontal" — label chapda (160px), boshqaruv elementi o'ngda. Sozlamalar sahifalari va keng formalar uchun.

Chekda ko'rinadi

O'chirilgan holat

Field dagi disabled ichidagi boshqaruv elementini ham o'chiradi, label esa xiralashadi.

Hudud administrator tomonidan belgilanadi

O'z boshqaruv elementingiz (useFieldControl)

Kutubxonadagi barcha forma komponentlari useFieldControl hook'i orqali Field ga ulanadi. Siz ham o'z elementingizni (native <select>, uchinchi tomon kutubxonasi) shu hook bilan ulaysiz: controlProps ni elementga yoyasiz — qolgani avtomatik.

Shaharni tanlang

useFieldControl Field tashqarisida ham ishlaydi — u holda o'zining id sini yaratadi.

Props

Field qolgan barcha <div> atributlarini qabul qiladi.

PropTipStandartTavsif
childrenmajburiyReactNode—Boshqaruv elementi (Input, Select, Checkbox ...)
labelReactNode—Maydon nomi; <label htmlFor> bilan elementga bog'lanadi
descriptionReactNode—Label ostidagi yordamchi matn (aria-describedby)
errorReactNode—Bo'lsa — element invalid bo'ladi, matn qizil ikonka bilan chiqadi
requiredbooleanfalseLabel yonida *, elementga aria-required
disabledbooleanfalseIchidagi boshqaruv elementini ham o'chiradi
orientation'vertical' | 'horizontal''vertical'Label tepada yoki chapda

useFieldControl

function useFieldControl(options?: FieldControlOptions): FieldControlResult;

options — elementning o'z qiymatlari; ular Field dan kelganlari bilan birlashtiriladi (invalid, required, disabled — "yoki" mantig'ida).

PropTipStandartTavsif
idstring—O'z id'si — berilsa, label shunga ulanadi
invalidboolean—Xato holati
requiredboolean—Majburiy maydon
disabledboolean—O'chirilgan
aria-describedbystring—Qo'shimcha izoh id'lari — Field'nikiga qo'shiladi
aria-invalidboolean | 'true' | 'false' | 'grammar' | 'spelling'—true yoki 'true' — invalid bilan bir xil

Qaytaradigan qiymat:

PropTipStandartTavsif
idstring—Elementga beriladigan id
labelIdstring | undefined—Field label'ining id'si — htmlFor ishlamaydigan elementlar uchun aria-labelledby
invalidboolean—Yakuniy xato holati
requiredboolean—Yakuniy majburiylik
disabledboolean—Yakuniy o'chirilganlik
controlProps{ id; 'aria-describedby'?; 'aria-invalid'?: true; 'aria-required'?: true }—Elementga to'g'ridan-to'g'ri yoyiladigan atributlar

Data atributlari

AtributQiymat
data-slotfield
data-orientationvertical · horizontal
data-invaliderror bo'lganda mavjud
data-disableddisabled bo'lganda mavjud

Accessibility

  • Label bog'lanadi. <label htmlFor> boshqaruv elementining id siga ulanadi; elementga o'z id ingizni bersangiz, label shunga moslashadi.
  • Izoh va xato aria-describedby orqali o'qiladi — fokus maydonga kelganda ekran o'quvchi label'dan keyin ularni ham aytadi.
  • Xato e'loni. Xato matni doim DOM'da turadigan aria-live="polite" hudud ichida — birinchi paydo bo'lgan xato ham e'lon qilinadi.
  • Majburiy maydon. * belgisi aria-hidden, o'rniga elementga aria-required qo'yiladi.
  • RadioGroup kabi <div> elementlar label bilan htmlFor orqali bog'lanmaydi — ular labelId orqali aria-labelledby oladi (avtomatik).

Sahifada