@akhatmirzo/ui

Select

Qidiruvsiz ro'yxatdan bitta qiymat tanlash: guruhlar, ikonkalar va forma bilan ishlash.

Buyurtma shu viloyatga yetkaziladi

Qiymat: —

Import

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

Qachon ishlatish

  • 5–15 ta variantdan bittasini tanlash uchun — viloyat, to'lov usuli, holat. Variantlar 3 ta yoki undan kam bo'lsa, RadioGroup qulayroq: hammasi birdan ko'rinadi.
  • Qidiruv kerak bo'lsa — Combobox. Select ataylab qidiruvsiz qilingan; shaharlar yoki mahsulotlar kabi uzun ro'yxatlar uchun Combobox oling.
  • Bir nechta qiymat tanlash uchun ham Combobox (multiple) kerak — Select faqat bitta qiymat qaytaradi.
  • Har doim nom bering: Field ichiga joylang yoki aria-label yozing.
  • Buyruqlar ro'yxati emas. "Tahrirlash", "O'chirish" kabi amallar uchun DropdownMenu bor.

Guruhlar va ajratgich

Select.Group variantlarni sarlavha ostida jamlaydi, Select.Separator guruhlar orasiga chiziq tortadi. Tanlangan variant yonida ✓ belgisi turadi.

<Select defaultValue="fer">
  <Select.Item value="tsh">Toshkent</Select.Item>
  <Select.Group label="Vodiy">
    <Select.Item value="and">Andijon</Select.Item>
    <Select.Item value="fer">Farg'ona</Select.Item>
  </Select.Group>
  <Select.Separator />
  <Select.Group label="Janub">
    <Select.Item value="qash">Qashqadaryo</Select.Item>
  </Select.Group>
</Select>

O'lchamlar

Uch o'lcham — 32, 40 va 48px. Balandliklar Input va Button bilan bir xil, shuning uchun bir qatorda tekis turadi. Panel kengligi trigger kengligiga teng; ro'yxat uzun bo'lsa, 320px dan keyin ichida scroll paydo bo'ladi.

Holatlar

Field ichida disabled, error va required o'zi ulanadi — Select ga qayta yozish shart emas. Field siz ishlatsangiz, invalid va disabled ni to'g'ridan-to'g'ri bering. Bitta variantni o'chirish uchun Select.Item ga disabled qo'ying — klaviatura uni o'tkazib yuboradi.

To'lov usulini tanlang

Ikonkali variantlar

Select.Item ning icon prop'i matndan oldin 16px joy ajratadi. Holat ranglari kabi qisqa belgilar uchun qulay.

Forma bilan

name berilsa, Select yashirin native <select> chizadi va qiymat FormData bilan birga yuboriladi. Bo'sh qiymatni o'zingiz tekshirib, xabarni Field ning error prop'i orqali ko'rsating.

FormData: —

Dialog ichida

Select ni Dialog yoki Drawer ichida bemalol ishlatasiz: panel modal qatlamida ekanini o'zi aniqlaydi va z-index'ini ko'taradi, shuning uchun ro'yxat oyna ustida ochiladi. Hech narsa sozlash shart emas — tayyor misol Dialog sahifasidagi "Dialog ichida Select va Combobox" bo'limida.

Props

Select

className triggerga, contentClassName ochiladigan panelga tushadi. Qolgan <button> atributlari (id, aria-*, data-*, onBlur ...) va ref ham triggerga uzatiladi.

PropTipStandartTavsif
valuestring—Tanlangan qiymat (boshqariladigan rejim)
defaultValuestring—Boshlang'ich qiymat
onValueChange(value: string) => void—Foydalanuvchi variant tanlaganda
openboolean—Panel ochiqmi (boshqariladigan rejim)
defaultOpenboolean—Boshlang'ich holatda ochiq
onOpenChange(open: boolean) => void—Panel ochilganda yoki yopilganda
placeholderReactNode'Tanlang'Qiymat tanlanmaganda ko'rinadigan matn
size'sm' | 'md' | 'lg''md'Balandlik: 32 / 40 / 48px
invalidboolean—Xato holati. Field ichida error bo'lsa — avtomatik
disabledboolean—Select'ni butunlay o'chiradi
requiredboolean—Majburiy maydon (aria-required)
namestring—Forma uchun yashirin native select nomi
autoCompletestring—Yashirin native select uchun
dir'ltr' | 'rtl'—Yozuv yo'nalishi
contentClassNamestring—Ochiladigan panel klassi
containerHTMLElement | null—Portal konteyneri (standart — document.body)
childrenmajburiyReactNode—Select.Item, Select.Group va Select.Separator

Select.Item

PropTipStandartTavsif
valuemajburiystring—Variant qiymati
iconReactNode—Chapdagi ikonka (16px)
disabledboolean—Variantni o'chiradi
textValuestring—Typeahead uchun matn (children oddiy matn bo'lmasa)

Select.Group

PropTipStandartTavsif
labelReactNode—Guruh sarlavhasi
childrenReactNode—Guruhdagi Select.Item'lar

Select.Separator — guruhlar orasidagi chiziq, faqat className qabul qiladi.

Data atributlari

AtributQayerdaQiymat
data-sizetriggersm · md · lg
data-statetriggeropen · closed
data-placeholdertriggerqiymat tanlanmaganda mavjud
data-invalidtriggerxato holatida mavjud
data-disabledtriggero'chirilganda mavjud
data-statevariantchecked · unchecked
data-highlightedvariantklaviatura yoki sichqoncha ustida turganda

Klaviatura

TugmaHarakat
Enter / Space / ↓ / ↑Trigger fokusda bo'lsa — panelni ochadi
↓ / ↑Variantlar bo'ylab yurish (o'chirilganlari o'tkaziladi)
Home / EndBirinchi / oxirgi variant
HarfShu harf bilan boshlanadigan variantga sakrash
Enter / SpaceTanlash va yopish
EscQiymatni o'zgartirmay yopish, fokus triggerga qaytadi

Accessibility

  • Rollar. Trigger — role="combobox" (aria-expanded bilan), panel — listbox, har bir variant — option (aria-selected). Asosida Radix Select turadi.
  • Field bilan bog'lanish. Field ichida label, description va error matnlari triggerga aria-labelledby / aria-describedby orqali ulanadi; xatoda aria-invalid="true", required da aria-required="true" qo'yiladi.
  • Fokus. Panel ochilganda fokus tanlangan variantga o'tadi, yopilgach triggerga qaytadi.
  • Nomsiz qoldirmang. Field ishlatmasangiz, aria-label yozing (masalan, aria-label="Valyuta").
  • Belgilar. Chevron, ✓ va icon ikonkalari aria-hidden — ekran o'quvchi faqat variant matnini o'qiydi.

Sahifada